
int sqlite3VdbeRecordCompareWithSkip(int nKey1,void *pKey1,UnpackedRecord *pPKey2,int bSkip)

{
  char cVar1;
  byte bVar2;
  ushort uVar3;
  undefined *puVar4;
  undefined *puVar5;
  int iVar6;
  code *pcVar7;
  uint uVar8;
  char *pcVar9;
  byte bVar10;
  undefined4 uVar11;
  int iVar12;
  byte *pbVar13;
  void *pKey1_00;
  Mem *pMVar14;
  Mem *pMVar15;
  KeyInfo *pKVar16;
  Mem *pMVar17;
  uint uVar18;
  uint uVar19;
  Mem *pMem2;
  double dVar20;
  double dVar21;
  u32 szHdr1;
  u32 serial_type;
  Mem mem1;
  
  puVar5 = PTR___stack_chk_guard_000f5568;
  iVar6 = *(int *)PTR___stack_chk_guard_000f5568;
  pMem2 = pPKey2->aMem;
  pMVar14 = (Mem *)pPKey2;
  if (bSkip == 0) {
                    /* WARNING: Load size is inaccurate */
    bVar2 = *pKey1;
    if ((char)bVar2 < '\0') {
      uVar18 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(pKey1,&szHdr1);
      uVar19 = szHdr1;
    }
    else {
      uVar18 = 1;
      uVar19 = (uint)bVar2;
      szHdr1 = (uint)bVar2;
    }
  }
  else {
    uVar18 = 2;
    if ((char)*(byte *)((int)pKey1 + 1) < '\0') {
      iVar12 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))((int)pKey1 + 1,&mem1);
      uVar18 = iVar12 + 1;
                    /* WARNING: Load size is inaccurate */
      szHdr1 = (u32)*pKey1;
      uVar11 = mem1.u.nZero;
      if (mem1.u.zPType < (char *)0x80) goto LAB_0004fbd0;
      uVar19 = (mem1.u.nZero - 0xcU >> 1) + szHdr1;
    }
    else {
                    /* WARNING: Load size is inaccurate */
      szHdr1 = (u32)*pKey1;
      uVar11 = (int)(char *)(uint)*(byte *)((int)pKey1 + 1);
LAB_0004fbd0:
      uVar19 = *(byte *)((int)uVar11 + (int)(PTR_yy_shift_ofst_376__000f52d4 + 0x2208)) + szHdr1;
    }
    pMem2 = pMem2 + 1;
  }
  puVar4 = PTR_yy_shift_ofst_376__000f52d4;
  if (uVar19 <= (uint)nKey1) {
    dVar21 = *(double *)(PTR_yy_shift_ofst_376__000f52d4 + 0x26c8);
    dVar20 = *(double *)(PTR_yy_shift_ofst_376__000f52d4 + 0x26d0);
    pcVar7 = (code *)(PTR_LAB_000f52ec + -0x46ac);
    do {
      uVar3 = pMem2->flags;
      uVar8 = (uint)uVar3;
      pbVar13 = (byte *)((int)pKey1 + uVar18);
      pMVar14 = (Mem *)(uVar8 & 0x24);
      serial_type = (u32)*pbVar13;
      if ((uVar3 & 0x24) != 0) {
        if (9 < serial_type) goto LAB_0005018c;
        if (serial_type == 0) goto LAB_00050270;
        if (serial_type != 7) {
          if (serial_type < 7) {
                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */
                    /* WARNING: Treating indirect jump as call */
            iVar6 = (*(code *)(&_gp + *(int *)(PTR_yy_shift_ofst_376__000f52d4 +
                                              serial_type * 4 + -0x31cc)))();
            return iVar6;
          }
          iVar6 = FUN_0004fce4((int)pKey1 + uVar19,serial_type - 8);
          return iVar6;
        }
        (*(code *)(PTR_LAB_000f52c8 + 0x56a8))((int)pKey1 + uVar19,7,&mem1);
        pMVar14 = (Mem *)mem1.u.nZero;
        if ((double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_) < *(double *)(puVar4 + 0x26c8)) {
          pKey1_00 = (void *)0xffffffff;
          goto LAB_0004fecc;
        }
        if ((double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_) < *(double *)(puVar4 + 0x26d0)) {
          iVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))
                             ((pMem2->u).nZero,*(undefined4 *)((int)&pMem2->u + 4));
          pKey1_00 = (void *)-iVar12;
          goto LAB_0004fec4;
        }
        pKey1_00 = (void *)0x1;
        pKVar16 = pPKey2->pKeyInfo;
LAB_0004fed0:
        bVar2 = pKVar16->aSortFlags[bSkip];
        if (bVar2 == 0) goto LAB_0004fd90;
        if ((bVar2 & 2) != 0) {
          if (serial_type == 0) {
            bVar10 = 1;
          }
          else {
            bVar10 = (byte)pMem2->flags & 1;
          }
          if ((bVar2 & 1) == bVar10) goto LAB_0004fd90;
        }
        pKey1_00 = (void *)-(int)pKey1_00;
        goto LAB_0004fd90;
      }
      pMVar14 = (Mem *)(uVar8 & 8);
      if ((uVar3 & 8) != 0) {
        if (9 < serial_type) {
LAB_0005018c:
          pKVar16 = pPKey2->pKeyInfo;
          pKey1_00 = (void *)0x1;
          goto LAB_0004fed0;
        }
        if (serial_type != 0) {
          pMVar14 = &mem1;
          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))((int)pKey1 + uVar19);
          if (serial_type == 7) {
            if ((pMem2->u).r <= (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) {
              if ((pMem2->u).r < (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) goto LAB_0005018c;
              if (bSkip + 1U != (uint)pPKey2->nField) goto LAB_0004ff38;
              goto LAB_0004fd84;
            }
          }
          else {
            pMVar14 = (Mem *)(pMem2->u).pDef;
            if ((pMem2->u).r < dVar21) goto LAB_0005018c;
            if ((pMem2->u).r < dVar20) {
              pKey1_00 = (void *)(*(code *)(PTR_LAB_000f52ec + -0x1598))
                                           (mem1.u.nZero,mem1.u.i._4_4_);
              goto LAB_0004fec4;
            }
          }
        }
LAB_00050270:
        pKVar16 = pPKey2->pKeyInfo;
        pKey1_00 = (void *)0xffffffff;
        goto LAB_0004fed0;
      }
      pMVar14 = (Mem *)(uVar8 & 2);
      if ((uVar3 & 2) != 0) {
        if (0x7f < serial_type) {
          (*pcVar7)(pbVar13,&serial_type);
        }
        if (serial_type < 0xc) goto LAB_00050270;
        if ((serial_type & 1) == 0) goto LAB_0005018c;
        pMVar15 = (Mem *)(serial_type - 0xc >> 1);
        mem1.n = (int)pMVar15;
        if ((int)&pMVar15->u + uVar19 <= (uint)nKey1) {
          pKVar16 = pPKey2->pKeyInfo;
          if (bSkip < (int)(uint)pKVar16->nAllField) {
            pMVar14 = (Mem *)pKVar16->aColl[bSkip];
            if (pMVar14 == (Mem *)0x0) {
              pMVar17 = (Mem *)pMem2->n;
              pMVar14 = pMVar17;
              if ((int)pMVar15 <= (int)pMVar17) {
                pMVar14 = pMVar15;
              }
              pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)
                                           ((char *)((int)pKey1 + uVar19),pMem2->z);
              if (pKey1_00 != (void *)0x0) goto LAB_0004fed0;
              pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);
            }
            else {
              mem1.enc = pKVar16->enc;
              mem1.db = pKVar16->db;
              mem1.flags = 2;
              mem1.z = (char *)((int)pKey1 + uVar19);
              pKey1_00 = (void *)vdbeCompareMemString
                                           (&mem1,pMem2,(CollSeq *)pMVar14,&pPKey2->errCode);
            }
            goto LAB_0004fec4;
          }
        }
        iVar12 = 0x14194;
        goto LAB_0004fbfc;
      }
      if ((uVar3 & 0x10) == 0) {
        pKey1_00 = (void *)(uint)(serial_type != 0);
      }
      else {
        if (0x7f < serial_type) {
          (*pcVar7)(pbVar13,&serial_type);
        }
        if ((serial_type < 0xc) || ((serial_type & 1) != 0)) goto LAB_00050270;
        pMVar15 = (Mem *)(serial_type - 0xc >> 1);
        if ((uint)nKey1 < (int)&pMVar15->u + uVar19) {
          iVar12 = 0x141b2;
          goto LAB_0004fbfc;
        }
        if ((pMem2->flags & 0x4000) == 0) {
          pMVar17 = (Mem *)pMem2->n;
          pMVar14 = pMVar15;
          if ((int)pMVar17 <= (int)pMVar15) {
            pMVar14 = pMVar17;
          }
          pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)((int)pKey1 + uVar19,pMem2->z);
          if (pKey1_00 != (void *)0x0) goto LAB_0004fecc;
          pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);
        }
        else {
          if (pMVar15 != (Mem *)0x0) {
            if (*(char *)((int)pKey1 + uVar19) != '\0') goto LAB_0005018c;
            pcVar9 = (char *)((int)pKey1 + uVar19 + 1);
            while ((char *)((int)pKey1 + uVar19) + (int)pMVar15 != pcVar9) {
              cVar1 = *pcVar9;
              pcVar9 = pcVar9 + 1;
              if (cVar1 != '\0') goto LAB_0005018c;
            }
          }
          pKey1_00 = (void *)((int)pMVar15 - (pMem2->u).nZero);
        }
      }
LAB_0004fec4:
      if (pKey1_00 != (void *)0x0) {
LAB_0004fecc:
        pKVar16 = pPKey2->pKeyInfo;
        goto LAB_0004fed0;
      }
      if ((uint)pPKey2->nField == bSkip + 1U) goto LAB_0004fd84;
      if (serial_type < 0x80) {
LAB_0004ff38:
        uVar8 = (uint)(byte)puVar4[serial_type + 0x2208];
      }
      else {
        uVar8 = serial_type - 0xc >> 1;
      }
      bSkip = bSkip + 1;
      uVar19 = uVar19 + uVar8;
      iVar12 = 1;
      uVar8 = serial_type;
      while (uVar8 = uVar8 >> 7, uVar8 != 0) {
        iVar12 = iVar12 + 1;
      }
      uVar18 = uVar18 + iVar12;
      if ((szHdr1 <= uVar18) || (pMem2 = pMem2 + 1, (uint)nKey1 < uVar19)) goto LAB_0004fd84;
    } while( true );
  }
  iVar12 = 0x14147;
LAB_0004fbfc:
  iVar12 = sqlite3CorruptError(iVar12);
  pKey1_00 = (void *)0x0;
  pPKey2->errCode = (u8)iVar12;
LAB_0004fd90:
  if (iVar6 == *(int *)puVar5) {
    return (int)pKey1_00;
  }
  (*(code *)PTR___stack_chk_fail_000f5540)();
  iVar6 = sqlite3VdbeRecordCompareWithSkip(iVar6,pKey1_00,(UnpackedRecord *)pMVar14,0);
  return iVar6;
LAB_0004fd84:
  pKey1_00 = (void *)(int)pPKey2->default_rc;
  pPKey2->eqSeen = '\x01';
  goto LAB_0004fd90;
}



uint FUN_0004fb4c(uint param_1,byte *param_2,int *param_3,int param_4)

{
  byte bVar1;
  double dVar2;
  undefined *puVar3;
  undefined *puVar4;
  undefined1 uVar6;
  code *pcVar5;
  uint uVar7;
  byte bVar8;
  undefined4 uVar9;
  byte *pbVar10;
  int iVar11;
  uint uVar12;
  int iVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  double *pdVar17;
  double dVar18;
  double dVar19;
  uint local_70;
  uint local_6c;
  uint local_68;
  undefined4 uStack_64;
  undefined2 local_60;
  undefined1 local_5e;
  uint local_5c;
  byte *local_58;
  undefined4 local_48;
  int local_3c;
  
  puVar4 = PTR___stack_chk_guard_000f5568;
  local_3c = *(int *)PTR___stack_chk_guard_000f5568;
  pdVar17 = (double *)param_3[1];
  if (param_4 == 0) {
    bVar1 = *param_2;
    if ((char)bVar1 < '\0') {
      uVar15 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70);
      uVar16 = local_70;
    }
    else {
      uVar15 = 1;
      uVar16 = (uint)bVar1;
      local_70 = (uint)bVar1;
    }
  }
  else {
    uVar15 = 2;
    if ((char)param_2[1] < '\0') {
      iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68);
      uVar15 = iVar11 + 1;
      local_70 = (uint)*param_2;
      uVar16 = local_68;
      if (local_68 < 0x80) goto LAB_0004fbd0;
      uVar16 = (local_68 - 0xc >> 1) + local_70;
    }
    else {
      local_70 = (uint)*param_2;
      uVar16 = (uint)param_2[1];
LAB_0004fbd0:
      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;
    }
    pdVar17 = pdVar17 + 5;
  }
  puVar3 = PTR_DAT_000f52d4;
  if (uVar16 <= param_1) {
    dVar19 = *(double *)(PTR_DAT_000f52d4 + 0x26c8);
    dVar18 = *(double *)(PTR_DAT_000f52d4 + 0x26d0);
    pcVar5 = (code *)(PTR_LAB_000f52ec + -0x46ac);
    do {
      dVar2 = pdVar17[1];
      pbVar10 = param_2 + uVar15;
      local_6c = (uint)*pbVar10;
      if (((ulonglong)dVar2 & 0x24000000000000) != 0) {
        if (local_6c < 10) {
          if (local_6c != 0) {
            if (local_6c == 7) {
              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);
              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {
                uVar12 = 0xffffffff;
                goto LAB_0004fecc;
              }
              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {
                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))
                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));
                uVar12 = -iVar11;
                goto LAB_0004fec4;
              }
              uVar12 = 1;
              iVar11 = *param_3;
              goto LAB_0004fed0;
            }
            if (local_6c < 7) {
                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */
                    /* WARNING: Treating indirect jump as call */
              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();
              return uVar15;
            }
            iVar11 = *(int *)pdVar17;
            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {
              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))
              goto LAB_0005018c;
              goto LAB_0004fd10;
            }
          }
          goto LAB_00050270;
        }
LAB_0005018c:
        iVar11 = *param_3;
        uVar12 = 1;
LAB_0004fed0:
        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);
        if (bVar1 == 0) goto LAB_0004fd90;
        if ((bVar1 & 2) != 0) {
          if (local_6c == 0) {
            bVar8 = 1;
          }
          else {
            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;
          }
          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;
        }
        uVar12 = -uVar12;
        goto LAB_0004fd90;
      }
      if (((ulonglong)dVar2 & 0x8000000000000) != 0) {
        if (9 < local_6c) goto LAB_0005018c;
        if (local_6c != 0) {
          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);
          if (local_6c == 7) {
            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {
              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;
              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;
              goto LAB_0004fd84;
            }
          }
          else {
            if (*pdVar17 < dVar19) goto LAB_0005018c;
            if (*pdVar17 < dVar18) {
              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);
              goto LAB_0004fec4;
            }
          }
        }
LAB_00050270:
        iVar11 = *param_3;
        uVar12 = 0xffffffff;
        goto LAB_0004fed0;
      }
      if (((ulonglong)dVar2 & 0x2000000000000) != 0) {
        if (0x7f < local_6c) {
          (*pcVar5)(pbVar10,&local_6c);
        }
        if (local_6c < 0xc) goto LAB_00050270;
        if ((local_6c & 1) == 0) goto LAB_0005018c;
        uVar7 = local_6c - 0xc >> 1;
        local_5c = uVar7;
        if (uVar7 + uVar16 <= param_1) {
          iVar11 = *param_3;
          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {
            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);
            if (iVar13 == 0) {
              uVar14 = *(uint *)((int)pdVar17 + 0xc);
              uVar12 = uVar14;
              if ((int)uVar7 <= (int)uVar14) {
                uVar12 = uVar7;
              }
              uVar12 = (*(code *)PTR_memcmp_000f5554)
                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);
              if (uVar12 != 0) goto LAB_0004fed0;
              uVar12 = uVar7 - uVar14;
            }
            else {
              local_5e = *(undefined1 *)(iVar11 + 4);
              local_48 = *(undefined4 *)(iVar11 + 0xc);
              local_60 = 2;
              local_58 = param_2 + uVar16;
              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);
            }
            goto LAB_0004fec4;
          }
        }
        uVar9 = 0x14194;
        goto LAB_0004fbfc;
      }
      if (((ulonglong)dVar2 & 0x10000000000000) == 0) {
        uVar12 = (uint)(local_6c != 0);
      }
      else {
        if (0x7f < local_6c) {
          (*pcVar5)(pbVar10,&local_6c);
        }
        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;
        uVar7 = local_6c - 0xc >> 1;
        if (param_1 < uVar7 + uVar16) {
          uVar9 = 0x141b2;
          goto LAB_0004fbfc;
        }
        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {
          uVar14 = *(uint *)((int)pdVar17 + 0xc);
          uVar12 = uVar7;
          if ((int)uVar14 <= (int)uVar7) {
            uVar12 = uVar14;
          }
          uVar12 = (*(code *)PTR_memcmp_000f5554)
                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);
          if (uVar12 != 0) goto LAB_0004fecc;
          uVar12 = uVar7 - uVar14;
        }
        else {
          if (uVar7 != 0) {
            if (param_2[uVar16] != 0) goto LAB_0005018c;
            pbVar10 = param_2 + uVar16 + 1;
            while (param_2 + uVar16 + uVar7 != pbVar10) {
              bVar1 = *pbVar10;
              pbVar10 = pbVar10 + 1;
              if (bVar1 != 0) goto LAB_0005018c;
            }
          }
          uVar12 = uVar7 - *(int *)pdVar17;
        }
      }
LAB_0004fec4:
      if (uVar12 != 0) {
LAB_0004fecc:
        iVar11 = *param_3;
        goto LAB_0004fed0;
      }
LAB_0004fd10:
      if ((uint)*(ushort *)(param_3 + 2) == param_4 + 1U) goto LAB_0004fd84;
      if (local_6c < 0x80) {
LAB_0004ff38:
        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];
      }
      else {
        uVar7 = local_6c - 0xc >> 1;
      }
      param_4 = param_4 + 1;
      uVar16 = uVar16 + uVar7;
      iVar11 = 1;
      uVar7 = local_6c;
      while (uVar7 = uVar7 >> 7, uVar7 != 0) {
        iVar11 = iVar11 + 1;
      }
      uVar15 = uVar15 + iVar11;
      if ((local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16)) goto LAB_0004fd84;
    } while( true );
  }
  uVar9 = 0x14147;
LAB_0004fbfc:
  uVar6 = FUN_00044904(uVar9);
  uVar12 = 0;
  *(undefined1 *)((int)param_3 + 0xb) = uVar6;
LAB_0004fd90:
  if (local_3c == *(int *)puVar4) {
    return uVar12;
  }
  (*(code *)PTR___stack_chk_fail_000f5540)();
  uVar15 = FUN_0004fb4c();
  return uVar15;
LAB_0004fd84:
  uVar12 = (uint)*(char *)((int)param_3 + 10);
  *(undefined1 *)((int)param_3 + 0xe) = 1;
  goto LAB_0004fd90;
}


lui gp,0xb
addiu gp,gp,-0x28ac
addu gp,gp,t9
addiu sp,sp,-0xa8
sdc1 f22,0xa0(sp)
sw s1,0x74(sp)
lw s1,-0x7d38(gp)
sw gp,0x10(sp)
sw s8,0x90(sp)
sw s6,0x88(sp)
or s6,a2,zero
sw s3,0x7c(sp)
or s3,a1,zero
sw s0,0x70(sp)
or s0,a0,zero
sw ra,0x94(sp)
sw s7,0x8c(sp)
sw s5,0x84(sp)
sw s4,0x80(sp)
sw s2,0x78(sp)
lw v0,0x0(s1)
sdc1 f20,0x98(sp)
lw s8,0x4(a2)
sw v0,0x6c(sp)
beq a3,zero,0x0004fc1c
_nop
lbu v0,0x1(a1)
seb v1,v0
bltz v1,0x000501b0
_li s4,0x2
lbu v1,0x0(a1)
or a0,v0,zero
sw v1,0x38(sp)
lw v0,-0x7fcc(gp)
addiu s8,s8,0x28
addiu v0,v0,0x2208
addu v0,a0,v0
lbu s7,0x0(v0)
addu s7,s7,v1
sltu v0,s0,s7
beq v0,zero,0x0004fc40
_lw v0,-0x7fcc(gp)
lui a0,0x1
addiu a0,a0,0x4147
lw t9,-0x7fb8(gp)
addiu t9,t9,0x4904
bal 0x00044904
_nop
or a1,zero,zero
lw gp,0x10(sp)
b 0x0004fd90
_sb v0,0xb(s6)
lbu s7,0x0(a1)
seb v0,s7
bltz v0,0x000501fc
_lw t9,-0x7fb4(gp)
li s4,0x1
sw s7,0x38(sp)
sltu v0,s0,s7
bne v0,zero,0x0004fbf4
_lw v0,-0x7fcc(gp)
or s5,a3,zero
lw v1,-0x7fcc(gp)
lw s2,-0x7fcc(gp)
sw v0,0x1c(sp)
ldc1 f22,0x26c8(v0)
lw v0,-0x7fb4(gp)
ldc1 f20,0x26d0(v1)
sw v1,0x28(sp)
addiu v0,v0,-0x46ac
sw v0,0x24(sp)
lw v0,-0x7f94(gp)
sw v0,0x20(sp)
lhu v0,0x8(s8)
addu a0,s3,s4
andi a2,v0,0x24
beq a2,zero,0x0004fe44
_lbu a1,0x0(a0)
sltiu v0,a1,0xa
beq v0,zero,0x0005018c
_sw a1,0x3c(sp)
beq a1,zero,0x00050270
_li v0,0x7
beq a1,v0,0x0005009c
_addu a0,s3,s7
sltiu v0,a1,0x7
beq v0,zero,0x00050108
_nop
lw v0,-0x7fcc(gp)
sll a1,a1,0x2
addiu v0,v0,-0x31cc
addu a1,v0,a1
lw v0,0x0(a1)
addu v0,v0,gp
jr v0
_nop
lw a0,0x0(s8)
slt a2,v0,a0
bne a2,zero,0x00050270
_lw a3,0x4(s8)
beq a0,v0,0x00050268
_sltu a2,a1,a3
slt a2,a0,v0
bne a2,zero,0x0005018c
_nop
beq v0,a0,0x00050180
_nop
lhu v0,0x8(s6)
addiu a3,s5,0x1
beq v0,a3,0x0004fd84
_lw v0,0x3c(sp)
sltiu v1,v0,0x80
bne v1,zero,0x0004ff38
_nop
addiu v1,v0,-0xc
srl v1,v1,0x1
srl v0,v0,0x7
addu s7,s7,v1
li a0,0x1
beq v0,zero,0x0004fd64
_or v1,zero,zero
sll a1,v1,0x19
srl v0,v0,0x7
srl v1,v1,0x7
or v0,a1,v0
or a1,v1,v0
bne a1,zero,0x0004fd48
_addiu a0,a0,0x1
lw v0,0x38(sp)
addu s4,s4,a0
sltu v0,s4,v0
beq v0,zero,0x0004fd84
_sltu v0,s0,s7
addiu s8,s8,0x28
beq v0,zero,0x0004fc70
_or s5,a3,zero
li v0,0x1
lb a1,0xa(s6)
sb v0,0xe(s6)
lw a0,0x6c(sp)
or v0,a1,zero
lw v1,0x0(s1)
bne a0,v1,0x00050298
_lw ra,0x94(sp)
lw s8,0x90(sp)
lw s7,0x8c(sp)
lw s6,0x88(sp)
lw s5,0x84(sp)
lw s4,0x80(sp)
lw s3,0x7c(sp)
lw s2,0x78(sp)
lw s1,0x74(sp)
lw s0,0x70(sp)
ldc1 f22,0xa0(sp)
ldc1 f20,0x98(sp)
jr ra
_addiu sp,sp,0xa8
andi a2,v0,0x8
beq a2,zero,0x0004ff48
_nop
sltiu v0,a1,0xa
beq v0,zero,0x0005018c
_sw a1,0x3c(sp)
beq a1,zero,0x00050270
_lw t9,-0x7fd8(gp)
addu a0,s3,s7
addiu t9,t9,0x56a8
jalr t9
_addiu a2,sp,0x40
li a0,0x7
lw v0,0x3c(sp)
beq v0,a0,0x0004ff0c
_lw gp,0x10(sp)
lw a3,0x4(s8)
lw a2,0x0(s8)
lw a1,0x44(sp)
mtc1 a3,f0
mthc1 a2,f0
c.lt.D f0,f22
bc1t 0x4,0x0005018c
_lw a0,0x40(sp)
c.le.D f20,f0
bc1t 0x5,0x00050270
_lw t9,-0x7fb4(gp)
addiu t9,t9,-0x1598
jalr t9
_nop
lw gp,0x10(sp)
or a1,v0,zero
beq a1,zero,0x0004fd10
_nop
lw t3,0x0(s6)
lw a3,0x10(t3)
addu a3,a3,s5
lbu v0,0x0(a3)
beq v0,zero,0x0004fd90
_andi v1,v0,0x2
beq v1,zero,0x0004ff04
_lw v1,0x3c(sp)
beq v1,zero,0x0005027c
_andi v0,v0,0x1
lbu v1,0x9(s8)
andi v1,v1,0x1
beq v0,v1,0x0004fd90
_nop
b 0x0004fd90
_subu a1,zero,a1
ldc1 f2,0x40(sp)
ldc1 f0,0x0(s8)
c.lt.D f2,f0
bc1t 0x2,0x00050270
_nop
c.lt.D f0,f2
bc1t 0x3,0x0005018c
_addiu a3,s5,0x1
lhu a0,0x8(s6)
beq a3,a0,0x0004fd84
_nop
addiu v1,s2,0x2208
addu v1,v0,v1
b 0x0004fd34
_lbu v1,0x0(v1)
andi a2,v0,0x2
beq a2,zero,0x0004fff8
_andi v0,v0,0x10
sltiu v0,a1,0x80
beq v0,zero,0x0005016c
_sw a1,0x3c(sp)
lw v0,0x3c(sp)
sltiu a0,v0,0xc
bne a0,zero,0x00050270
_nop
andi a0,v0,0x1
beq a0,zero,0x0005018c
_addiu v0,v0,-0xc
srl a3,v0,0x1
addu v0,a3,s7
sltu v0,s0,v0
bne v0,zero,0x00050284
_sw a3,0x4c(sp)
lw t3,0x0(s6)
lhu v0,0x8(t3)
slt v0,s5,v0
beq v0,zero,0x00050284
_addiu v0,s5,0x4
sll v0,v0,0x2
addu v0,t3,v0
lw a2,0x4(v0)
beq a2,zero,0x00050114
_addu t4,s3,s7
lbu v0,0x4(t3)
addiu a3,s6,0xb
addiu a0,sp,0x40
or a1,s8,zero
sb v0,0x4a(sp)
lw v0,0x20(sp)
addiu t9,v0,-0xae8
lw v0,0xc(t3)
li t3,0x2
sw t4,0x50(sp)
sh t3,0x48(sp)
bal 0x0004f518
_sw v0,0x60(sp)
lw gp,0x10(sp)
b 0x0004fec4
_or a1,v0,zero
beq v0,zero,0x000500fc
_sltiu v0,a1,0x80
bne v0,zero,0x0005001c
_sw a1,0x3c(sp)
lw t9,0x24(sp)
jalr t9
_addiu a1,sp,0x3c
lw gp,0x10(sp)
lw a1,0x3c(sp)
sltiu v0,a1,0xc
bne v0,zero,0x00050270
_andi v0,a1,0x1
bne v0,zero,0x00050270
_nop
addiu a1,a1,-0xc
srl a3,a1,0x1
addu v0,a3,s7
sltu v0,s0,v0
bne v0,zero,0x00050290
_lui a0,0x1
lhu v0,0x8(s8)
andi v0,v0,0x4000
bne v0,zero,0x00050224
_or v0,a3,zero
lw t3,0xc(s8)
lw t9,-0x7d4c(gp)
addu a0,s3,s7
lw a1,0x10(s8)
slt a2,a3,t3
sw a3,0x30(sp)
movz v0,t3,a2
sw t3,0x2c(sp)
jalr t9
_or a2,v0,zero
lw gp,0x10(sp)
or a1,v0,zero
lw t3,0x2c(sp)
bne v0,zero,0x0004fecc
_lw a3,0x30(sp)
b 0x0004fec4
_subu a1,a3,t3
lw t9,-0x7fd8(gp)
addiu a2,sp,0x40
addiu t9,t9,0x56a8
jalr t9
_li a1,0x7
lw a3,0x44(sp)
lw a2,0x40(sp)
lw v0,0x1c(sp)
mtc1 a3,f2
lw gp,0x10(sp)
lw a1,0x4(s8)
ldc1 f0,0x26c8(v0)
mthc1 a2,f2
c.lt.D f2,f0
bc1t 0x00050164
_lw a0,0x0(s8)
lw v0,0x28(sp)
ldc1 f0,0x26d0(v0)
c.le.D f0,f2
bc1f 0x1,0x00050198
_lw t9,-0x7fb4(gp)
li a1,0x1
b 0x0004fed0
_lw t3,0x0(s6)
sw a1,0x3c(sp)
b 0x0004fec4
_sltu a1,zero,a1
addiu a1,a1,-0x8
b 0x0004fce4
_or v0,zero,zero
lw t5,0xc(s8)
or a0,t4,zero
lw t9,-0x7d4c(gp)
lw a1,0x10(s8)
slt a2,t5,a3
sw t3,0x2c(sp)
or v0,t5,zero
sw t5,0x34(sp)
movz v0,a3,a2
sw a3,0x30(sp)
jalr t9
_or a2,v0,zero
lw gp,0x10(sp)
or a1,v0,zero
bne v0,zero,0x0004fed0
_lw t3,0x2c(sp)
lw a3,0x30(sp)
lw t5,0x34(sp)
b 0x0004fec4
_subu a1,a3,t5
b 0x0004fecc
_li a1,-0x1
lw t9,0x24(sp)
jalr t9
_addiu a1,sp,0x3c
b 0x0004ff60
_lw gp,0x10(sp)
sltu a1,a3,a1
beq a1,zero,0x0004fd10
_nop
lw t3,0x0(s6)
b 0x0004fed0
_li a1,0x1
addiu t9,t9,-0x1598
jalr t9
_nop
lw gp,0x10(sp)
b 0x0004fec4
_subu a1,zero,v0
lw t9,-0x7fb4(gp)
addiu a0,s3,0x1
addiu a1,sp,0x40
addiu t9,t9,-0x46ac
jalr t9
_sw a3,0x1c(sp)
lw a0,0x40(sp)
addiu s4,v0,0x1
lbu v1,0x0(s3)
lw gp,0x10(sp)
sltiu v0,a0,0x80
lw a3,0x1c(sp)
bne v0,zero,0x0004fbd0
_sw v1,0x38(sp)
addiu s7,a0,-0xc
addiu s8,s8,0x28
srl s7,s7,0x1
b 0x0004fbe8
_addu s7,s7,v1
addiu a1,sp,0x38
sw a3,0x1c(sp)
addiu t9,t9,-0x46ac
jalr t9
_or a0,s3,zero
lw gp,0x10(sp)
or s4,v0,zero
lw s7,0x38(sp)
b 0x0004fc34
_lw a3,0x1c(sp)
beq a3,zero,0x0005025c
_nop
addu a1,s3,s7
lb v0,0x0(a1)
bne v0,zero,0x0005018c
_addiu v0,s7,0x1
addu a1,a1,a3
b 0x00050254
_addu v0,s3,v0
lb a0,-0x1(v0)
bne a0,zero,0x0005018c
_nop
bne a1,v0,0x00050248
_addiu v0,v0,0x1
lw a1,0x0(s8)
b 0x0004fec4
_subu a1,a3,a1
beq a2,zero,0x0004fd00
_slt a2,a0,v0
lw t3,0x0(s6)
b 0x0004fed0
_li a1,-0x1
b 0x0004fefc
_li v1,0x1
lui a0,0x1
b 0x0004fbfc
_addiu a0,a0,0x4194
b 0x0004fbfc
_addiu a0,a0,0x41b2
lw t9,-0x7d60(gp)
jalr t9
_nop
(translation_unit "uint FUN_0004fb4c(uint param_1,byte *param_2,int *param_3,int param_4)\n\n{\n  byte bVar1;\n  double dVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined1 uVar6;\n  code *pcVar5;\n  uint uVar7;\n  byte bVar8;\n  undefined4 uVar9;\n  byte *pbVar10;\n  int iVar11;\n  uint uVar12;\n  int iVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  double *pdVar17;\n  double dVar18;\n  double dVar19;\n  uint local_70;\n  uint local_6c;\n  uint local_68;\n  undefined4 uStack_64;\n  undefined2 local_60;\n  undefined1 local_5e;\n  uint local_5c;\n  byte *local_58;\n  undefined4 local_48;\n  int local_3c;\n  \n  puVar4 = PTR___stack_chk_guard_000f5568;\n  local_3c = *(int *)PTR___stack_chk_guard_000f5568;\n  pdVar17 = (double *)param_3[1];\n  if (param_4 == 0) {\n    bVar1 = *param_2;\n    if ((char)bVar1 < '\0') {\n      uVar15 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70);\n      uVar16 = local_70;\n    }\n    else {\n      uVar15 = 1;\n      uVar16 = (uint)bVar1;\n      local_70 = (uint)bVar1;\n    }\n  }\n  else {\n    uVar15 = 2;\n    if ((char)param_2[1] < '\0') {\n      iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68);\n      uVar15 = iVar11 + 1;\n      local_70 = (uint)*param_2;\n      uVar16 = local_68;\n      if (local_68 < 0x80) goto LAB_0004fbd0;\n      uVar16 = (local_68 - 0xc >> 1) + local_70;\n    }\n    else {\n      local_70 = (uint)*param_2;\n      uVar16 = (uint)param_2[1];\nLAB_0004fbd0:\n      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;\n    }\n    pdVar17 = pdVar17 + 5;\n  }\n  puVar3 = PTR_DAT_000f52d4;\n  if (uVar16 <= param_1) {\n    dVar19 = *(double *)(PTR_DAT_000f52d4 + 0x26c8);\n    dVar18 = *(double *)(PTR_DAT_000f52d4 + 0x26d0);\n    pcVar5 = (code *)(PTR_LAB_000f52ec + -0x46ac);\n    do {\n      dVar2 = pdVar17[1];\n      pbVar10 = param_2 + uVar15;\n      local_6c = (uint)*pbVar10;\n      if (((ulonglong)dVar2 & 0x24000000000000) != 0) {\n        if (local_6c < 10) {\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }\nLAB_0005018c:\n        iVar11 = *param_3;\n        uVar12 = 1;\nLAB_0004fed0:\n        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);\n        if (bVar1 == 0) goto LAB_0004fd90;\n        if ((bVar1 & 2) != 0) {\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }\n        uVar12 = -uVar12;\n        goto LAB_0004fd90;\n      }\n      if (((ulonglong)dVar2 & 0x8000000000000) != 0) {\n        if (9 < local_6c) goto LAB_0005018c;\n        if (local_6c != 0) {\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        iVar11 = *param_3;\n        uVar12 = 0xffffffff;\n        goto LAB_0004fed0;\n      }\n      if (((ulonglong)dVar2 & 0x2000000000000) != 0) {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if (local_6c < 0xc) goto LAB_00050270;\n        if ((local_6c & 1) == 0) goto LAB_0005018c;\n        uVar7 = local_6c - 0xc >> 1;\n        local_5c = uVar7;\n        if (uVar7 + uVar16 <= param_1) {\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        uVar9 = 0x14194;\n        goto LAB_0004fbfc;\n      }\n      if (((ulonglong)dVar2 & 0x10000000000000) == 0) {\n        uVar12 = (uint)(local_6c != 0);\n      }\n      else {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;\n        uVar7 = local_6c - 0xc >> 1;\n        if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }\n      }\nLAB_0004fec4:\n      if (uVar12 != 0) {\nLAB_0004fecc:\n        iVar11 = *param_3;\n        goto LAB_0004fed0;\n      }\nLAB_0004fd10:\n      if ((uint)*(ushort *)(param_3 + 2) == param_4 + 1U) goto LAB_0004fd84;\n      if (local_6c < 0x80) {\nLAB_0004ff38:\n        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];\n      }\n      else {\n        uVar7 = local_6c - 0xc >> 1;\n      }\n      param_4 = param_4 + 1;\n      uVar16 = uVar16 + uVar7;\n      iVar11 = 1;\n      uVar7 = local_6c;\n      while (uVar7 = uVar7 >> 7, uVar7 != 0) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar15 = uVar15 + iVar11;\n      if ((local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16)) goto LAB_0004fd84;\n    } while( true );\n  }\n  uVar9 = 0x14147;\nLAB_0004fbfc:\n  uVar6 = FUN_00044904(uVar9);\n  uVar12 = 0;\n  *(undefined1 *)((int)param_3 + 0xb) = uVar6;\nLAB_0004fd90:\n  if (local_3c == *(int *)puVar4) {\n    return uVar12;\n  }\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  uVar15 = FUN_0004fb4c();\n  return uVar15;\nLAB_0004fd84:\n  uVar12 = (uint)*(char *)((int)param_3 + 10);\n  *(undefined1 *)((int)param_3 + 0xe) = 1;\n  goto LAB_0004fd90;\n}\n\n" (function_definition "uint FUN_0004fb4c(uint param_1,byte *param_2,int *param_3,int param_4)\n\n{\n  byte bVar1;\n  double dVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined1 uVar6;\n  code *pcVar5;\n  uint uVar7;\n  byte bVar8;\n  undefined4 uVar9;\n  byte *pbVar10;\n  int iVar11;\n  uint uVar12;\n  int iVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  double *pdVar17;\n  double dVar18;\n  double dVar19;\n  uint local_70;\n  uint local_6c;\n  uint local_68;\n  undefined4 uStack_64;\n  undefined2 local_60;\n  undefined1 local_5e;\n  uint local_5c;\n  byte *local_58;\n  undefined4 local_48;\n  int local_3c;\n  \n  puVar4 = PTR___stack_chk_guard_000f5568;\n  local_3c = *(int *)PTR___stack_chk_guard_000f5568;\n  pdVar17 = (double *)param_3[1];\n  if (param_4 == 0) {\n    bVar1 = *param_2;\n    if ((char)bVar1 < '\0') {\n      uVar15 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70);\n      uVar16 = local_70;\n    }\n    else {\n      uVar15 = 1;\n      uVar16 = (uint)bVar1;\n      local_70 = (uint)bVar1;\n    }\n  }\n  else {\n    uVar15 = 2;\n    if ((char)param_2[1] < '\0') {\n      iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68);\n      uVar15 = iVar11 + 1;\n      local_70 = (uint)*param_2;\n      uVar16 = local_68;\n      if (local_68 < 0x80) goto LAB_0004fbd0;\n      uVar16 = (local_68 - 0xc >> 1) + local_70;\n    }\n    else {\n      local_70 = (uint)*param_2;\n      uVar16 = (uint)param_2[1];\nLAB_0004fbd0:\n      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;\n    }\n    pdVar17 = pdVar17 + 5;\n  }\n  puVar3 = PTR_DAT_000f52d4;\n  if (uVar16 <= param_1) {\n    dVar19 = *(double *)(PTR_DAT_000f52d4 + 0x26c8);\n    dVar18 = *(double *)(PTR_DAT_000f52d4 + 0x26d0);\n    pcVar5 = (code *)(PTR_LAB_000f52ec + -0x46ac);\n    do {\n      dVar2 = pdVar17[1];\n      pbVar10 = param_2 + uVar15;\n      local_6c = (uint)*pbVar10;\n      if (((ulonglong)dVar2 & 0x24000000000000) != 0) {\n        if (local_6c < 10) {\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }\nLAB_0005018c:\n        iVar11 = *param_3;\n        uVar12 = 1;\nLAB_0004fed0:\n        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);\n        if (bVar1 == 0) goto LAB_0004fd90;\n        if ((bVar1 & 2) != 0) {\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }\n        uVar12 = -uVar12;\n        goto LAB_0004fd90;\n      }\n      if (((ulonglong)dVar2 & 0x8000000000000) != 0) {\n        if (9 < local_6c) goto LAB_0005018c;\n        if (local_6c != 0) {\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        iVar11 = *param_3;\n        uVar12 = 0xffffffff;\n        goto LAB_0004fed0;\n      }\n      if (((ulonglong)dVar2 & 0x2000000000000) != 0) {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if (local_6c < 0xc) goto LAB_00050270;\n        if ((local_6c & 1) == 0) goto LAB_0005018c;\n        uVar7 = local_6c - 0xc >> 1;\n        local_5c = uVar7;\n        if (uVar7 + uVar16 <= param_1) {\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        uVar9 = 0x14194;\n        goto LAB_0004fbfc;\n      }\n      if (((ulonglong)dVar2 & 0x10000000000000) == 0) {\n        uVar12 = (uint)(local_6c != 0);\n      }\n      else {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;\n        uVar7 = local_6c - 0xc >> 1;\n        if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }\n      }\nLAB_0004fec4:\n      if (uVar12 != 0) {\nLAB_0004fecc:\n        iVar11 = *param_3;\n        goto LAB_0004fed0;\n      }\nLAB_0004fd10:\n      if ((uint)*(ushort *)(param_3 + 2) == param_4 + 1U) goto LAB_0004fd84;\n      if (local_6c < 0x80) {\nLAB_0004ff38:\n        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];\n      }\n      else {\n        uVar7 = local_6c - 0xc >> 1;\n      }\n      param_4 = param_4 + 1;\n      uVar16 = uVar16 + uVar7;\n      iVar11 = 1;\n      uVar7 = local_6c;\n      while (uVar7 = uVar7 >> 7, uVar7 != 0) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar15 = uVar15 + iVar11;\n      if ((local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16)) goto LAB_0004fd84;\n    } while( true );\n  }\n  uVar9 = 0x14147;\nLAB_0004fbfc:\n  uVar6 = FUN_00044904(uVar9);\n  uVar12 = 0;\n  *(undefined1 *)((int)param_3 + 0xb) = uVar6;\nLAB_0004fd90:\n  if (local_3c == *(int *)puVar4) {\n    return uVar12;\n  }\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  uVar15 = FUN_0004fb4c();\n  return uVar15;\nLAB_0004fd84:\n  uVar12 = (uint)*(char *)((int)param_3 + 10);\n  *(undefined1 *)((int)param_3 + 0xe) = 1;\n  goto LAB_0004fd90;\n}" type_identifier (function_declarator "FUN_0004fb4c(uint param_1,byte *param_2,int *param_3,int param_4)" identifier (parameter_list "(uint param_1,byte *param_2,int *param_3,int param_4)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  double dVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined1 uVar6;\n  code *pcVar5;\n  uint uVar7;\n  byte bVar8;\n  undefined4 uVar9;\n  byte *pbVar10;\n  int iVar11;\n  uint uVar12;\n  int iVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  double *pdVar17;\n  double dVar18;\n  double dVar19;\n  uint local_70;\n  uint local_6c;\n  uint local_68;\n  undefined4 uStack_64;\n  undefined2 local_60;\n  undefined1 local_5e;\n  uint local_5c;\n  byte *local_58;\n  undefined4 local_48;\n  int local_3c;\n  \n  puVar4 = PTR___stack_chk_guard_000f5568;\n  local_3c = *(int *)PTR___stack_chk_guard_000f5568;\n  pdVar17 = (double *)param_3[1];\n  if (param_4 == 0) {\n    bVar1 = *param_2;\n    if ((char)bVar1 < '\0') {\n      uVar15 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70);\n      uVar16 = local_70;\n    }\n    else {\n      uVar15 = 1;\n      uVar16 = (uint)bVar1;\n      local_70 = (uint)bVar1;\n    }\n  }\n  else {\n    uVar15 = 2;\n    if ((char)param_2[1] < '\0') {\n      iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68);\n      uVar15 = iVar11 + 1;\n      local_70 = (uint)*param_2;\n      uVar16 = local_68;\n      if (local_68 < 0x80) goto LAB_0004fbd0;\n      uVar16 = (local_68 - 0xc >> 1) + local_70;\n    }\n    else {\n      local_70 = (uint)*param_2;\n      uVar16 = (uint)param_2[1];\nLAB_0004fbd0:\n      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;\n    }\n    pdVar17 = pdVar17 + 5;\n  }\n  puVar3 = PTR_DAT_000f52d4;\n  if (uVar16 <= param_1) {\n    dVar19 = *(double *)(PTR_DAT_000f52d4 + 0x26c8);\n    dVar18 = *(double *)(PTR_DAT_000f52d4 + 0x26d0);\n    pcVar5 = (code *)(PTR_LAB_000f52ec + -0x46ac);\n    do {\n      dVar2 = pdVar17[1];\n      pbVar10 = param_2 + uVar15;\n      local_6c = (uint)*pbVar10;\n      if (((ulonglong)dVar2 & 0x24000000000000) != 0) {\n        if (local_6c < 10) {\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }\nLAB_0005018c:\n        iVar11 = *param_3;\n        uVar12 = 1;\nLAB_0004fed0:\n        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);\n        if (bVar1 == 0) goto LAB_0004fd90;\n        if ((bVar1 & 2) != 0) {\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }\n        uVar12 = -uVar12;\n        goto LAB_0004fd90;\n      }\n      if (((ulonglong)dVar2 & 0x8000000000000) != 0) {\n        if (9 < local_6c) goto LAB_0005018c;\n        if (local_6c != 0) {\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        iVar11 = *param_3;\n        uVar12 = 0xffffffff;\n        goto LAB_0004fed0;\n      }\n      if (((ulonglong)dVar2 & 0x2000000000000) != 0) {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if (local_6c < 0xc) goto LAB_00050270;\n        if ((local_6c & 1) == 0) goto LAB_0005018c;\n        uVar7 = local_6c - 0xc >> 1;\n        local_5c = uVar7;\n        if (uVar7 + uVar16 <= param_1) {\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        uVar9 = 0x14194;\n        goto LAB_0004fbfc;\n      }\n      if (((ulonglong)dVar2 & 0x10000000000000) == 0) {\n        uVar12 = (uint)(local_6c != 0);\n      }\n      else {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;\n        uVar7 = local_6c - 0xc >> 1;\n        if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }\n      }\nLAB_0004fec4:\n      if (uVar12 != 0) {\nLAB_0004fecc:\n        iVar11 = *param_3;\n        goto LAB_0004fed0;\n      }\nLAB_0004fd10:\n      if ((uint)*(ushort *)(param_3 + 2) == param_4 + 1U) goto LAB_0004fd84;\n      if (local_6c < 0x80) {\nLAB_0004ff38:\n        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];\n      }\n      else {\n        uVar7 = local_6c - 0xc >> 1;\n      }\n      param_4 = param_4 + 1;\n      uVar16 = uVar16 + uVar7;\n      iVar11 = 1;\n      uVar7 = local_6c;\n      while (uVar7 = uVar7 >> 7, uVar7 != 0) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar15 = uVar15 + iVar11;\n      if ((local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16)) goto LAB_0004fd84;\n    } while( true );\n  }\n  uVar9 = 0x14147;\nLAB_0004fbfc:\n  uVar6 = FUN_00044904(uVar9);\n  uVar12 = 0;\n  *(undefined1 *)((int)param_3 + 0xb) = uVar6;\nLAB_0004fd90:\n  if (local_3c == *(int *)puVar4) {\n    return uVar12;\n  }\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  uVar15 = FUN_0004fb4c();\n  return uVar15;\nLAB_0004fd84:\n  uVar12 = (uint)*(char *)((int)param_3 + 10);\n  *(undefined1 *)((int)param_3 + 0xe) = 1;\n  goto LAB_0004fd90;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "double dVar2;" primitive_type identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined1 uVar6;" type_identifier identifier ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "double *pdVar17;" primitive_type (pointer_declarator "*pdVar17" * identifier) ;) (declaration "double dVar18;" primitive_type identifier ;) (declaration "double dVar19;" primitive_type identifier ;) (declaration "uint local_70;" type_identifier identifier ;) (declaration "uint local_6c;" type_identifier identifier ;) (declaration "uint local_68;" type_identifier identifier ;) (declaration "undefined4 uStack_64;" type_identifier identifier ;) (declaration "undefined2 local_60;" type_identifier identifier ;) (declaration "undefined1 local_5e;" type_identifier identifier ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "byte *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (expression_statement "puVar4 = PTR___stack_chk_guard_000f5568;" (assignment_expression "puVar4 = PTR___stack_chk_guard_000f5568" identifier = identifier) ;) (expression_statement "local_3c = *(int *)PTR___stack_chk_guard_000f5568;" (assignment_expression "local_3c = *(int *)PTR___stack_chk_guard_000f5568" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000f5568" * (cast_expression "(int *)PTR___stack_chk_guard_000f5568" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pdVar17 = (double *)param_3[1];" (assignment_expression "pdVar17 = (double *)param_3[1]" identifier = (cast_expression "(double *)param_3[1]" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ]))) ;) (if_statement "if (param_4 == 0) {\n    bVar1 = *param_2;\n    if ((char)bVar1 < '\0') {\n      uVar15 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70);\n      uVar16 = local_70;\n    }\n    else {\n      uVar15 = 1;\n      uVar16 = (uint)bVar1;\n      local_70 = (uint)bVar1;\n    }\n  }\n  else {\n    uVar15 = 2;\n    if ((char)param_2[1] < '\0') {\n      iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68);\n      uVar15 = iVar11 + 1;\n      local_70 = (uint)*param_2;\n      uVar16 = local_68;\n      if (local_68 < 0x80) goto LAB_0004fbd0;\n      uVar16 = (local_68 - 0xc >> 1) + local_70;\n    }\n    else {\n      local_70 = (uint)*param_2;\n      uVar16 = (uint)param_2[1];\nLAB_0004fbd0:\n      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;\n    }\n    pdVar17 = pdVar17 + 5;\n  }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n    bVar1 = *param_2;\n    if ((char)bVar1 < '\0') {\n      uVar15 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70);\n      uVar16 = local_70;\n    }\n    else {\n      uVar15 = 1;\n      uVar16 = (uint)bVar1;\n      local_70 = (uint)bVar1;\n    }\n  }" { (expression_statement "bVar1 = *param_2;" (assignment_expression "bVar1 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if ((char)bVar1 < '\0') {\n      uVar15 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70);\n      uVar16 = local_70;\n    }\n    else {\n      uVar15 = 1;\n      uVar16 = (uint)bVar1;\n      local_70 = (uint)bVar1;\n    }" if (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar15 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70);\n      uVar16 = local_70;\n    }" { (expression_statement "uVar15 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70);" (assignment_expression "uVar15 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70)" identifier = (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x46ac))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x46ac)" * (cast_expression "(code *)(PTR_LAB_000f52ec + -0x46ac)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x46ac)" ( (binary_expression "PTR_LAB_000f52ec + -0x46ac" identifier + number_literal) )))) )) (argument_list "(param_2,&local_70)" ( identifier , (pointer_expression "&local_70" & identifier) )))) ;) (expression_statement "uVar16 = local_70;" (assignment_expression "uVar16 = local_70" identifier = identifier) ;) }) (else_clause "else {\n      uVar15 = 1;\n      uVar16 = (uint)bVar1;\n      local_70 = (uint)bVar1;\n    }" else (compound_statement "{\n      uVar15 = 1;\n      uVar16 = (uint)bVar1;\n      local_70 = (uint)bVar1;\n    }" { (expression_statement "uVar15 = 1;" (assignment_expression "uVar15 = 1" identifier = number_literal) ;) (expression_statement "uVar16 = (uint)bVar1;" (assignment_expression "uVar16 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_70 = (uint)bVar1;" (assignment_expression "local_70 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) }) (else_clause "else {\n    uVar15 = 2;\n    if ((char)param_2[1] < '\0') {\n      iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68);\n      uVar15 = iVar11 + 1;\n      local_70 = (uint)*param_2;\n      uVar16 = local_68;\n      if (local_68 < 0x80) goto LAB_0004fbd0;\n      uVar16 = (local_68 - 0xc >> 1) + local_70;\n    }\n    else {\n      local_70 = (uint)*param_2;\n      uVar16 = (uint)param_2[1];\nLAB_0004fbd0:\n      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;\n    }\n    pdVar17 = pdVar17 + 5;\n  }" else (compound_statement "{\n    uVar15 = 2;\n    if ((char)param_2[1] < '\0') {\n      iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68);\n      uVar15 = iVar11 + 1;\n      local_70 = (uint)*param_2;\n      uVar16 = local_68;\n      if (local_68 < 0x80) goto LAB_0004fbd0;\n      uVar16 = (local_68 - 0xc >> 1) + local_70;\n    }\n    else {\n      local_70 = (uint)*param_2;\n      uVar16 = (uint)param_2[1];\nLAB_0004fbd0:\n      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;\n    }\n    pdVar17 = pdVar17 + 5;\n  }" { (expression_statement "uVar15 = 2;" (assignment_expression "uVar15 = 2" identifier = number_literal) ;) (if_statement "if ((char)param_2[1] < '\0') {\n      iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68);\n      uVar15 = iVar11 + 1;\n      local_70 = (uint)*param_2;\n      uVar16 = local_68;\n      if (local_68 < 0x80) goto LAB_0004fbd0;\n      uVar16 = (local_68 - 0xc >> 1) + local_70;\n    }\n    else {\n      local_70 = (uint)*param_2;\n      uVar16 = (uint)param_2[1];\nLAB_0004fbd0:\n      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;\n    }" if (parenthesized_expression "((char)param_2[1] < '\0')" ( (binary_expression "(char)param_2[1] < '\0'" (cast_expression "(char)param_2[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_2[1]" identifier [ number_literal ])) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68);\n      uVar15 = iVar11 + 1;\n      local_70 = (uint)*param_2;\n      uVar16 = local_68;\n      if (local_68 < 0x80) goto LAB_0004fbd0;\n      uVar16 = (local_68 - 0xc >> 1) + local_70;\n    }" { (expression_statement "iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68);" (assignment_expression "iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68)" identifier = (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x46ac))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x46ac)" * (cast_expression "(code *)(PTR_LAB_000f52ec + -0x46ac)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x46ac)" ( (binary_expression "PTR_LAB_000f52ec + -0x46ac" identifier + number_literal) )))) )) (argument_list "(param_2 + 1,&local_68)" ( (binary_expression "param_2 + 1" identifier + number_literal) , (pointer_expression "&local_68" & identifier) )))) ;) (expression_statement "uVar15 = iVar11 + 1;" (assignment_expression "uVar15 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (expression_statement "local_70 = (uint)*param_2;" (assignment_expression "local_70 = (uint)*param_2" identifier = (binary_expression "(uint)*param_2" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "uVar16 = local_68;" (assignment_expression "uVar16 = local_68" identifier = identifier) ;) (if_statement "if (local_68 < 0x80) goto LAB_0004fbd0;" if (parenthesized_expression "(local_68 < 0x80)" ( (binary_expression "local_68 < 0x80" identifier < number_literal) )) (goto_statement "goto LAB_0004fbd0;" goto statement_identifier ;)) (expression_statement "uVar16 = (local_68 - 0xc >> 1) + local_70;" (assignment_expression "uVar16 = (local_68 - 0xc >> 1) + local_70" identifier = (binary_expression "(local_68 - 0xc >> 1) + local_70" (parenthesized_expression "(local_68 - 0xc >> 1)" ( (binary_expression "local_68 - 0xc >> 1" (binary_expression "local_68 - 0xc" identifier - number_literal) >> number_literal) )) + identifier)) ;) }) (else_clause "else {\n      local_70 = (uint)*param_2;\n      uVar16 = (uint)param_2[1];\nLAB_0004fbd0:\n      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;\n    }" else (compound_statement "{\n      local_70 = (uint)*param_2;\n      uVar16 = (uint)param_2[1];\nLAB_0004fbd0:\n      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;\n    }" { (expression_statement "local_70 = (uint)*param_2;" (assignment_expression "local_70 = (uint)*param_2" identifier = (binary_expression "(uint)*param_2" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "uVar16 = (uint)param_2[1];" (assignment_expression "uVar16 = (uint)param_2[1]" identifier = (cast_expression "(uint)param_2[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) ;) (labeled_statement "LAB_0004fbd0:\n      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;" statement_identifier : (expression_statement "uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;" (assignment_expression "uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70" identifier = (binary_expression "(byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70" (cast_expression "(byte)PTR_DAT_000f52d4[uVar16 + 0x2208]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "PTR_DAT_000f52d4[uVar16 + 0x2208]" identifier [ (binary_expression "uVar16 + 0x2208" identifier + number_literal) ])) + identifier)) ;)) }))) (expression_statement "pdVar17 = pdVar17 + 5;" (assignment_expression "pdVar17 = pdVar17 + 5" identifier = (binary_expression "pdVar17 + 5" identifier + number_literal)) ;) }))) (expression_statement "puVar3 = PTR_DAT_000f52d4;" (assignment_expression "puVar3 = PTR_DAT_000f52d4" identifier = identifier) ;) (if_statement "if (uVar16 <= param_1) {\n    dVar19 = *(double *)(PTR_DAT_000f52d4 + 0x26c8);\n    dVar18 = *(double *)(PTR_DAT_000f52d4 + 0x26d0);\n    pcVar5 = (code *)(PTR_LAB_000f52ec + -0x46ac);\n    do {\n      dVar2 = pdVar17[1];\n      pbVar10 = param_2 + uVar15;\n      local_6c = (uint)*pbVar10;\n      if (((ulonglong)dVar2 & 0x24000000000000) != 0) {\n        if (local_6c < 10) {\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }\nLAB_0005018c:\n        iVar11 = *param_3;\n        uVar12 = 1;\nLAB_0004fed0:\n        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);\n        if (bVar1 == 0) goto LAB_0004fd90;\n        if ((bVar1 & 2) != 0) {\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }\n        uVar12 = -uVar12;\n        goto LAB_0004fd90;\n      }\n      if (((ulonglong)dVar2 & 0x8000000000000) != 0) {\n        if (9 < local_6c) goto LAB_0005018c;\n        if (local_6c != 0) {\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        iVar11 = *param_3;\n        uVar12 = 0xffffffff;\n        goto LAB_0004fed0;\n      }\n      if (((ulonglong)dVar2 & 0x2000000000000) != 0) {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if (local_6c < 0xc) goto LAB_00050270;\n        if ((local_6c & 1) == 0) goto LAB_0005018c;\n        uVar7 = local_6c - 0xc >> 1;\n        local_5c = uVar7;\n        if (uVar7 + uVar16 <= param_1) {\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        uVar9 = 0x14194;\n        goto LAB_0004fbfc;\n      }\n      if (((ulonglong)dVar2 & 0x10000000000000) == 0) {\n        uVar12 = (uint)(local_6c != 0);\n      }\n      else {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;\n        uVar7 = local_6c - 0xc >> 1;\n        if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }\n      }\nLAB_0004fec4:\n      if (uVar12 != 0) {\nLAB_0004fecc:\n        iVar11 = *param_3;\n        goto LAB_0004fed0;\n      }\nLAB_0004fd10:\n      if ((uint)*(ushort *)(param_3 + 2) == param_4 + 1U) goto LAB_0004fd84;\n      if (local_6c < 0x80) {\nLAB_0004ff38:\n        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];\n      }\n      else {\n        uVar7 = local_6c - 0xc >> 1;\n      }\n      param_4 = param_4 + 1;\n      uVar16 = uVar16 + uVar7;\n      iVar11 = 1;\n      uVar7 = local_6c;\n      while (uVar7 = uVar7 >> 7, uVar7 != 0) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar15 = uVar15 + iVar11;\n      if ((local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16)) goto LAB_0004fd84;\n    } while( true );\n  }" if (parenthesized_expression "(uVar16 <= param_1)" ( (binary_expression "uVar16 <= param_1" identifier <= identifier) )) (compound_statement "{\n    dVar19 = *(double *)(PTR_DAT_000f52d4 + 0x26c8);\n    dVar18 = *(double *)(PTR_DAT_000f52d4 + 0x26d0);\n    pcVar5 = (code *)(PTR_LAB_000f52ec + -0x46ac);\n    do {\n      dVar2 = pdVar17[1];\n      pbVar10 = param_2 + uVar15;\n      local_6c = (uint)*pbVar10;\n      if (((ulonglong)dVar2 & 0x24000000000000) != 0) {\n        if (local_6c < 10) {\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }\nLAB_0005018c:\n        iVar11 = *param_3;\n        uVar12 = 1;\nLAB_0004fed0:\n        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);\n        if (bVar1 == 0) goto LAB_0004fd90;\n        if ((bVar1 & 2) != 0) {\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }\n        uVar12 = -uVar12;\n        goto LAB_0004fd90;\n      }\n      if (((ulonglong)dVar2 & 0x8000000000000) != 0) {\n        if (9 < local_6c) goto LAB_0005018c;\n        if (local_6c != 0) {\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        iVar11 = *param_3;\n        uVar12 = 0xffffffff;\n        goto LAB_0004fed0;\n      }\n      if (((ulonglong)dVar2 & 0x2000000000000) != 0) {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if (local_6c < 0xc) goto LAB_00050270;\n        if ((local_6c & 1) == 0) goto LAB_0005018c;\n        uVar7 = local_6c - 0xc >> 1;\n        local_5c = uVar7;\n        if (uVar7 + uVar16 <= param_1) {\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        uVar9 = 0x14194;\n        goto LAB_0004fbfc;\n      }\n      if (((ulonglong)dVar2 & 0x10000000000000) == 0) {\n        uVar12 = (uint)(local_6c != 0);\n      }\n      else {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;\n        uVar7 = local_6c - 0xc >> 1;\n        if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }\n      }\nLAB_0004fec4:\n      if (uVar12 != 0) {\nLAB_0004fecc:\n        iVar11 = *param_3;\n        goto LAB_0004fed0;\n      }\nLAB_0004fd10:\n      if ((uint)*(ushort *)(param_3 + 2) == param_4 + 1U) goto LAB_0004fd84;\n      if (local_6c < 0x80) {\nLAB_0004ff38:\n        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];\n      }\n      else {\n        uVar7 = local_6c - 0xc >> 1;\n      }\n      param_4 = param_4 + 1;\n      uVar16 = uVar16 + uVar7;\n      iVar11 = 1;\n      uVar7 = local_6c;\n      while (uVar7 = uVar7 >> 7, uVar7 != 0) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar15 = uVar15 + iVar11;\n      if ((local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16)) goto LAB_0004fd84;\n    } while( true );\n  }" { (expression_statement "dVar19 = *(double *)(PTR_DAT_000f52d4 + 0x26c8);" (assignment_expression "dVar19 = *(double *)(PTR_DAT_000f52d4 + 0x26c8)" identifier = (pointer_expression "*(double *)(PTR_DAT_000f52d4 + 0x26c8)" * (cast_expression "(double *)(PTR_DAT_000f52d4 + 0x26c8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000f52d4 + 0x26c8)" ( (binary_expression "PTR_DAT_000f52d4 + 0x26c8" identifier + number_literal) ))))) ;) (expression_statement "dVar18 = *(double *)(PTR_DAT_000f52d4 + 0x26d0);" (assignment_expression "dVar18 = *(double *)(PTR_DAT_000f52d4 + 0x26d0)" identifier = (pointer_expression "*(double *)(PTR_DAT_000f52d4 + 0x26d0)" * (cast_expression "(double *)(PTR_DAT_000f52d4 + 0x26d0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000f52d4 + 0x26d0)" ( (binary_expression "PTR_DAT_000f52d4 + 0x26d0" identifier + number_literal) ))))) ;) (expression_statement "pcVar5 = (code *)(PTR_LAB_000f52ec + -0x46ac);" (assignment_expression "pcVar5 = (code *)(PTR_LAB_000f52ec + -0x46ac)" identifier = (cast_expression "(code *)(PTR_LAB_000f52ec + -0x46ac)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x46ac)" ( (binary_expression "PTR_LAB_000f52ec + -0x46ac" identifier + number_literal) )))) ;) (do_statement "do {\n      dVar2 = pdVar17[1];\n      pbVar10 = param_2 + uVar15;\n      local_6c = (uint)*pbVar10;\n      if (((ulonglong)dVar2 & 0x24000000000000) != 0) {\n        if (local_6c < 10) {\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }\nLAB_0005018c:\n        iVar11 = *param_3;\n        uVar12 = 1;\nLAB_0004fed0:\n        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);\n        if (bVar1 == 0) goto LAB_0004fd90;\n        if ((bVar1 & 2) != 0) {\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }\n        uVar12 = -uVar12;\n        goto LAB_0004fd90;\n      }\n      if (((ulonglong)dVar2 & 0x8000000000000) != 0) {\n        if (9 < local_6c) goto LAB_0005018c;\n        if (local_6c != 0) {\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        iVar11 = *param_3;\n        uVar12 = 0xffffffff;\n        goto LAB_0004fed0;\n      }\n      if (((ulonglong)dVar2 & 0x2000000000000) != 0) {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if (local_6c < 0xc) goto LAB_00050270;\n        if ((local_6c & 1) == 0) goto LAB_0005018c;\n        uVar7 = local_6c - 0xc >> 1;\n        local_5c = uVar7;\n        if (uVar7 + uVar16 <= param_1) {\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        uVar9 = 0x14194;\n        goto LAB_0004fbfc;\n      }\n      if (((ulonglong)dVar2 & 0x10000000000000) == 0) {\n        uVar12 = (uint)(local_6c != 0);\n      }\n      else {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;\n        uVar7 = local_6c - 0xc >> 1;\n        if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }\n      }\nLAB_0004fec4:\n      if (uVar12 != 0) {\nLAB_0004fecc:\n        iVar11 = *param_3;\n        goto LAB_0004fed0;\n      }\nLAB_0004fd10:\n      if ((uint)*(ushort *)(param_3 + 2) == param_4 + 1U) goto LAB_0004fd84;\n      if (local_6c < 0x80) {\nLAB_0004ff38:\n        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];\n      }\n      else {\n        uVar7 = local_6c - 0xc >> 1;\n      }\n      param_4 = param_4 + 1;\n      uVar16 = uVar16 + uVar7;\n      iVar11 = 1;\n      uVar7 = local_6c;\n      while (uVar7 = uVar7 >> 7, uVar7 != 0) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar15 = uVar15 + iVar11;\n      if ((local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16)) goto LAB_0004fd84;\n    } while( true );" do (compound_statement "{\n      dVar2 = pdVar17[1];\n      pbVar10 = param_2 + uVar15;\n      local_6c = (uint)*pbVar10;\n      if (((ulonglong)dVar2 & 0x24000000000000) != 0) {\n        if (local_6c < 10) {\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }\nLAB_0005018c:\n        iVar11 = *param_3;\n        uVar12 = 1;\nLAB_0004fed0:\n        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);\n        if (bVar1 == 0) goto LAB_0004fd90;\n        if ((bVar1 & 2) != 0) {\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }\n        uVar12 = -uVar12;\n        goto LAB_0004fd90;\n      }\n      if (((ulonglong)dVar2 & 0x8000000000000) != 0) {\n        if (9 < local_6c) goto LAB_0005018c;\n        if (local_6c != 0) {\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        iVar11 = *param_3;\n        uVar12 = 0xffffffff;\n        goto LAB_0004fed0;\n      }\n      if (((ulonglong)dVar2 & 0x2000000000000) != 0) {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if (local_6c < 0xc) goto LAB_00050270;\n        if ((local_6c & 1) == 0) goto LAB_0005018c;\n        uVar7 = local_6c - 0xc >> 1;\n        local_5c = uVar7;\n        if (uVar7 + uVar16 <= param_1) {\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        uVar9 = 0x14194;\n        goto LAB_0004fbfc;\n      }\n      if (((ulonglong)dVar2 & 0x10000000000000) == 0) {\n        uVar12 = (uint)(local_6c != 0);\n      }\n      else {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;\n        uVar7 = local_6c - 0xc >> 1;\n        if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }\n      }\nLAB_0004fec4:\n      if (uVar12 != 0) {\nLAB_0004fecc:\n        iVar11 = *param_3;\n        goto LAB_0004fed0;\n      }\nLAB_0004fd10:\n      if ((uint)*(ushort *)(param_3 + 2) == param_4 + 1U) goto LAB_0004fd84;\n      if (local_6c < 0x80) {\nLAB_0004ff38:\n        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];\n      }\n      else {\n        uVar7 = local_6c - 0xc >> 1;\n      }\n      param_4 = param_4 + 1;\n      uVar16 = uVar16 + uVar7;\n      iVar11 = 1;\n      uVar7 = local_6c;\n      while (uVar7 = uVar7 >> 7, uVar7 != 0) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar15 = uVar15 + iVar11;\n      if ((local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16)) goto LAB_0004fd84;\n    }" { (expression_statement "dVar2 = pdVar17[1];" (assignment_expression "dVar2 = pdVar17[1]" identifier = (subscript_expression "pdVar17[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar10 = param_2 + uVar15;" (assignment_expression "pbVar10 = param_2 + uVar15" identifier = (binary_expression "param_2 + uVar15" identifier + identifier)) ;) (expression_statement "local_6c = (uint)*pbVar10;" (assignment_expression "local_6c = (uint)*pbVar10" identifier = (binary_expression "(uint)*pbVar10" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (if_statement "if (((ulonglong)dVar2 & 0x24000000000000) != 0) {\n        if (local_6c < 10) {\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }\nLAB_0005018c:\n        iVar11 = *param_3;\n        uVar12 = 1;\nLAB_0004fed0:\n        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);\n        if (bVar1 == 0) goto LAB_0004fd90;\n        if ((bVar1 & 2) != 0) {\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }\n        uVar12 = -uVar12;\n        goto LAB_0004fd90;\n      }" if (parenthesized_expression "(((ulonglong)dVar2 & 0x24000000000000) != 0)" ( (binary_expression "((ulonglong)dVar2 & 0x24000000000000) != 0" (parenthesized_expression "((ulonglong)dVar2 & 0x24000000000000)" ( (binary_expression "(ulonglong)dVar2 & 0x24000000000000" (cast_expression "(ulonglong)dVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n        if (local_6c < 10) {\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }\nLAB_0005018c:\n        iVar11 = *param_3;\n        uVar12 = 1;\nLAB_0004fed0:\n        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);\n        if (bVar1 == 0) goto LAB_0004fd90;\n        if ((bVar1 & 2) != 0) {\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }\n        uVar12 = -uVar12;\n        goto LAB_0004fd90;\n      }" { (if_statement "if (local_6c < 10) {\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }" if (parenthesized_expression "(local_6c < 10)" ( (binary_expression "local_6c < 10" identifier < number_literal) )) (compound_statement "{\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }" { (if_statement "if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }" if (parenthesized_expression "(local_6c != 0)" ( (binary_expression "local_6c != 0" identifier != number_literal) )) (compound_statement "{\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }" { (if_statement "if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }" if (parenthesized_expression "(local_6c == 7)" ( (binary_expression "local_6c == 7" identifier == number_literal) )) (compound_statement "{\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }" { (expression_statement "(*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);" (call_expression "(*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52c8 + 0x56a8))" ( (pointer_expression "*(code *)(PTR_LAB_000f52c8 + 0x56a8)" * (cast_expression "(code *)(PTR_LAB_000f52c8 + 0x56a8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52c8 + 0x56a8)" ( (binary_expression "PTR_LAB_000f52c8 + 0x56a8" identifier + number_literal) )))) )) (argument_list "(param_2 + uVar16,7,&local_68)" ( (binary_expression "param_2 + uVar16" identifier + identifier) , number_literal , (pointer_expression "&local_68" & identifier) ))) ;) (if_statement "if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }" if (parenthesized_expression "((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8))" ( (binary_expression "(double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)" (cast_expression "(double)CONCAT44(local_68,uStack_64)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(local_68,uStack_64)" identifier (argument_list "(local_68,uStack_64)" ( identifier , identifier )))) < (pointer_expression "*(double *)(puVar3 + 0x26c8)" * (cast_expression "(double *)(puVar3 + 0x26c8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x26c8)" ( (binary_expression "puVar3 + 0x26c8" identifier + number_literal) ))))) )) (compound_statement "{\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }" { (expression_statement "uVar12 = 0xffffffff;" (assignment_expression "uVar12 = 0xffffffff" identifier = number_literal) ;) (goto_statement "goto LAB_0004fecc;" goto statement_identifier ;) })) (if_statement "if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }" if (parenthesized_expression "((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0))" ( (binary_expression "(double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)" (cast_expression "(double)CONCAT44(local_68,uStack_64)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(local_68,uStack_64)" identifier (argument_list "(local_68,uStack_64)" ( identifier , identifier )))) < (pointer_expression "*(double *)(puVar3 + 0x26d0)" * (cast_expression "(double *)(puVar3 + 0x26d0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x26d0)" ( (binary_expression "puVar3 + 0x26d0" identifier + number_literal) ))))) )) (compound_statement "{\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }" { (expression_statement "iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));" (assignment_expression "iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4))" identifier = (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4))" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x1598))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x1598)" * (cast_expression "(code *)(PTR_LAB_000f52ec + -0x1598)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x1598)" ( (binary_expression "PTR_LAB_000f52ec + -0x1598" identifier + number_literal) )))) )) (argument_list "(*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4))" ( (pointer_expression "*(undefined4 *)pdVar17" * (cast_expression "(undefined4 *)pdVar17" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (pointer_expression "*(undefined4 *)((int)pdVar17 + 4)" * (cast_expression "(undefined4 *)((int)pdVar17 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pdVar17 + 4)" ( (binary_expression "(int)pdVar17 + 4" (cast_expression "(int)pdVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )))) ;) (expression_statement "uVar12 = -iVar11;" (assignment_expression "uVar12 = -iVar11" identifier = (unary_expression "-iVar11" - identifier)) ;) (goto_statement "goto LAB_0004fec4;" goto statement_identifier ;) })) (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;) (expression_statement "iVar11 = *param_3;" (assignment_expression "iVar11 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (goto_statement "goto LAB_0004fed0;" goto statement_identifier ;) })) (if_statement "if (local_6c < 7) {\n                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }" if (parenthesized_expression "(local_6c < 7)" ( (binary_expression "local_6c < 7" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }" { comment comment (expression_statement "uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();" (assignment_expression "uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))()" identifier = (call_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc))" * (cast_expression "(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc))" ( (binary_expression "&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)" * (cast_expression "(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)" ( (binary_expression "PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc" (binary_expression "PTR_DAT_000f52d4 + local_6c * 4" identifier + (binary_expression "local_6c * 4" identifier * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar15;" return identifier ;) })) (expression_statement "iVar11 = *(int *)pdVar17;" (assignment_expression "iVar11 = *(int *)pdVar17" identifier = (pointer_expression "*(int *)pdVar17" * (cast_expression "(int *)pdVar17" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }" if (parenthesized_expression "((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8))))" ( (binary_expression "(iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))" (parenthesized_expression "(iVar11 < 1)" ( (binary_expression "iVar11 < 1" identifier < number_literal) )) && (parenthesized_expression "((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))" ( (parenthesized_expression "(iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8))" ( (binary_expression "iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)" (binary_expression "iVar11 != 0" identifier != number_literal) || (parenthesized_expression "(*(uint *)((int)pdVar17 + 4) <= local_6c - 8)" ( (binary_expression "*(uint *)((int)pdVar17 + 4) <= local_6c - 8" (pointer_expression "*(uint *)((int)pdVar17 + 4)" * (cast_expression "(uint *)((int)pdVar17 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pdVar17 + 4)" ( (binary_expression "(int)pdVar17 + 4" (cast_expression "(int)pdVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) <= (binary_expression "local_6c - 8" identifier - number_literal)) ))) )) ))) )) (compound_statement "{\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }" { (if_statement "if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;" if (parenthesized_expression "((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))" ( (binary_expression "(iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8)))" (parenthesized_expression "(iVar11 < 0)" ( (binary_expression "iVar11 < 0" identifier < number_literal) )) || (parenthesized_expression "((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8)))" ( (parenthesized_expression "(iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))" ( (binary_expression "iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8)" (binary_expression "iVar11 == 0" identifier == number_literal) && (parenthesized_expression "(*(uint *)((int)pdVar17 + 4) < local_6c - 8)" ( (binary_expression "*(uint *)((int)pdVar17 + 4) < local_6c - 8" (pointer_expression "*(uint *)((int)pdVar17 + 4)" * (cast_expression "(uint *)((int)pdVar17 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pdVar17 + 4)" ( (binary_expression "(int)pdVar17 + 4" (cast_expression "(int)pdVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < (binary_expression "local_6c - 8" identifier - number_literal)) ))) )) ))) )) (goto_statement "goto LAB_0005018c;" goto statement_identifier ;)) (goto_statement "goto LAB_0004fd10;" goto statement_identifier ;) })) })) (goto_statement "goto LAB_00050270;" goto statement_identifier ;) })) (labeled_statement "LAB_0005018c:\n        iVar11 = *param_3;" statement_identifier : (expression_statement "iVar11 = *param_3;" (assignment_expression "iVar11 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;)) (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;) (labeled_statement "LAB_0004fed0:\n        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);" statement_identifier : (expression_statement "bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);" (assignment_expression "bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4)" identifier = (pointer_expression "*(byte *)(*(int *)(iVar11 + 0x10) + param_4)" * (cast_expression "(byte *)(*(int *)(iVar11 + 0x10) + param_4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar11 + 0x10) + param_4)" ( (binary_expression "*(int *)(iVar11 + 0x10) + param_4" (pointer_expression "*(int *)(iVar11 + 0x10)" * (cast_expression "(int *)(iVar11 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x10)" ( (binary_expression "iVar11 + 0x10" identifier + number_literal) )))) + identifier) ))))) ;)) (if_statement "if (bVar1 == 0) goto LAB_0004fd90;" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004fd90;" goto statement_identifier ;)) (if_statement "if ((bVar1 & 2) != 0) {\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }" if (parenthesized_expression "((bVar1 & 2) != 0)" ( (binary_expression "(bVar1 & 2) != 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }" { (if_statement "if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (compound_statement "{\n            bVar8 = 1;\n          }" { (expression_statement "bVar8 = 1;" (assignment_expression "bVar8 = 1" identifier = number_literal) ;) }) (else_clause "else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }" else (compound_statement "{\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }" { (expression_statement "bVar8 = *(byte *)((int)pdVar17 + 9) & 1;" (assignment_expression "bVar8 = *(byte *)((int)pdVar17 + 9) & 1" identifier = (binary_expression "*(byte *)((int)pdVar17 + 9) & 1" (pointer_expression "*(byte *)((int)pdVar17 + 9)" * (cast_expression "(byte *)((int)pdVar17 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pdVar17 + 9)" ( (binary_expression "(int)pdVar17 + 9" (cast_expression "(int)pdVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal)) ;) }))) (if_statement "if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;" if (parenthesized_expression "((bVar1 & 1) == bVar8)" ( (binary_expression "(bVar1 & 1) == bVar8" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) == identifier) )) (goto_statement "goto LAB_0004fd90;" goto statement_identifier ;)) })) (expression_statement "uVar12 = -uVar12;" (assignment_expression "uVar12 = -uVar12" identifier = (unary_expression "-uVar12" - identifier)) ;) (goto_statement "goto LAB_0004fd90;" goto statement_identifier ;) })) (if_statement "if (((ulonglong)dVar2 & 0x8000000000000) != 0) {\n        if (9 < local_6c) goto LAB_0005018c;\n        if (local_6c != 0) {\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        iVar11 = *param_3;\n        uVar12 = 0xffffffff;\n        goto LAB_0004fed0;\n      }" if (parenthesized_expression "(((ulonglong)dVar2 & 0x8000000000000) != 0)" ( (binary_expression "((ulonglong)dVar2 & 0x8000000000000) != 0" (parenthesized_expression "((ulonglong)dVar2 & 0x8000000000000)" ( (binary_expression "(ulonglong)dVar2 & 0x8000000000000" (cast_expression "(ulonglong)dVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n        if (9 < local_6c) goto LAB_0005018c;\n        if (local_6c != 0) {\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        iVar11 = *param_3;\n        uVar12 = 0xffffffff;\n        goto LAB_0004fed0;\n      }" { (if_statement "if (9 < local_6c) goto LAB_0005018c;" if (parenthesized_expression "(9 < local_6c)" ( (binary_expression "9 < local_6c" number_literal < identifier) )) (goto_statement "goto LAB_0005018c;" goto statement_identifier ;)) (if_statement "if (local_6c != 0) {\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }" if (parenthesized_expression "(local_6c != 0)" ( (binary_expression "local_6c != 0" identifier != number_literal) )) (compound_statement "{\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }" { (expression_statement "(*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);" (call_expression "(*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52c8 + 0x56a8))" ( (pointer_expression "*(code *)(PTR_LAB_000f52c8 + 0x56a8)" * (cast_expression "(code *)(PTR_LAB_000f52c8 + 0x56a8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52c8 + 0x56a8)" ( (binary_expression "PTR_LAB_000f52c8 + 0x56a8" identifier + number_literal) )))) )) (argument_list "(param_2 + uVar16,local_6c,&local_68)" ( (binary_expression "param_2 + uVar16" identifier + identifier) , identifier , (pointer_expression "&local_68" & identifier) ))) ;) (if_statement "if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }" if (parenthesized_expression "(local_6c == 7)" ( (binary_expression "local_6c == 7" identifier == number_literal) )) (compound_statement "{\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }" { (if_statement "if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }" if (parenthesized_expression "(*pdVar17 <= (double)CONCAT44(local_68,uStack_64))" ( (binary_expression "*pdVar17 <= (double)CONCAT44(local_68,uStack_64)" (pointer_expression "*pdVar17" * identifier) <= (cast_expression "(double)CONCAT44(local_68,uStack_64)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(local_68,uStack_64)" identifier (argument_list "(local_68,uStack_64)" ( identifier , identifier ))))) )) (compound_statement "{\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }" { (if_statement "if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;" if (parenthesized_expression "(*pdVar17 < (double)CONCAT44(local_68,uStack_64))" ( (binary_expression "*pdVar17 < (double)CONCAT44(local_68,uStack_64)" (pointer_expression "*pdVar17" * identifier) < (cast_expression "(double)CONCAT44(local_68,uStack_64)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(local_68,uStack_64)" identifier (argument_list "(local_68,uStack_64)" ( identifier , identifier ))))) )) (goto_statement "goto LAB_0005018c;" goto statement_identifier ;)) (if_statement "if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;" if (parenthesized_expression "(param_4 + 1U != (uint)*(ushort *)(param_3 + 2))" ( (binary_expression "param_4 + 1U != (uint)*(ushort *)(param_3 + 2)" (binary_expression "param_4 + 1U" identifier + number_literal) != (binary_expression "(uint)*(ushort *)(param_3 + 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(param_3 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 2)" ( (binary_expression "param_3 + 2" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0004ff38;" goto statement_identifier ;)) (goto_statement "goto LAB_0004fd84;" goto statement_identifier ;) })) }) (else_clause "else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }" else (compound_statement "{\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }" { (if_statement "if (*pdVar17 < dVar19) goto LAB_0005018c;" if (parenthesized_expression "(*pdVar17 < dVar19)" ( (binary_expression "*pdVar17 < dVar19" (pointer_expression "*pdVar17" * identifier) < identifier) )) (goto_statement "goto LAB_0005018c;" goto statement_identifier ;)) (if_statement "if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }" if (parenthesized_expression "(*pdVar17 < dVar18)" ( (binary_expression "*pdVar17 < dVar18" (pointer_expression "*pdVar17" * identifier) < identifier) )) (compound_statement "{\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }" { (expression_statement "uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);" (assignment_expression "uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64)" identifier = (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x1598))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x1598)" * (cast_expression "(code *)(PTR_LAB_000f52ec + -0x1598)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x1598)" ( (binary_expression "PTR_LAB_000f52ec + -0x1598" identifier + number_literal) )))) )) (argument_list "(local_68,uStack_64)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_0004fec4;" goto statement_identifier ;) })) }))) })) (labeled_statement "LAB_00050270:\n        iVar11 = *param_3;" statement_identifier : (expression_statement "iVar11 = *param_3;" (assignment_expression "iVar11 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;)) (expression_statement "uVar12 = 0xffffffff;" (assignment_expression "uVar12 = 0xffffffff" identifier = number_literal) ;) (goto_statement "goto LAB_0004fed0;" goto statement_identifier ;) })) (if_statement "if (((ulonglong)dVar2 & 0x2000000000000) != 0) {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if (local_6c < 0xc) goto LAB_00050270;\n        if ((local_6c & 1) == 0) goto LAB_0005018c;\n        uVar7 = local_6c - 0xc >> 1;\n        local_5c = uVar7;\n        if (uVar7 + uVar16 <= param_1) {\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        uVar9 = 0x14194;\n        goto LAB_0004fbfc;\n      }" if (parenthesized_expression "(((ulonglong)dVar2 & 0x2000000000000) != 0)" ( (binary_expression "((ulonglong)dVar2 & 0x2000000000000) != 0" (parenthesized_expression "((ulonglong)dVar2 & 0x2000000000000)" ( (binary_expression "(ulonglong)dVar2 & 0x2000000000000" (cast_expression "(ulonglong)dVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if (local_6c < 0xc) goto LAB_00050270;\n        if ((local_6c & 1) == 0) goto LAB_0005018c;\n        uVar7 = local_6c - 0xc >> 1;\n        local_5c = uVar7;\n        if (uVar7 + uVar16 <= param_1) {\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        uVar9 = 0x14194;\n        goto LAB_0004fbfc;\n      }" { (if_statement "if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }" if (parenthesized_expression "(0x7f < local_6c)" ( (binary_expression "0x7f < local_6c" number_literal < identifier) )) (compound_statement "{\n          (*pcVar5)(pbVar10,&local_6c);\n        }" { (expression_statement "(*pcVar5)(pbVar10,&local_6c);" (call_expression "(*pcVar5)(pbVar10,&local_6c)" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "(pbVar10,&local_6c)" ( identifier , (pointer_expression "&local_6c" & identifier) ))) ;) })) (if_statement "if (local_6c < 0xc) goto LAB_00050270;" if (parenthesized_expression "(local_6c < 0xc)" ( (binary_expression "local_6c < 0xc" identifier < number_literal) )) (goto_statement "goto LAB_00050270;" goto statement_identifier ;)) (if_statement "if ((local_6c & 1) == 0) goto LAB_0005018c;" if (parenthesized_expression "((local_6c & 1) == 0)" ( (binary_expression "(local_6c & 1) == 0" (parenthesized_expression "(local_6c & 1)" ( (binary_expression "local_6c & 1" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0005018c;" goto statement_identifier ;)) (expression_statement "uVar7 = local_6c - 0xc >> 1;" (assignment_expression "uVar7 = local_6c - 0xc >> 1" identifier = (binary_expression "local_6c - 0xc >> 1" (binary_expression "local_6c - 0xc" identifier - number_literal) >> number_literal)) ;) (expression_statement "local_5c = uVar7;" (assignment_expression "local_5c = uVar7" identifier = identifier) ;) (if_statement "if (uVar7 + uVar16 <= param_1) {\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }" if (parenthesized_expression "(uVar7 + uVar16 <= param_1)" ( (binary_expression "uVar7 + uVar16 <= param_1" (binary_expression "uVar7 + uVar16" identifier + identifier) <= identifier) )) (compound_statement "{\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }" { (expression_statement "iVar11 = *param_3;" (assignment_expression "iVar11 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (if_statement "if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }" if (parenthesized_expression "(param_4 < (int)(uint)*(ushort *)(iVar11 + 8))" ( (binary_expression "param_4 < (int)(uint)*(ushort *)(iVar11 + 8)" identifier < (binary_expression "(int)(uint)*(ushort *)(iVar11 + 8)" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(ushort *)(iVar11 + 8)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 8)" ( (binary_expression "iVar11 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }" { (expression_statement "iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);" (assignment_expression "iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4)" identifier = (pointer_expression "*(int *)(iVar11 + (param_4 + 4) * 4 + 4)" * (cast_expression "(int *)(iVar11 + (param_4 + 4) * 4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + (param_4 + 4) * 4 + 4)" ( (binary_expression "iVar11 + (param_4 + 4) * 4 + 4" (binary_expression "iVar11 + (param_4 + 4) * 4" identifier + (binary_expression "(param_4 + 4) * 4" (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) )) * number_literal)) + number_literal) ))))) ;) (if_statement "if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }" { (expression_statement "uVar14 = *(uint *)((int)pdVar17 + 0xc);" (assignment_expression "uVar14 = *(uint *)((int)pdVar17 + 0xc)" identifier = (pointer_expression "*(uint *)((int)pdVar17 + 0xc)" * (cast_expression "(uint *)((int)pdVar17 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pdVar17 + 0xc)" ( (binary_expression "(int)pdVar17 + 0xc" (cast_expression "(int)pdVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar12 = uVar14;" (assignment_expression "uVar12 = uVar14" identifier = identifier) ;) (if_statement "if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }" if (parenthesized_expression "((int)uVar7 <= (int)uVar14)" ( (binary_expression "(int)uVar7 <= (int)uVar14" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                uVar12 = uVar7;\n              }" { (expression_statement "uVar12 = uVar7;" (assignment_expression "uVar12 = uVar7" identifier = identifier) ;) })) (expression_statement "uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);" (assignment_expression "uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12)" identifier = (call_expression "(*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12)" (parenthesized_expression "(*(code *)PTR_memcmp_000f5554)" ( (pointer_expression "*(code *)PTR_memcmp_000f5554" * (cast_expression "(code *)PTR_memcmp_000f5554" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12)" ( (binary_expression "param_2 + uVar16" identifier + identifier) , (pointer_expression "*(undefined4 *)(pdVar17 + 2)" * (cast_expression "(undefined4 *)(pdVar17 + 2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pdVar17 + 2)" ( (binary_expression "pdVar17 + 2" identifier + number_literal) )))) , identifier )))) ;) (if_statement "if (uVar12 != 0) goto LAB_0004fed0;" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004fed0;" goto statement_identifier ;)) (expression_statement "uVar12 = uVar7 - uVar14;" (assignment_expression "uVar12 = uVar7 - uVar14" identifier = (binary_expression "uVar7 - uVar14" identifier - identifier)) ;) }) (else_clause "else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }" else (compound_statement "{\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }" { (expression_statement "local_5e = *(undefined1 *)(iVar11 + 4);" (assignment_expression "local_5e = *(undefined1 *)(iVar11 + 4)" identifier = (pointer_expression "*(undefined1 *)(iVar11 + 4)" * (cast_expression "(undefined1 *)(iVar11 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) ))))) ;) (expression_statement "local_48 = *(undefined4 *)(iVar11 + 0xc);" (assignment_expression "local_48 = *(undefined4 *)(iVar11 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(iVar11 + 0xc)" * (cast_expression "(undefined4 *)(iVar11 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0xc)" ( (binary_expression "iVar11 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "local_60 = 2;" (assignment_expression "local_60 = 2" identifier = number_literal) ;) (expression_statement "local_58 = param_2 + uVar16;" (assignment_expression "local_58 = param_2 + uVar16" identifier = (binary_expression "param_2 + uVar16" identifier + identifier)) ;) (expression_statement "uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);" (assignment_expression "uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb)" identifier = (call_expression "FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb)" identifier (argument_list "(&local_68,pdVar17,iVar13,(int)param_3 + 0xb)" ( (pointer_expression "&local_68" & identifier) , identifier , identifier , (binary_expression "(int)param_3 + 0xb" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }))) (goto_statement "goto LAB_0004fec4;" goto statement_identifier ;) })) })) (expression_statement "uVar9 = 0x14194;" (assignment_expression "uVar9 = 0x14194" identifier = number_literal) ;) (goto_statement "goto LAB_0004fbfc;" goto statement_identifier ;) })) (if_statement "if (((ulonglong)dVar2 & 0x10000000000000) == 0) {\n        uVar12 = (uint)(local_6c != 0);\n      }\n      else {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;\n        uVar7 = local_6c - 0xc >> 1;\n        if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }\n      }" if (parenthesized_expression "(((ulonglong)dVar2 & 0x10000000000000) == 0)" ( (binary_expression "((ulonglong)dVar2 & 0x10000000000000) == 0" (parenthesized_expression "((ulonglong)dVar2 & 0x10000000000000)" ( (binary_expression "(ulonglong)dVar2 & 0x10000000000000" (cast_expression "(ulonglong)dVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n        uVar12 = (uint)(local_6c != 0);\n      }" { (expression_statement "uVar12 = (uint)(local_6c != 0);" (assignment_expression "uVar12 = (uint)(local_6c != 0)" identifier = (call_expression "(uint)(local_6c != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_6c != 0)" ( (binary_expression "local_6c != 0" identifier != number_literal) )))) ;) }) (else_clause "else {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;\n        uVar7 = local_6c - 0xc >> 1;\n        if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }\n      }" else (compound_statement "{\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;\n        uVar7 = local_6c - 0xc >> 1;\n        if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }\n      }" { (if_statement "if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }" if (parenthesized_expression "(0x7f < local_6c)" ( (binary_expression "0x7f < local_6c" number_literal < identifier) )) (compound_statement "{\n          (*pcVar5)(pbVar10,&local_6c);\n        }" { (expression_statement "(*pcVar5)(pbVar10,&local_6c);" (call_expression "(*pcVar5)(pbVar10,&local_6c)" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "(pbVar10,&local_6c)" ( identifier , (pointer_expression "&local_6c" & identifier) ))) ;) })) (if_statement "if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;" if (parenthesized_expression "((local_6c < 0xc) || ((local_6c & 1) != 0))" ( (binary_expression "(local_6c < 0xc) || ((local_6c & 1) != 0)" (parenthesized_expression "(local_6c < 0xc)" ( (binary_expression "local_6c < 0xc" identifier < number_literal) )) || (parenthesized_expression "((local_6c & 1) != 0)" ( (binary_expression "(local_6c & 1) != 0" (parenthesized_expression "(local_6c & 1)" ( (binary_expression "local_6c & 1" identifier & number_literal) )) != number_literal) ))) )) (goto_statement "goto LAB_00050270;" goto statement_identifier ;)) (expression_statement "uVar7 = local_6c - 0xc >> 1;" (assignment_expression "uVar7 = local_6c - 0xc >> 1" identifier = (binary_expression "local_6c - 0xc >> 1" (binary_expression "local_6c - 0xc" identifier - number_literal) >> number_literal)) ;) (if_statement "if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }" if (parenthesized_expression "(param_1 < uVar7 + uVar16)" ( (binary_expression "param_1 < uVar7 + uVar16" identifier < (binary_expression "uVar7 + uVar16" identifier + identifier)) )) (compound_statement "{\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }" { (expression_statement "uVar9 = 0x141b2;" (assignment_expression "uVar9 = 0x141b2" identifier = number_literal) ;) (goto_statement "goto LAB_0004fbfc;" goto statement_identifier ;) })) (if_statement "if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }" if (parenthesized_expression "(((ulonglong)pdVar17[1] & 0x4000000000000000) == 0)" ( (binary_expression "((ulonglong)pdVar17[1] & 0x4000000000000000) == 0" (parenthesized_expression "((ulonglong)pdVar17[1] & 0x4000000000000000)" ( (binary_expression "(ulonglong)pdVar17[1] & 0x4000000000000000" (cast_expression "(ulonglong)pdVar17[1]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "pdVar17[1]" identifier [ number_literal ])) & number_literal) )) == number_literal) )) (compound_statement "{\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }" { (expression_statement "uVar14 = *(uint *)((int)pdVar17 + 0xc);" (assignment_expression "uVar14 = *(uint *)((int)pdVar17 + 0xc)" identifier = (pointer_expression "*(uint *)((int)pdVar17 + 0xc)" * (cast_expression "(uint *)((int)pdVar17 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pdVar17 + 0xc)" ( (binary_expression "(int)pdVar17 + 0xc" (cast_expression "(int)pdVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar12 = uVar7;" (assignment_expression "uVar12 = uVar7" identifier = identifier) ;) (if_statement "if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }" if (parenthesized_expression "((int)uVar14 <= (int)uVar7)" ( (binary_expression "(int)uVar14 <= (int)uVar7" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar12 = uVar14;\n          }" { (expression_statement "uVar12 = uVar14;" (assignment_expression "uVar12 = uVar14" identifier = identifier) ;) })) (expression_statement "uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);" (assignment_expression "uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12)" identifier = (call_expression "(*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12)" (parenthesized_expression "(*(code *)PTR_memcmp_000f5554)" ( (pointer_expression "*(code *)PTR_memcmp_000f5554" * (cast_expression "(code *)PTR_memcmp_000f5554" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12)" ( (binary_expression "param_2 + uVar16" identifier + identifier) , (pointer_expression "*(undefined4 *)(pdVar17 + 2)" * (cast_expression "(undefined4 *)(pdVar17 + 2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pdVar17 + 2)" ( (binary_expression "pdVar17 + 2" identifier + number_literal) )))) , identifier )))) ;) (if_statement "if (uVar12 != 0) goto LAB_0004fecc;" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004fecc;" goto statement_identifier ;)) (expression_statement "uVar12 = uVar7 - uVar14;" (assignment_expression "uVar12 = uVar7 - uVar14" identifier = (binary_expression "uVar7 - uVar14" identifier - identifier)) ;) }) (else_clause "else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }" else (compound_statement "{\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }" { (if_statement "if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (compound_statement "{\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }" { (if_statement "if (param_2[uVar16] != 0) goto LAB_0005018c;" if (parenthesized_expression "(param_2[uVar16] != 0)" ( (binary_expression "param_2[uVar16] != 0" (subscript_expression "param_2[uVar16]" identifier [ identifier ]) != number_literal) )) (goto_statement "goto LAB_0005018c;" goto statement_identifier ;)) (expression_statement "pbVar10 = param_2 + uVar16 + 1;" (assignment_expression "pbVar10 = param_2 + uVar16 + 1" identifier = (binary_expression "param_2 + uVar16 + 1" (binary_expression "param_2 + uVar16" identifier + identifier) + number_literal)) ;) (while_statement "while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }" while (parenthesized_expression "(param_2 + uVar16 + uVar7 != pbVar10)" ( (binary_expression "param_2 + uVar16 + uVar7 != pbVar10" (binary_expression "param_2 + uVar16 + uVar7" (binary_expression "param_2 + uVar16" identifier + identifier) + identifier) != identifier) )) (compound_statement "{\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }" { (expression_statement "bVar1 = *pbVar10;" (assignment_expression "bVar1 = *pbVar10" identifier = (pointer_expression "*pbVar10" * identifier)) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1 != 0) goto LAB_0005018c;" if (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0005018c;" goto statement_identifier ;)) })) })) (expression_statement "uVar12 = uVar7 - *(int *)pdVar17;" (assignment_expression "uVar12 = uVar7 - *(int *)pdVar17" identifier = (binary_expression "uVar7 - *(int *)pdVar17" identifier - (pointer_expression "*(int *)pdVar17" * (cast_expression "(int *)pdVar17" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)))) ;) }))) }))) (labeled_statement "LAB_0004fec4:\n      if (uVar12 != 0) {\nLAB_0004fecc:\n        iVar11 = *param_3;\n        goto LAB_0004fed0;\n      }" statement_identifier : (if_statement "if (uVar12 != 0) {\nLAB_0004fecc:\n        iVar11 = *param_3;\n        goto LAB_0004fed0;\n      }" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0004fecc:\n        iVar11 = *param_3;\n        goto LAB_0004fed0;\n      }" { (labeled_statement "LAB_0004fecc:\n        iVar11 = *param_3;" statement_identifier : (expression_statement "iVar11 = *param_3;" (assignment_expression "iVar11 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;)) (goto_statement "goto LAB_0004fed0;" goto statement_identifier ;) }))) (labeled_statement "LAB_0004fd10:\n      if ((uint)*(ushort *)(param_3 + 2) == param_4 + 1U) goto LAB_0004fd84;" statement_identifier : (if_statement "if ((uint)*(ushort *)(param_3 + 2) == param_4 + 1U) goto LAB_0004fd84;" if (parenthesized_expression "((uint)*(ushort *)(param_3 + 2) == param_4 + 1U)" ( (binary_expression "(uint)*(ushort *)(param_3 + 2) == param_4 + 1U" (binary_expression "(uint)*(ushort *)(param_3 + 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(param_3 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 2)" ( (binary_expression "param_3 + 2" identifier + number_literal) )))) == (binary_expression "param_4 + 1U" identifier + number_literal)) )) (goto_statement "goto LAB_0004fd84;" goto statement_identifier ;))) (if_statement "if (local_6c < 0x80) {\nLAB_0004ff38:\n        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];\n      }\n      else {\n        uVar7 = local_6c - 0xc >> 1;\n      }" if (parenthesized_expression "(local_6c < 0x80)" ( (binary_expression "local_6c < 0x80" identifier < number_literal) )) (compound_statement "{\nLAB_0004ff38:\n        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];\n      }" { (labeled_statement "LAB_0004ff38:\n        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];" statement_identifier : (expression_statement "uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];" (assignment_expression "uVar7 = (uint)(byte)puVar3[local_6c + 0x2208]" identifier = (cast_expression "(uint)(byte)puVar3[local_6c + 0x2208]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar3[local_6c + 0x2208]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar3[local_6c + 0x2208]" identifier [ (binary_expression "local_6c + 0x2208" identifier + number_literal) ])))) ;)) }) (else_clause "else {\n        uVar7 = local_6c - 0xc >> 1;\n      }" else (compound_statement "{\n        uVar7 = local_6c - 0xc >> 1;\n      }" { (expression_statement "uVar7 = local_6c - 0xc >> 1;" (assignment_expression "uVar7 = local_6c - 0xc >> 1" identifier = (binary_expression "local_6c - 0xc >> 1" (binary_expression "local_6c - 0xc" identifier - number_literal) >> number_literal)) ;) }))) (expression_statement "param_4 = param_4 + 1;" (assignment_expression "param_4 = param_4 + 1" identifier = (binary_expression "param_4 + 1" identifier + number_literal)) ;) (expression_statement "uVar16 = uVar16 + uVar7;" (assignment_expression "uVar16 = uVar16 + uVar7" identifier = (binary_expression "uVar16 + uVar7" identifier + identifier)) ;) (expression_statement "iVar11 = 1;" (assignment_expression "iVar11 = 1" identifier = number_literal) ;) (expression_statement "uVar7 = local_6c;" (assignment_expression "uVar7 = local_6c" identifier = identifier) ;) (while_statement "while (uVar7 = uVar7 >> 7, uVar7 != 0) {\n        iVar11 = iVar11 + 1;\n      }" while (parenthesized_expression "(uVar7 = uVar7 >> 7, uVar7 != 0)" ( (comma_expression "uVar7 = uVar7 >> 7, uVar7 != 0" (assignment_expression "uVar7 = uVar7 >> 7" identifier = (binary_expression "uVar7 >> 7" identifier >> number_literal)) , (binary_expression "uVar7 != 0" identifier != number_literal)) )) (compound_statement "{\n        iVar11 = iVar11 + 1;\n      }" { (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar15 = uVar15 + iVar11;" (assignment_expression "uVar15 = uVar15 + iVar11" identifier = (binary_expression "uVar15 + iVar11" identifier + identifier)) ;) (if_statement "if ((local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16)) goto LAB_0004fd84;" if (parenthesized_expression "((local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16))" ( (binary_expression "(local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16)" (parenthesized_expression "(local_70 <= uVar15)" ( (binary_expression "local_70 <= uVar15" identifier <= identifier) )) || (parenthesized_expression "(pdVar17 = pdVar17 + 5, param_1 < uVar16)" ( (comma_expression "pdVar17 = pdVar17 + 5, param_1 < uVar16" (assignment_expression "pdVar17 = pdVar17 + 5" identifier = (binary_expression "pdVar17 + 5" identifier + number_literal)) , (binary_expression "param_1 < uVar16" identifier < identifier)) ))) )) (goto_statement "goto LAB_0004fd84;" goto statement_identifier ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "uVar9 = 0x14147;" (assignment_expression "uVar9 = 0x14147" identifier = number_literal) ;) (labeled_statement "LAB_0004fbfc:\n  uVar6 = FUN_00044904(uVar9);" statement_identifier : (expression_statement "uVar6 = FUN_00044904(uVar9);" (assignment_expression "uVar6 = FUN_00044904(uVar9)" identifier = (call_expression "FUN_00044904(uVar9)" identifier (argument_list "(uVar9)" ( identifier )))) ;)) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "*(undefined1 *)((int)param_3 + 0xb) = uVar6;" (assignment_expression "*(undefined1 *)((int)param_3 + 0xb) = uVar6" (pointer_expression "*(undefined1 *)((int)param_3 + 0xb)" * (cast_expression "(undefined1 *)((int)param_3 + 0xb)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 + 0xb)" ( (binary_expression "(int)param_3 + 0xb" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (labeled_statement "LAB_0004fd90:\n  if (local_3c == *(int *)puVar4) {\n    return uVar12;\n  }" statement_identifier : (if_statement "if (local_3c == *(int *)puVar4) {\n    return uVar12;\n  }" if (parenthesized_expression "(local_3c == *(int *)puVar4)" ( (binary_expression "local_3c == *(int *)puVar4" identifier == (pointer_expression "*(int *)puVar4" * (cast_expression "(int *)puVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return uVar12;\n  }" { (return_statement "return uVar12;" return identifier ;) }))) (expression_statement "(*(code *)PTR___stack_chk_fail_000f5540)();" (call_expression "(*(code *)PTR___stack_chk_fail_000f5540)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000f5540)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000f5540" * (cast_expression "(code *)PTR___stack_chk_fail_000f5540" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "uVar15 = FUN_0004fb4c();" (assignment_expression "uVar15 = FUN_0004fb4c()" identifier = (call_expression "FUN_0004fb4c()" identifier (argument_list "()" ( )))) ;) (return_statement "return uVar15;" return identifier ;) (labeled_statement "LAB_0004fd84:\n  uVar12 = (uint)*(char *)((int)param_3 + 10);" statement_identifier : (expression_statement "uVar12 = (uint)*(char *)((int)param_3 + 10);" (assignment_expression "uVar12 = (uint)*(char *)((int)param_3 + 10)" identifier = (binary_expression "(uint)*(char *)((int)param_3 + 10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(char *)((int)param_3 + 10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 + 10)" ( (binary_expression "(int)param_3 + 10" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;)) (expression_statement "*(undefined1 *)((int)param_3 + 0xe) = 1;" (assignment_expression "*(undefined1 *)((int)param_3 + 0xe) = 1" (pointer_expression "*(undefined1 *)((int)param_3 + 0xe)" * (cast_expression "(undefined1 *)((int)param_3 + 0xe)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 + 0xe)" ( (binary_expression "(int)param_3 + 0xe" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_0004fd90;" goto statement_identifier ;) })))
(translation_unit "int sqlite3VdbeRecordCompareWithSkip(int nKey1,void *pKey1,UnpackedRecord *pPKey2,int bSkip)\n\n{\n  char cVar1;\n  byte bVar2;\n  ushort uVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  int iVar6;\n  code *pcVar7;\n  uint uVar8;\n  char *pcVar9;\n  byte bVar10;\n  undefined4 uVar11;\n  int iVar12;\n  byte *pbVar13;\n  void *pKey1_00;\n  Mem *pMVar14;\n  Mem *pMVar15;\n  KeyInfo *pKVar16;\n  Mem *pMVar17;\n  uint uVar18;\n  uint uVar19;\n  Mem *pMem2;\n  double dVar20;\n  double dVar21;\n  u32 szHdr1;\n  u32 serial_type;\n  Mem mem1;\n  \n  puVar5 = PTR___stack_chk_guard_000f5568;\n  iVar6 = *(int *)PTR___stack_chk_guard_000f5568;\n  pMem2 = pPKey2->aMem;\n  pMVar14 = (Mem *)pPKey2;\n  if (bSkip == 0) {\n                    /* WARNING: Load size is inaccurate */\n    bVar2 = *pKey1;\n    if ((char)bVar2 < '\0') {\n      uVar18 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(pKey1,&szHdr1);\n      uVar19 = szHdr1;\n    }\n    else {\n      uVar18 = 1;\n      uVar19 = (uint)bVar2;\n      szHdr1 = (uint)bVar2;\n    }\n  }\n  else {\n    uVar18 = 2;\n    if ((char)*(byte *)((int)pKey1 + 1) < '\0') {\n      iVar12 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))((int)pKey1 + 1,&mem1);\n      uVar18 = iVar12 + 1;\n                    /* WARNING: Load size is inaccurate */\n      szHdr1 = (u32)*pKey1;\n      uVar11 = mem1.u.nZero;\n      if (mem1.u.zPType < (char *)0x80) goto LAB_0004fbd0;\n      uVar19 = (mem1.u.nZero - 0xcU >> 1) + szHdr1;\n    }\n    else {\n                    /* WARNING: Load size is inaccurate */\n      szHdr1 = (u32)*pKey1;\n      uVar11 = (int)(char *)(uint)*(byte *)((int)pKey1 + 1);\nLAB_0004fbd0:\n      uVar19 = *(byte *)((int)uVar11 + (int)(PTR_yy_shift_ofst_376__000f52d4 + 0x2208)) + szHdr1;\n    }\n    pMem2 = pMem2 + 1;\n  }\n  puVar4 = PTR_yy_shift_ofst_376__000f52d4;\n  if (uVar19 <= (uint)nKey1) {\n    dVar21 = *(double *)(PTR_yy_shift_ofst_376__000f52d4 + 0x26c8);\n    dVar20 = *(double *)(PTR_yy_shift_ofst_376__000f52d4 + 0x26d0);\n    pcVar7 = (code *)(PTR_LAB_000f52ec + -0x46ac);\n    do {\n      uVar3 = pMem2->flags;\n      uVar8 = (uint)uVar3;\n      pbVar13 = (byte *)((int)pKey1 + uVar18);\n      pMVar14 = (Mem *)(uVar8 & 0x24);\n      serial_type = (u32)*pbVar13;\n      if ((uVar3 & 0x24) != 0) {\n        if (9 < serial_type) goto LAB_0005018c;\n        if (serial_type == 0) goto LAB_00050270;\n        if (serial_type != 7) {\n          if (serial_type < 7) {\n                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */\n                    /* WARNING: Treating indirect jump as call */\n            iVar6 = (*(code *)(&_gp + *(int *)(PTR_yy_shift_ofst_376__000f52d4 +\n                                              serial_type * 4 + -0x31cc)))();\n            return iVar6;\n          }\n          iVar6 = FUN_0004fce4((int)pKey1 + uVar19,serial_type - 8);\n          return iVar6;\n        }\n        (*(code *)(PTR_LAB_000f52c8 + 0x56a8))((int)pKey1 + uVar19,7,&mem1);\n        pMVar14 = (Mem *)mem1.u.nZero;\n        if ((double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_) < *(double *)(puVar4 + 0x26c8)) {\n          pKey1_00 = (void *)0xffffffff;\n          goto LAB_0004fecc;\n        }\n        if ((double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_) < *(double *)(puVar4 + 0x26d0)) {\n          iVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                             ((pMem2->u).nZero,*(undefined4 *)((int)&pMem2->u + 4));\n          pKey1_00 = (void *)-iVar12;\n          goto LAB_0004fec4;\n        }\n        pKey1_00 = (void *)0x1;\n        pKVar16 = pPKey2->pKeyInfo;\nLAB_0004fed0:\n        bVar2 = pKVar16->aSortFlags[bSkip];\n        if (bVar2 == 0) goto LAB_0004fd90;\n        if ((bVar2 & 2) != 0) {\n          if (serial_type == 0) {\n            bVar10 = 1;\n          }\n          else {\n            bVar10 = (byte)pMem2->flags & 1;\n          }\n          if ((bVar2 & 1) == bVar10) goto LAB_0004fd90;\n        }\n        pKey1_00 = (void *)-(int)pKey1_00;\n        goto LAB_0004fd90;\n      }\n      pMVar14 = (Mem *)(uVar8 & 8);\n      if ((uVar3 & 8) != 0) {\n        if (9 < serial_type) {\nLAB_0005018c:\n          pKVar16 = pPKey2->pKeyInfo;\n          pKey1_00 = (void *)0x1;\n          goto LAB_0004fed0;\n        }\n        if (serial_type != 0) {\n          pMVar14 = &mem1;\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))((int)pKey1 + uVar19);\n          if (serial_type == 7) {\n            if ((pMem2->u).r <= (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) {\n              if ((pMem2->u).r < (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) goto LAB_0005018c;\n              if (bSkip + 1U != (uint)pPKey2->nField) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            pMVar14 = (Mem *)(pMem2->u).pDef;\n            if ((pMem2->u).r < dVar21) goto LAB_0005018c;\n            if ((pMem2->u).r < dVar20) {\n              pKey1_00 = (void *)(*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                           (mem1.u.nZero,mem1.u.i._4_4_);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        pKVar16 = pPKey2->pKeyInfo;\n        pKey1_00 = (void *)0xffffffff;\n        goto LAB_0004fed0;\n      }\n      pMVar14 = (Mem *)(uVar8 & 2);\n      if ((uVar3 & 2) != 0) {\n        if (0x7f < serial_type) {\n          (*pcVar7)(pbVar13,&serial_type);\n        }\n        if (serial_type < 0xc) goto LAB_00050270;\n        if ((serial_type & 1) == 0) goto LAB_0005018c;\n        pMVar15 = (Mem *)(serial_type - 0xc >> 1);\n        mem1.n = (int)pMVar15;\n        if ((int)&pMVar15->u + uVar19 <= (uint)nKey1) {\n          pKVar16 = pPKey2->pKeyInfo;\n          if (bSkip < (int)(uint)pKVar16->nAllField) {\n            pMVar14 = (Mem *)pKVar16->aColl[bSkip];\n            if (pMVar14 == (Mem *)0x0) {\n              pMVar17 = (Mem *)pMem2->n;\n              pMVar14 = pMVar17;\n              if ((int)pMVar15 <= (int)pMVar17) {\n                pMVar14 = pMVar15;\n              }\n              pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)\n                                           ((char *)((int)pKey1 + uVar19),pMem2->z);\n              if (pKey1_00 != (void *)0x0) goto LAB_0004fed0;\n              pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);\n            }\n            else {\n              mem1.enc = pKVar16->enc;\n              mem1.db = pKVar16->db;\n              mem1.flags = 2;\n              mem1.z = (char *)((int)pKey1 + uVar19);\n              pKey1_00 = (void *)vdbeCompareMemString\n                                           (&mem1,pMem2,(CollSeq *)pMVar14,&pPKey2->errCode);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        iVar12 = 0x14194;\n        goto LAB_0004fbfc;\n      }\n      if ((uVar3 & 0x10) == 0) {\n        pKey1_00 = (void *)(uint)(serial_type != 0);\n      }\n      else {\n        if (0x7f < serial_type) {\n          (*pcVar7)(pbVar13,&serial_type);\n        }\n        if ((serial_type < 0xc) || ((serial_type & 1) != 0)) goto LAB_00050270;\n        pMVar15 = (Mem *)(serial_type - 0xc >> 1);\n        if ((uint)nKey1 < (int)&pMVar15->u + uVar19) {\n          iVar12 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if ((pMem2->flags & 0x4000) == 0) {\n          pMVar17 = (Mem *)pMem2->n;\n          pMVar14 = pMVar15;\n          if ((int)pMVar17 <= (int)pMVar15) {\n            pMVar14 = pMVar17;\n          }\n          pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)((int)pKey1 + uVar19,pMem2->z);\n          if (pKey1_00 != (void *)0x0) goto LAB_0004fecc;\n          pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);\n        }\n        else {\n          if (pMVar15 != (Mem *)0x0) {\n            if (*(char *)((int)pKey1 + uVar19) != '\0') goto LAB_0005018c;\n            pcVar9 = (char *)((int)pKey1 + uVar19 + 1);\n            while ((char *)((int)pKey1 + uVar19) + (int)pMVar15 != pcVar9) {\n              cVar1 = *pcVar9;\n              pcVar9 = pcVar9 + 1;\n              if (cVar1 != '\0') goto LAB_0005018c;\n            }\n          }\n          pKey1_00 = (void *)((int)pMVar15 - (pMem2->u).nZero);\n        }\n      }\nLAB_0004fec4:\n      if (pKey1_00 != (void *)0x0) {\nLAB_0004fecc:\n        pKVar16 = pPKey2->pKeyInfo;\n        goto LAB_0004fed0;\n      }\n      if ((uint)pPKey2->nField == bSkip + 1U) goto LAB_0004fd84;\n      if (serial_type < 0x80) {\nLAB_0004ff38:\n        uVar8 = (uint)(byte)puVar4[serial_type + 0x2208];\n      }\n      else {\n        uVar8 = serial_type - 0xc >> 1;\n      }\n      bSkip = bSkip + 1;\n      uVar19 = uVar19 + uVar8;\n      iVar12 = 1;\n      uVar8 = serial_type;\n      while (uVar8 = uVar8 >> 7, uVar8 != 0) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar18 = uVar18 + iVar12;\n      if ((szHdr1 <= uVar18) || (pMem2 = pMem2 + 1, (uint)nKey1 < uVar19)) goto LAB_0004fd84;\n    } while( true );\n  }\n  iVar12 = 0x14147;\nLAB_0004fbfc:\n  iVar12 = sqlite3CorruptError(iVar12);\n  pKey1_00 = (void *)0x0;\n  pPKey2->errCode = (u8)iVar12;\nLAB_0004fd90:\n  if (iVar6 == *(int *)puVar5) {\n    return (int)pKey1_00;\n  }\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  iVar6 = sqlite3VdbeRecordCompareWithSkip(iVar6,pKey1_00,(UnpackedRecord *)pMVar14,0);\n  return iVar6;\nLAB_0004fd84:\n  pKey1_00 = (void *)(int)pPKey2->default_rc;\n  pPKey2->eqSeen = '\x01';\n  goto LAB_0004fd90;\n}\n\n" (function_definition "int sqlite3VdbeRecordCompareWithSkip(int nKey1,void *pKey1,UnpackedRecord *pPKey2,int bSkip)\n\n{\n  char cVar1;\n  byte bVar2;\n  ushort uVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  int iVar6;\n  code *pcVar7;\n  uint uVar8;\n  char *pcVar9;\n  byte bVar10;\n  undefined4 uVar11;\n  int iVar12;\n  byte *pbVar13;\n  void *pKey1_00;\n  Mem *pMVar14;\n  Mem *pMVar15;\n  KeyInfo *pKVar16;\n  Mem *pMVar17;\n  uint uVar18;\n  uint uVar19;\n  Mem *pMem2;\n  double dVar20;\n  double dVar21;\n  u32 szHdr1;\n  u32 serial_type;\n  Mem mem1;\n  \n  puVar5 = PTR___stack_chk_guard_000f5568;\n  iVar6 = *(int *)PTR___stack_chk_guard_000f5568;\n  pMem2 = pPKey2->aMem;\n  pMVar14 = (Mem *)pPKey2;\n  if (bSkip == 0) {\n                    /* WARNING: Load size is inaccurate */\n    bVar2 = *pKey1;\n    if ((char)bVar2 < '\0') {\n      uVar18 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(pKey1,&szHdr1);\n      uVar19 = szHdr1;\n    }\n    else {\n      uVar18 = 1;\n      uVar19 = (uint)bVar2;\n      szHdr1 = (uint)bVar2;\n    }\n  }\n  else {\n    uVar18 = 2;\n    if ((char)*(byte *)((int)pKey1 + 1) < '\0') {\n      iVar12 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))((int)pKey1 + 1,&mem1);\n      uVar18 = iVar12 + 1;\n                    /* WARNING: Load size is inaccurate */\n      szHdr1 = (u32)*pKey1;\n      uVar11 = mem1.u.nZero;\n      if (mem1.u.zPType < (char *)0x80) goto LAB_0004fbd0;\n      uVar19 = (mem1.u.nZero - 0xcU >> 1) + szHdr1;\n    }\n    else {\n                    /* WARNING: Load size is inaccurate */\n      szHdr1 = (u32)*pKey1;\n      uVar11 = (int)(char *)(uint)*(byte *)((int)pKey1 + 1);\nLAB_0004fbd0:\n      uVar19 = *(byte *)((int)uVar11 + (int)(PTR_yy_shift_ofst_376__000f52d4 + 0x2208)) + szHdr1;\n    }\n    pMem2 = pMem2 + 1;\n  }\n  puVar4 = PTR_yy_shift_ofst_376__000f52d4;\n  if (uVar19 <= (uint)nKey1) {\n    dVar21 = *(double *)(PTR_yy_shift_ofst_376__000f52d4 + 0x26c8);\n    dVar20 = *(double *)(PTR_yy_shift_ofst_376__000f52d4 + 0x26d0);\n    pcVar7 = (code *)(PTR_LAB_000f52ec + -0x46ac);\n    do {\n      uVar3 = pMem2->flags;\n      uVar8 = (uint)uVar3;\n      pbVar13 = (byte *)((int)pKey1 + uVar18);\n      pMVar14 = (Mem *)(uVar8 & 0x24);\n      serial_type = (u32)*pbVar13;\n      if ((uVar3 & 0x24) != 0) {\n        if (9 < serial_type) goto LAB_0005018c;\n        if (serial_type == 0) goto LAB_00050270;\n        if (serial_type != 7) {\n          if (serial_type < 7) {\n                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */\n                    /* WARNING: Treating indirect jump as call */\n            iVar6 = (*(code *)(&_gp + *(int *)(PTR_yy_shift_ofst_376__000f52d4 +\n                                              serial_type * 4 + -0x31cc)))();\n            return iVar6;\n          }\n          iVar6 = FUN_0004fce4((int)pKey1 + uVar19,serial_type - 8);\n          return iVar6;\n        }\n        (*(code *)(PTR_LAB_000f52c8 + 0x56a8))((int)pKey1 + uVar19,7,&mem1);\n        pMVar14 = (Mem *)mem1.u.nZero;\n        if ((double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_) < *(double *)(puVar4 + 0x26c8)) {\n          pKey1_00 = (void *)0xffffffff;\n          goto LAB_0004fecc;\n        }\n        if ((double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_) < *(double *)(puVar4 + 0x26d0)) {\n          iVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                             ((pMem2->u).nZero,*(undefined4 *)((int)&pMem2->u + 4));\n          pKey1_00 = (void *)-iVar12;\n          goto LAB_0004fec4;\n        }\n        pKey1_00 = (void *)0x1;\n        pKVar16 = pPKey2->pKeyInfo;\nLAB_0004fed0:\n        bVar2 = pKVar16->aSortFlags[bSkip];\n        if (bVar2 == 0) goto LAB_0004fd90;\n        if ((bVar2 & 2) != 0) {\n          if (serial_type == 0) {\n            bVar10 = 1;\n          }\n          else {\n            bVar10 = (byte)pMem2->flags & 1;\n          }\n          if ((bVar2 & 1) == bVar10) goto LAB_0004fd90;\n        }\n        pKey1_00 = (void *)-(int)pKey1_00;\n        goto LAB_0004fd90;\n      }\n      pMVar14 = (Mem *)(uVar8 & 8);\n      if ((uVar3 & 8) != 0) {\n        if (9 < serial_type) {\nLAB_0005018c:\n          pKVar16 = pPKey2->pKeyInfo;\n          pKey1_00 = (void *)0x1;\n          goto LAB_0004fed0;\n        }\n        if (serial_type != 0) {\n          pMVar14 = &mem1;\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))((int)pKey1 + uVar19);\n          if (serial_type == 7) {\n            if ((pMem2->u).r <= (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) {\n              if ((pMem2->u).r < (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) goto LAB_0005018c;\n              if (bSkip + 1U != (uint)pPKey2->nField) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            pMVar14 = (Mem *)(pMem2->u).pDef;\n            if ((pMem2->u).r < dVar21) goto LAB_0005018c;\n            if ((pMem2->u).r < dVar20) {\n              pKey1_00 = (void *)(*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                           (mem1.u.nZero,mem1.u.i._4_4_);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        pKVar16 = pPKey2->pKeyInfo;\n        pKey1_00 = (void *)0xffffffff;\n        goto LAB_0004fed0;\n      }\n      pMVar14 = (Mem *)(uVar8 & 2);\n      if ((uVar3 & 2) != 0) {\n        if (0x7f < serial_type) {\n          (*pcVar7)(pbVar13,&serial_type);\n        }\n        if (serial_type < 0xc) goto LAB_00050270;\n        if ((serial_type & 1) == 0) goto LAB_0005018c;\n        pMVar15 = (Mem *)(serial_type - 0xc >> 1);\n        mem1.n = (int)pMVar15;\n        if ((int)&pMVar15->u + uVar19 <= (uint)nKey1) {\n          pKVar16 = pPKey2->pKeyInfo;\n          if (bSkip < (int)(uint)pKVar16->nAllField) {\n            pMVar14 = (Mem *)pKVar16->aColl[bSkip];\n            if (pMVar14 == (Mem *)0x0) {\n              pMVar17 = (Mem *)pMem2->n;\n              pMVar14 = pMVar17;\n              if ((int)pMVar15 <= (int)pMVar17) {\n                pMVar14 = pMVar15;\n              }\n              pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)\n                                           ((char *)((int)pKey1 + uVar19),pMem2->z);\n              if (pKey1_00 != (void *)0x0) goto LAB_0004fed0;\n              pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);\n            }\n            else {\n              mem1.enc = pKVar16->enc;\n              mem1.db = pKVar16->db;\n              mem1.flags = 2;\n              mem1.z = (char *)((int)pKey1 + uVar19);\n              pKey1_00 = (void *)vdbeCompareMemString\n                                           (&mem1,pMem2,(CollSeq *)pMVar14,&pPKey2->errCode);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        iVar12 = 0x14194;\n        goto LAB_0004fbfc;\n      }\n      if ((uVar3 & 0x10) == 0) {\n        pKey1_00 = (void *)(uint)(serial_type != 0);\n      }\n      else {\n        if (0x7f < serial_type) {\n          (*pcVar7)(pbVar13,&serial_type);\n        }\n        if ((serial_type < 0xc) || ((serial_type & 1) != 0)) goto LAB_00050270;\n        pMVar15 = (Mem *)(serial_type - 0xc >> 1);\n        if ((uint)nKey1 < (int)&pMVar15->u + uVar19) {\n          iVar12 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if ((pMem2->flags & 0x4000) == 0) {\n          pMVar17 = (Mem *)pMem2->n;\n          pMVar14 = pMVar15;\n          if ((int)pMVar17 <= (int)pMVar15) {\n            pMVar14 = pMVar17;\n          }\n          pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)((int)pKey1 + uVar19,pMem2->z);\n          if (pKey1_00 != (void *)0x0) goto LAB_0004fecc;\n          pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);\n        }\n        else {\n          if (pMVar15 != (Mem *)0x0) {\n            if (*(char *)((int)pKey1 + uVar19) != '\0') goto LAB_0005018c;\n            pcVar9 = (char *)((int)pKey1 + uVar19 + 1);\n            while ((char *)((int)pKey1 + uVar19) + (int)pMVar15 != pcVar9) {\n              cVar1 = *pcVar9;\n              pcVar9 = pcVar9 + 1;\n              if (cVar1 != '\0') goto LAB_0005018c;\n            }\n          }\n          pKey1_00 = (void *)((int)pMVar15 - (pMem2->u).nZero);\n        }\n      }\nLAB_0004fec4:\n      if (pKey1_00 != (void *)0x0) {\nLAB_0004fecc:\n        pKVar16 = pPKey2->pKeyInfo;\n        goto LAB_0004fed0;\n      }\n      if ((uint)pPKey2->nField == bSkip + 1U) goto LAB_0004fd84;\n      if (serial_type < 0x80) {\nLAB_0004ff38:\n        uVar8 = (uint)(byte)puVar4[serial_type + 0x2208];\n      }\n      else {\n        uVar8 = serial_type - 0xc >> 1;\n      }\n      bSkip = bSkip + 1;\n      uVar19 = uVar19 + uVar8;\n      iVar12 = 1;\n      uVar8 = serial_type;\n      while (uVar8 = uVar8 >> 7, uVar8 != 0) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar18 = uVar18 + iVar12;\n      if ((szHdr1 <= uVar18) || (pMem2 = pMem2 + 1, (uint)nKey1 < uVar19)) goto LAB_0004fd84;\n    } while( true );\n  }\n  iVar12 = 0x14147;\nLAB_0004fbfc:\n  iVar12 = sqlite3CorruptError(iVar12);\n  pKey1_00 = (void *)0x0;\n  pPKey2->errCode = (u8)iVar12;\nLAB_0004fd90:\n  if (iVar6 == *(int *)puVar5) {\n    return (int)pKey1_00;\n  }\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  iVar6 = sqlite3VdbeRecordCompareWithSkip(iVar6,pKey1_00,(UnpackedRecord *)pMVar14,0);\n  return iVar6;\nLAB_0004fd84:\n  pKey1_00 = (void *)(int)pPKey2->default_rc;\n  pPKey2->eqSeen = '\x01';\n  goto LAB_0004fd90;\n}" primitive_type (function_declarator "sqlite3VdbeRecordCompareWithSkip(int nKey1,void *pKey1,UnpackedRecord *pPKey2,int bSkip)" identifier (parameter_list "(int nKey1,void *pKey1,UnpackedRecord *pPKey2,int bSkip)" ( (parameter_declaration "int nKey1" primitive_type identifier) , (parameter_declaration "void *pKey1" primitive_type (pointer_declarator "*pKey1" * identifier)) , (parameter_declaration "UnpackedRecord *pPKey2" type_identifier (pointer_declarator "*pPKey2" * identifier)) , (parameter_declaration "int bSkip" primitive_type identifier) ))) (compound_statement "{\n  char cVar1;\n  byte bVar2;\n  ushort uVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  int iVar6;\n  code *pcVar7;\n  uint uVar8;\n  char *pcVar9;\n  byte bVar10;\n  undefined4 uVar11;\n  int iVar12;\n  byte *pbVar13;\n  void *pKey1_00;\n  Mem *pMVar14;\n  Mem *pMVar15;\n  KeyInfo *pKVar16;\n  Mem *pMVar17;\n  uint uVar18;\n  uint uVar19;\n  Mem *pMem2;\n  double dVar20;\n  double dVar21;\n  u32 szHdr1;\n  u32 serial_type;\n  Mem mem1;\n  \n  puVar5 = PTR___stack_chk_guard_000f5568;\n  iVar6 = *(int *)PTR___stack_chk_guard_000f5568;\n  pMem2 = pPKey2->aMem;\n  pMVar14 = (Mem *)pPKey2;\n  if (bSkip == 0) {\n                    /* WARNING: Load size is inaccurate */\n    bVar2 = *pKey1;\n    if ((char)bVar2 < '\0') {\n      uVar18 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(pKey1,&szHdr1);\n      uVar19 = szHdr1;\n    }\n    else {\n      uVar18 = 1;\n      uVar19 = (uint)bVar2;\n      szHdr1 = (uint)bVar2;\n    }\n  }\n  else {\n    uVar18 = 2;\n    if ((char)*(byte *)((int)pKey1 + 1) < '\0') {\n      iVar12 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))((int)pKey1 + 1,&mem1);\n      uVar18 = iVar12 + 1;\n                    /* WARNING: Load size is inaccurate */\n      szHdr1 = (u32)*pKey1;\n      uVar11 = mem1.u.nZero;\n      if (mem1.u.zPType < (char *)0x80) goto LAB_0004fbd0;\n      uVar19 = (mem1.u.nZero - 0xcU >> 1) + szHdr1;\n    }\n    else {\n                    /* WARNING: Load size is inaccurate */\n      szHdr1 = (u32)*pKey1;\n      uVar11 = (int)(char *)(uint)*(byte *)((int)pKey1 + 1);\nLAB_0004fbd0:\n      uVar19 = *(byte *)((int)uVar11 + (int)(PTR_yy_shift_ofst_376__000f52d4 + 0x2208)) + szHdr1;\n    }\n    pMem2 = pMem2 + 1;\n  }\n  puVar4 = PTR_yy_shift_ofst_376__000f52d4;\n  if (uVar19 <= (uint)nKey1) {\n    dVar21 = *(double *)(PTR_yy_shift_ofst_376__000f52d4 + 0x26c8);\n    dVar20 = *(double *)(PTR_yy_shift_ofst_376__000f52d4 + 0x26d0);\n    pcVar7 = (code *)(PTR_LAB_000f52ec + -0x46ac);\n    do {\n      uVar3 = pMem2->flags;\n      uVar8 = (uint)uVar3;\n      pbVar13 = (byte *)((int)pKey1 + uVar18);\n      pMVar14 = (Mem *)(uVar8 & 0x24);\n      serial_type = (u32)*pbVar13;\n      if ((uVar3 & 0x24) != 0) {\n        if (9 < serial_type) goto LAB_0005018c;\n        if (serial_type == 0) goto LAB_00050270;\n        if (serial_type != 7) {\n          if (serial_type < 7) {\n                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */\n                    /* WARNING: Treating indirect jump as call */\n            iVar6 = (*(code *)(&_gp + *(int *)(PTR_yy_shift_ofst_376__000f52d4 +\n                                              serial_type * 4 + -0x31cc)))();\n            return iVar6;\n          }\n          iVar6 = FUN_0004fce4((int)pKey1 + uVar19,serial_type - 8);\n          return iVar6;\n        }\n        (*(code *)(PTR_LAB_000f52c8 + 0x56a8))((int)pKey1 + uVar19,7,&mem1);\n        pMVar14 = (Mem *)mem1.u.nZero;\n        if ((double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_) < *(double *)(puVar4 + 0x26c8)) {\n          pKey1_00 = (void *)0xffffffff;\n          goto LAB_0004fecc;\n        }\n        if ((double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_) < *(double *)(puVar4 + 0x26d0)) {\n          iVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                             ((pMem2->u).nZero,*(undefined4 *)((int)&pMem2->u + 4));\n          pKey1_00 = (void *)-iVar12;\n          goto LAB_0004fec4;\n        }\n        pKey1_00 = (void *)0x1;\n        pKVar16 = pPKey2->pKeyInfo;\nLAB_0004fed0:\n        bVar2 = pKVar16->aSortFlags[bSkip];\n        if (bVar2 == 0) goto LAB_0004fd90;\n        if ((bVar2 & 2) != 0) {\n          if (serial_type == 0) {\n            bVar10 = 1;\n          }\n          else {\n            bVar10 = (byte)pMem2->flags & 1;\n          }\n          if ((bVar2 & 1) == bVar10) goto LAB_0004fd90;\n        }\n        pKey1_00 = (void *)-(int)pKey1_00;\n        goto LAB_0004fd90;\n      }\n      pMVar14 = (Mem *)(uVar8 & 8);\n      if ((uVar3 & 8) != 0) {\n        if (9 < serial_type) {\nLAB_0005018c:\n          pKVar16 = pPKey2->pKeyInfo;\n          pKey1_00 = (void *)0x1;\n          goto LAB_0004fed0;\n        }\n        if (serial_type != 0) {\n          pMVar14 = &mem1;\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))((int)pKey1 + uVar19);\n          if (serial_type == 7) {\n            if ((pMem2->u).r <= (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) {\n              if ((pMem2->u).r < (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) goto LAB_0005018c;\n              if (bSkip + 1U != (uint)pPKey2->nField) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            pMVar14 = (Mem *)(pMem2->u).pDef;\n            if ((pMem2->u).r < dVar21) goto LAB_0005018c;\n            if ((pMem2->u).r < dVar20) {\n              pKey1_00 = (void *)(*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                           (mem1.u.nZero,mem1.u.i._4_4_);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        pKVar16 = pPKey2->pKeyInfo;\n        pKey1_00 = (void *)0xffffffff;\n        goto LAB_0004fed0;\n      }\n      pMVar14 = (Mem *)(uVar8 & 2);\n      if ((uVar3 & 2) != 0) {\n        if (0x7f < serial_type) {\n          (*pcVar7)(pbVar13,&serial_type);\n        }\n        if (serial_type < 0xc) goto LAB_00050270;\n        if ((serial_type & 1) == 0) goto LAB_0005018c;\n        pMVar15 = (Mem *)(serial_type - 0xc >> 1);\n        mem1.n = (int)pMVar15;\n        if ((int)&pMVar15->u + uVar19 <= (uint)nKey1) {\n          pKVar16 = pPKey2->pKeyInfo;\n          if (bSkip < (int)(uint)pKVar16->nAllField) {\n            pMVar14 = (Mem *)pKVar16->aColl[bSkip];\n            if (pMVar14 == (Mem *)0x0) {\n              pMVar17 = (Mem *)pMem2->n;\n              pMVar14 = pMVar17;\n              if ((int)pMVar15 <= (int)pMVar17) {\n                pMVar14 = pMVar15;\n              }\n              pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)\n                                           ((char *)((int)pKey1 + uVar19),pMem2->z);\n              if (pKey1_00 != (void *)0x0) goto LAB_0004fed0;\n              pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);\n            }\n            else {\n              mem1.enc = pKVar16->enc;\n              mem1.db = pKVar16->db;\n              mem1.flags = 2;\n              mem1.z = (char *)((int)pKey1 + uVar19);\n              pKey1_00 = (void *)vdbeCompareMemString\n                                           (&mem1,pMem2,(CollSeq *)pMVar14,&pPKey2->errCode);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        iVar12 = 0x14194;\n        goto LAB_0004fbfc;\n      }\n      if ((uVar3 & 0x10) == 0) {\n        pKey1_00 = (void *)(uint)(serial_type != 0);\n      }\n      else {\n        if (0x7f < serial_type) {\n          (*pcVar7)(pbVar13,&serial_type);\n        }\n        if ((serial_type < 0xc) || ((serial_type & 1) != 0)) goto LAB_00050270;\n        pMVar15 = (Mem *)(serial_type - 0xc >> 1);\n        if ((uint)nKey1 < (int)&pMVar15->u + uVar19) {\n          iVar12 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if ((pMem2->flags & 0x4000) == 0) {\n          pMVar17 = (Mem *)pMem2->n;\n          pMVar14 = pMVar15;\n          if ((int)pMVar17 <= (int)pMVar15) {\n            pMVar14 = pMVar17;\n          }\n          pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)((int)pKey1 + uVar19,pMem2->z);\n          if (pKey1_00 != (void *)0x0) goto LAB_0004fecc;\n          pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);\n        }\n        else {\n          if (pMVar15 != (Mem *)0x0) {\n            if (*(char *)((int)pKey1 + uVar19) != '\0') goto LAB_0005018c;\n            pcVar9 = (char *)((int)pKey1 + uVar19 + 1);\n            while ((char *)((int)pKey1 + uVar19) + (int)pMVar15 != pcVar9) {\n              cVar1 = *pcVar9;\n              pcVar9 = pcVar9 + 1;\n              if (cVar1 != '\0') goto LAB_0005018c;\n            }\n          }\n          pKey1_00 = (void *)((int)pMVar15 - (pMem2->u).nZero);\n        }\n      }\nLAB_0004fec4:\n      if (pKey1_00 != (void *)0x0) {\nLAB_0004fecc:\n        pKVar16 = pPKey2->pKeyInfo;\n        goto LAB_0004fed0;\n      }\n      if ((uint)pPKey2->nField == bSkip + 1U) goto LAB_0004fd84;\n      if (serial_type < 0x80) {\nLAB_0004ff38:\n        uVar8 = (uint)(byte)puVar4[serial_type + 0x2208];\n      }\n      else {\n        uVar8 = serial_type - 0xc >> 1;\n      }\n      bSkip = bSkip + 1;\n      uVar19 = uVar19 + uVar8;\n      iVar12 = 1;\n      uVar8 = serial_type;\n      while (uVar8 = uVar8 >> 7, uVar8 != 0) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar18 = uVar18 + iVar12;\n      if ((szHdr1 <= uVar18) || (pMem2 = pMem2 + 1, (uint)nKey1 < uVar19)) goto LAB_0004fd84;\n    } while( true );\n  }\n  iVar12 = 0x14147;\nLAB_0004fbfc:\n  iVar12 = sqlite3CorruptError(iVar12);\n  pKey1_00 = (void *)0x0;\n  pPKey2->errCode = (u8)iVar12;\nLAB_0004fd90:\n  if (iVar6 == *(int *)puVar5) {\n    return (int)pKey1_00;\n  }\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  iVar6 = sqlite3VdbeRecordCompareWithSkip(iVar6,pKey1_00,(UnpackedRecord *)pMVar14,0);\n  return iVar6;\nLAB_0004fd84:\n  pKey1_00 = (void *)(int)pPKey2->default_rc;\n  pPKey2->eqSeen = '\x01';\n  goto LAB_0004fd90;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "ushort uVar3;" type_identifier identifier ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "byte bVar10;" type_identifier identifier ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "void *pKey1_00;" primitive_type (pointer_declarator "*pKey1_00" * identifier) ;) (declaration "Mem *pMVar14;" type_identifier (pointer_declarator "*pMVar14" * identifier) ;) (declaration "Mem *pMVar15;" type_identifier (pointer_declarator "*pMVar15" * identifier) ;) (declaration "KeyInfo *pKVar16;" type_identifier (pointer_declarator "*pKVar16" * identifier) ;) (declaration "Mem *pMVar17;" type_identifier (pointer_declarator "*pMVar17" * identifier) ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "Mem *pMem2;" type_identifier (pointer_declarator "*pMem2" * identifier) ;) (declaration "double dVar20;" primitive_type identifier ;) (declaration "double dVar21;" primitive_type identifier ;) (declaration "u32 szHdr1;" type_identifier identifier ;) (declaration "u32 serial_type;" type_identifier identifier ;) (declaration "Mem mem1;" type_identifier identifier ;) (expression_statement "puVar5 = PTR___stack_chk_guard_000f5568;" (assignment_expression "puVar5 = PTR___stack_chk_guard_000f5568" identifier = identifier) ;) (expression_statement "iVar6 = *(int *)PTR___stack_chk_guard_000f5568;" (assignment_expression "iVar6 = *(int *)PTR___stack_chk_guard_000f5568" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000f5568" * (cast_expression "(int *)PTR___stack_chk_guard_000f5568" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pMem2 = pPKey2->aMem;" (assignment_expression "pMem2 = pPKey2->aMem" identifier = (field_expression "pPKey2->aMem" identifier -> field_identifier)) ;) (expression_statement "pMVar14 = (Mem *)pPKey2;" (assignment_expression "pMVar14 = (Mem *)pPKey2" identifier = (cast_expression "(Mem *)pPKey2" ( (type_descriptor "Mem *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (bSkip == 0) {\n                    /* WARNING: Load size is inaccurate */\n    bVar2 = *pKey1;\n    if ((char)bVar2 < '\0') {\n      uVar18 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(pKey1,&szHdr1);\n      uVar19 = szHdr1;\n    }\n    else {\n      uVar18 = 1;\n      uVar19 = (uint)bVar2;\n      szHdr1 = (uint)bVar2;\n    }\n  }\n  else {\n    uVar18 = 2;\n    if ((char)*(byte *)((int)pKey1 + 1) < '\0') {\n      iVar12 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))((int)pKey1 + 1,&mem1);\n      uVar18 = iVar12 + 1;\n                    /* WARNING: Load size is inaccurate */\n      szHdr1 = (u32)*pKey1;\n      uVar11 = mem1.u.nZero;\n      if (mem1.u.zPType < (char *)0x80) goto LAB_0004fbd0;\n      uVar19 = (mem1.u.nZero - 0xcU >> 1) + szHdr1;\n    }\n    else {\n                    /* WARNING: Load size is inaccurate */\n      szHdr1 = (u32)*pKey1;\n      uVar11 = (int)(char *)(uint)*(byte *)((int)pKey1 + 1);\nLAB_0004fbd0:\n      uVar19 = *(byte *)((int)uVar11 + (int)(PTR_yy_shift_ofst_376__000f52d4 + 0x2208)) + szHdr1;\n    }\n    pMem2 = pMem2 + 1;\n  }" if (parenthesized_expression "(bSkip == 0)" ( (binary_expression "bSkip == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Load size is inaccurate */\n    bVar2 = *pKey1;\n    if ((char)bVar2 < '\0') {\n      uVar18 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(pKey1,&szHdr1);\n      uVar19 = szHdr1;\n    }\n    else {\n      uVar18 = 1;\n      uVar19 = (uint)bVar2;\n      szHdr1 = (uint)bVar2;\n    }\n  }" { comment (expression_statement "bVar2 = *pKey1;" (assignment_expression "bVar2 = *pKey1" identifier = (pointer_expression "*pKey1" * identifier)) ;) (if_statement "if ((char)bVar2 < '\0') {\n      uVar18 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(pKey1,&szHdr1);\n      uVar19 = szHdr1;\n    }\n    else {\n      uVar18 = 1;\n      uVar19 = (uint)bVar2;\n      szHdr1 = (uint)bVar2;\n    }" if (parenthesized_expression "((char)bVar2 < '\0')" ( (binary_expression "(char)bVar2 < '\0'" (cast_expression "(char)bVar2" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar18 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(pKey1,&szHdr1);\n      uVar19 = szHdr1;\n    }" { (expression_statement "uVar18 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(pKey1,&szHdr1);" (assignment_expression "uVar18 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(pKey1,&szHdr1)" identifier = (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x46ac))(pKey1,&szHdr1)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x46ac))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x46ac)" * (cast_expression "(code *)(PTR_LAB_000f52ec + -0x46ac)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x46ac)" ( (binary_expression "PTR_LAB_000f52ec + -0x46ac" identifier + number_literal) )))) )) (argument_list "(pKey1,&szHdr1)" ( identifier , (pointer_expression "&szHdr1" & identifier) )))) ;) (expression_statement "uVar19 = szHdr1;" (assignment_expression "uVar19 = szHdr1" identifier = identifier) ;) }) (else_clause "else {\n      uVar18 = 1;\n      uVar19 = (uint)bVar2;\n      szHdr1 = (uint)bVar2;\n    }" else (compound_statement "{\n      uVar18 = 1;\n      uVar19 = (uint)bVar2;\n      szHdr1 = (uint)bVar2;\n    }" { (expression_statement "uVar18 = 1;" (assignment_expression "uVar18 = 1" identifier = number_literal) ;) (expression_statement "uVar19 = (uint)bVar2;" (assignment_expression "uVar19 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "szHdr1 = (uint)bVar2;" (assignment_expression "szHdr1 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) }) (else_clause "else {\n    uVar18 = 2;\n    if ((char)*(byte *)((int)pKey1 + 1) < '\0') {\n      iVar12 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))((int)pKey1 + 1,&mem1);\n      uVar18 = iVar12 + 1;\n                    /* WARNING: Load size is inaccurate */\n      szHdr1 = (u32)*pKey1;\n      uVar11 = mem1.u.nZero;\n      if (mem1.u.zPType < (char *)0x80) goto LAB_0004fbd0;\n      uVar19 = (mem1.u.nZero - 0xcU >> 1) + szHdr1;\n    }\n    else {\n                    /* WARNING: Load size is inaccurate */\n      szHdr1 = (u32)*pKey1;\n      uVar11 = (int)(char *)(uint)*(byte *)((int)pKey1 + 1);\nLAB_0004fbd0:\n      uVar19 = *(byte *)((int)uVar11 + (int)(PTR_yy_shift_ofst_376__000f52d4 + 0x2208)) + szHdr1;\n    }\n    pMem2 = pMem2 + 1;\n  }" else (compound_statement "{\n    uVar18 = 2;\n    if ((char)*(byte *)((int)pKey1 + 1) < '\0') {\n      iVar12 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))((int)pKey1 + 1,&mem1);\n      uVar18 = iVar12 + 1;\n                    /* WARNING: Load size is inaccurate */\n      szHdr1 = (u32)*pKey1;\n      uVar11 = mem1.u.nZero;\n      if (mem1.u.zPType < (char *)0x80) goto LAB_0004fbd0;\n      uVar19 = (mem1.u.nZero - 0xcU >> 1) + szHdr1;\n    }\n    else {\n                    /* WARNING: Load size is inaccurate */\n      szHdr1 = (u32)*pKey1;\n      uVar11 = (int)(char *)(uint)*(byte *)((int)pKey1 + 1);\nLAB_0004fbd0:\n      uVar19 = *(byte *)((int)uVar11 + (int)(PTR_yy_shift_ofst_376__000f52d4 + 0x2208)) + szHdr1;\n    }\n    pMem2 = pMem2 + 1;\n  }" { (expression_statement "uVar18 = 2;" (assignment_expression "uVar18 = 2" identifier = number_literal) ;) (if_statement "if ((char)*(byte *)((int)pKey1 + 1) < '\0') {\n      iVar12 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))((int)pKey1 + 1,&mem1);\n      uVar18 = iVar12 + 1;\n                    /* WARNING: Load size is inaccurate */\n      szHdr1 = (u32)*pKey1;\n      uVar11 = mem1.u.nZero;\n      if (mem1.u.zPType < (char *)0x80) goto LAB_0004fbd0;\n      uVar19 = (mem1.u.nZero - 0xcU >> 1) + szHdr1;\n    }\n    else {\n                    /* WARNING: Load size is inaccurate */\n      szHdr1 = (u32)*pKey1;\n      uVar11 = (int)(char *)(uint)*(byte *)((int)pKey1 + 1);\nLAB_0004fbd0:\n      uVar19 = *(byte *)((int)uVar11 + (int)(PTR_yy_shift_ofst_376__000f52d4 + 0x2208)) + szHdr1;\n    }" if (parenthesized_expression "((char)*(byte *)((int)pKey1 + 1) < '\0')" ( (binary_expression "(char)*(byte *)((int)pKey1 + 1) < '\0'" (cast_expression "(char)*(byte *)((int)pKey1 + 1)" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(byte *)((int)pKey1 + 1)" * (cast_expression "(byte *)((int)pKey1 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pKey1 + 1)" ( (binary_expression "(int)pKey1 + 1" (cast_expression "(int)pKey1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar12 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))((int)pKey1 + 1,&mem1);\n      uVar18 = iVar12 + 1;\n                    /* WARNING: Load size is inaccurate */\n      szHdr1 = (u32)*pKey1;\n      uVar11 = mem1.u.nZero;\n      if (mem1.u.zPType < (char *)0x80) goto LAB_0004fbd0;\n      uVar19 = (mem1.u.nZero - 0xcU >> 1) + szHdr1;\n    }" { (expression_statement "iVar12 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))((int)pKey1 + 1,&mem1);" (assignment_expression "iVar12 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))((int)pKey1 + 1,&mem1)" identifier = (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x46ac))((int)pKey1 + 1,&mem1)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x46ac))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x46ac)" * (cast_expression "(code *)(PTR_LAB_000f52ec + -0x46ac)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x46ac)" ( (binary_expression "PTR_LAB_000f52ec + -0x46ac" identifier + number_literal) )))) )) (argument_list "((int)pKey1 + 1,&mem1)" ( (binary_expression "(int)pKey1 + 1" (cast_expression "(int)pKey1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) , (pointer_expression "&mem1" & identifier) )))) ;) (expression_statement "uVar18 = iVar12 + 1;" (assignment_expression "uVar18 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) comment (expression_statement "szHdr1 = (u32)*pKey1;" (assignment_expression "szHdr1 = (u32)*pKey1" identifier = (binary_expression "(u32)*pKey1" (parenthesized_expression "(u32)" ( identifier )) * identifier)) ;) (expression_statement "uVar11 = mem1.u.nZero;" (assignment_expression "uVar11 = mem1.u.nZero" identifier = (field_expression "mem1.u.nZero" (field_expression "mem1.u" identifier . field_identifier) . field_identifier)) ;) (if_statement "if (mem1.u.zPType < (char *)0x80) goto LAB_0004fbd0;" if (parenthesized_expression "(mem1.u.zPType < (char *)0x80)" ( (binary_expression "mem1.u.zPType < (char *)0x80" (field_expression "mem1.u.zPType" (field_expression "mem1.u" identifier . field_identifier) . field_identifier) < (cast_expression "(char *)0x80" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0004fbd0;" goto statement_identifier ;)) (expression_statement "uVar19 = (mem1.u.nZero - 0xcU >> 1) + szHdr1;" (assignment_expression "uVar19 = (mem1.u.nZero - 0xcU >> 1) + szHdr1" identifier = (binary_expression "(mem1.u.nZero - 0xcU >> 1) + szHdr1" (parenthesized_expression "(mem1.u.nZero - 0xcU >> 1)" ( (binary_expression "mem1.u.nZero - 0xcU >> 1" (binary_expression "mem1.u.nZero - 0xcU" (field_expression "mem1.u.nZero" (field_expression "mem1.u" identifier . field_identifier) . field_identifier) - number_literal) >> number_literal) )) + identifier)) ;) }) (else_clause "else {\n                    /* WARNING: Load size is inaccurate */\n      szHdr1 = (u32)*pKey1;\n      uVar11 = (int)(char *)(uint)*(byte *)((int)pKey1 + 1);\nLAB_0004fbd0:\n      uVar19 = *(byte *)((int)uVar11 + (int)(PTR_yy_shift_ofst_376__000f52d4 + 0x2208)) + szHdr1;\n    }" else (compound_statement "{\n                    /* WARNING: Load size is inaccurate */\n      szHdr1 = (u32)*pKey1;\n      uVar11 = (int)(char *)(uint)*(byte *)((int)pKey1 + 1);\nLAB_0004fbd0:\n      uVar19 = *(byte *)((int)uVar11 + (int)(PTR_yy_shift_ofst_376__000f52d4 + 0x2208)) + szHdr1;\n    }" { comment (expression_statement "szHdr1 = (u32)*pKey1;" (assignment_expression "szHdr1 = (u32)*pKey1" identifier = (binary_expression "(u32)*pKey1" (parenthesized_expression "(u32)" ( identifier )) * identifier)) ;) (expression_statement "uVar11 = (int)(char *)(uint)*(byte *)((int)pKey1 + 1);" (assignment_expression "uVar11 = (int)(char *)(uint)*(byte *)((int)pKey1 + 1)" identifier = (binary_expression "(int)(char *)(uint)*(byte *)((int)pKey1 + 1)" (cast_expression "(int)(char *)(uint)" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char *)(uint)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier )))) * (cast_expression "(byte *)((int)pKey1 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pKey1 + 1)" ( (binary_expression "(int)pKey1 + 1" (cast_expression "(int)pKey1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (labeled_statement "LAB_0004fbd0:\n      uVar19 = *(byte *)((int)uVar11 + (int)(PTR_yy_shift_ofst_376__000f52d4 + 0x2208)) + szHdr1;" statement_identifier : (expression_statement "uVar19 = *(byte *)((int)uVar11 + (int)(PTR_yy_shift_ofst_376__000f52d4 + 0x2208)) + szHdr1;" (assignment_expression "uVar19 = *(byte *)((int)uVar11 + (int)(PTR_yy_shift_ofst_376__000f52d4 + 0x2208)) + szHdr1" identifier = (binary_expression "*(byte *)((int)uVar11 + (int)(PTR_yy_shift_ofst_376__000f52d4 + 0x2208)) + szHdr1" (pointer_expression "*(byte *)((int)uVar11 + (int)(PTR_yy_shift_ofst_376__000f52d4 + 0x2208))" * (cast_expression "(byte *)((int)uVar11 + (int)(PTR_yy_shift_ofst_376__000f52d4 + 0x2208))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)uVar11 + (int)(PTR_yy_shift_ofst_376__000f52d4 + 0x2208))" ( (binary_expression "(int)uVar11 + (int)(PTR_yy_shift_ofst_376__000f52d4 + 0x2208)" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)(PTR_yy_shift_ofst_376__000f52d4 + 0x2208)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(PTR_yy_shift_ofst_376__000f52d4 + 0x2208)" ( (binary_expression "PTR_yy_shift_ofst_376__000f52d4 + 0x2208" identifier + number_literal) )))) )))) + identifier)) ;)) }))) (expression_statement "pMem2 = pMem2 + 1;" (assignment_expression "pMem2 = pMem2 + 1" identifier = (binary_expression "pMem2 + 1" identifier + number_literal)) ;) }))) (expression_statement "puVar4 = PTR_yy_shift_ofst_376__000f52d4;" (assignment_expression "puVar4 = PTR_yy_shift_ofst_376__000f52d4" identifier = identifier) ;) (if_statement "if (uVar19 <= (uint)nKey1) {\n    dVar21 = *(double *)(PTR_yy_shift_ofst_376__000f52d4 + 0x26c8);\n    dVar20 = *(double *)(PTR_yy_shift_ofst_376__000f52d4 + 0x26d0);\n    pcVar7 = (code *)(PTR_LAB_000f52ec + -0x46ac);\n    do {\n      uVar3 = pMem2->flags;\n      uVar8 = (uint)uVar3;\n      pbVar13 = (byte *)((int)pKey1 + uVar18);\n      pMVar14 = (Mem *)(uVar8 & 0x24);\n      serial_type = (u32)*pbVar13;\n      if ((uVar3 & 0x24) != 0) {\n        if (9 < serial_type) goto LAB_0005018c;\n        if (serial_type == 0) goto LAB_00050270;\n        if (serial_type != 7) {\n          if (serial_type < 7) {\n                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */\n                    /* WARNING: Treating indirect jump as call */\n            iVar6 = (*(code *)(&_gp + *(int *)(PTR_yy_shift_ofst_376__000f52d4 +\n                                              serial_type * 4 + -0x31cc)))();\n            return iVar6;\n          }\n          iVar6 = FUN_0004fce4((int)pKey1 + uVar19,serial_type - 8);\n          return iVar6;\n        }\n        (*(code *)(PTR_LAB_000f52c8 + 0x56a8))((int)pKey1 + uVar19,7,&mem1);\n        pMVar14 = (Mem *)mem1.u.nZero;\n        if ((double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_) < *(double *)(puVar4 + 0x26c8)) {\n          pKey1_00 = (void *)0xffffffff;\n          goto LAB_0004fecc;\n        }\n        if ((double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_) < *(double *)(puVar4 + 0x26d0)) {\n          iVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                             ((pMem2->u).nZero,*(undefined4 *)((int)&pMem2->u + 4));\n          pKey1_00 = (void *)-iVar12;\n          goto LAB_0004fec4;\n        }\n        pKey1_00 = (void *)0x1;\n        pKVar16 = pPKey2->pKeyInfo;\nLAB_0004fed0:\n        bVar2 = pKVar16->aSortFlags[bSkip];\n        if (bVar2 == 0) goto LAB_0004fd90;\n        if ((bVar2 & 2) != 0) {\n          if (serial_type == 0) {\n            bVar10 = 1;\n          }\n          else {\n            bVar10 = (byte)pMem2->flags & 1;\n          }\n          if ((bVar2 & 1) == bVar10) goto LAB_0004fd90;\n        }\n        pKey1_00 = (void *)-(int)pKey1_00;\n        goto LAB_0004fd90;\n      }\n      pMVar14 = (Mem *)(uVar8 & 8);\n      if ((uVar3 & 8) != 0) {\n        if (9 < serial_type) {\nLAB_0005018c:\n          pKVar16 = pPKey2->pKeyInfo;\n          pKey1_00 = (void *)0x1;\n          goto LAB_0004fed0;\n        }\n        if (serial_type != 0) {\n          pMVar14 = &mem1;\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))((int)pKey1 + uVar19);\n          if (serial_type == 7) {\n            if ((pMem2->u).r <= (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) {\n              if ((pMem2->u).r < (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) goto LAB_0005018c;\n              if (bSkip + 1U != (uint)pPKey2->nField) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            pMVar14 = (Mem *)(pMem2->u).pDef;\n            if ((pMem2->u).r < dVar21) goto LAB_0005018c;\n            if ((pMem2->u).r < dVar20) {\n              pKey1_00 = (void *)(*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                           (mem1.u.nZero,mem1.u.i._4_4_);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        pKVar16 = pPKey2->pKeyInfo;\n        pKey1_00 = (void *)0xffffffff;\n        goto LAB_0004fed0;\n      }\n      pMVar14 = (Mem *)(uVar8 & 2);\n      if ((uVar3 & 2) != 0) {\n        if (0x7f < serial_type) {\n          (*pcVar7)(pbVar13,&serial_type);\n        }\n        if (serial_type < 0xc) goto LAB_00050270;\n        if ((serial_type & 1) == 0) goto LAB_0005018c;\n        pMVar15 = (Mem *)(serial_type - 0xc >> 1);\n        mem1.n = (int)pMVar15;\n        if ((int)&pMVar15->u + uVar19 <= (uint)nKey1) {\n          pKVar16 = pPKey2->pKeyInfo;\n          if (bSkip < (int)(uint)pKVar16->nAllField) {\n            pMVar14 = (Mem *)pKVar16->aColl[bSkip];\n            if (pMVar14 == (Mem *)0x0) {\n              pMVar17 = (Mem *)pMem2->n;\n              pMVar14 = pMVar17;\n              if ((int)pMVar15 <= (int)pMVar17) {\n                pMVar14 = pMVar15;\n              }\n              pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)\n                                           ((char *)((int)pKey1 + uVar19),pMem2->z);\n              if (pKey1_00 != (void *)0x0) goto LAB_0004fed0;\n              pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);\n            }\n            else {\n              mem1.enc = pKVar16->enc;\n              mem1.db = pKVar16->db;\n              mem1.flags = 2;\n              mem1.z = (char *)((int)pKey1 + uVar19);\n              pKey1_00 = (void *)vdbeCompareMemString\n                                           (&mem1,pMem2,(CollSeq *)pMVar14,&pPKey2->errCode);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        iVar12 = 0x14194;\n        goto LAB_0004fbfc;\n      }\n      if ((uVar3 & 0x10) == 0) {\n        pKey1_00 = (void *)(uint)(serial_type != 0);\n      }\n      else {\n        if (0x7f < serial_type) {\n          (*pcVar7)(pbVar13,&serial_type);\n        }\n        if ((serial_type < 0xc) || ((serial_type & 1) != 0)) goto LAB_00050270;\n        pMVar15 = (Mem *)(serial_type - 0xc >> 1);\n        if ((uint)nKey1 < (int)&pMVar15->u + uVar19) {\n          iVar12 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if ((pMem2->flags & 0x4000) == 0) {\n          pMVar17 = (Mem *)pMem2->n;\n          pMVar14 = pMVar15;\n          if ((int)pMVar17 <= (int)pMVar15) {\n            pMVar14 = pMVar17;\n          }\n          pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)((int)pKey1 + uVar19,pMem2->z);\n          if (pKey1_00 != (void *)0x0) goto LAB_0004fecc;\n          pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);\n        }\n        else {\n          if (pMVar15 != (Mem *)0x0) {\n            if (*(char *)((int)pKey1 + uVar19) != '\0') goto LAB_0005018c;\n            pcVar9 = (char *)((int)pKey1 + uVar19 + 1);\n            while ((char *)((int)pKey1 + uVar19) + (int)pMVar15 != pcVar9) {\n              cVar1 = *pcVar9;\n              pcVar9 = pcVar9 + 1;\n              if (cVar1 != '\0') goto LAB_0005018c;\n            }\n          }\n          pKey1_00 = (void *)((int)pMVar15 - (pMem2->u).nZero);\n        }\n      }\nLAB_0004fec4:\n      if (pKey1_00 != (void *)0x0) {\nLAB_0004fecc:\n        pKVar16 = pPKey2->pKeyInfo;\n        goto LAB_0004fed0;\n      }\n      if ((uint)pPKey2->nField == bSkip + 1U) goto LAB_0004fd84;\n      if (serial_type < 0x80) {\nLAB_0004ff38:\n        uVar8 = (uint)(byte)puVar4[serial_type + 0x2208];\n      }\n      else {\n        uVar8 = serial_type - 0xc >> 1;\n      }\n      bSkip = bSkip + 1;\n      uVar19 = uVar19 + uVar8;\n      iVar12 = 1;\n      uVar8 = serial_type;\n      while (uVar8 = uVar8 >> 7, uVar8 != 0) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar18 = uVar18 + iVar12;\n      if ((szHdr1 <= uVar18) || (pMem2 = pMem2 + 1, (uint)nKey1 < uVar19)) goto LAB_0004fd84;\n    } while( true );\n  }" if (parenthesized_expression "(uVar19 <= (uint)nKey1)" ( (binary_expression "uVar19 <= (uint)nKey1" identifier <= (cast_expression "(uint)nKey1" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (compound_statement "{\n    dVar21 = *(double *)(PTR_yy_shift_ofst_376__000f52d4 + 0x26c8);\n    dVar20 = *(double *)(PTR_yy_shift_ofst_376__000f52d4 + 0x26d0);\n    pcVar7 = (code *)(PTR_LAB_000f52ec + -0x46ac);\n    do {\n      uVar3 = pMem2->flags;\n      uVar8 = (uint)uVar3;\n      pbVar13 = (byte *)((int)pKey1 + uVar18);\n      pMVar14 = (Mem *)(uVar8 & 0x24);\n      serial_type = (u32)*pbVar13;\n      if ((uVar3 & 0x24) != 0) {\n        if (9 < serial_type) goto LAB_0005018c;\n        if (serial_type == 0) goto LAB_00050270;\n        if (serial_type != 7) {\n          if (serial_type < 7) {\n                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */\n                    /* WARNING: Treating indirect jump as call */\n            iVar6 = (*(code *)(&_gp + *(int *)(PTR_yy_shift_ofst_376__000f52d4 +\n                                              serial_type * 4 + -0x31cc)))();\n            return iVar6;\n          }\n          iVar6 = FUN_0004fce4((int)pKey1 + uVar19,serial_type - 8);\n          return iVar6;\n        }\n        (*(code *)(PTR_LAB_000f52c8 + 0x56a8))((int)pKey1 + uVar19,7,&mem1);\n        pMVar14 = (Mem *)mem1.u.nZero;\n        if ((double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_) < *(double *)(puVar4 + 0x26c8)) {\n          pKey1_00 = (void *)0xffffffff;\n          goto LAB_0004fecc;\n        }\n        if ((double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_) < *(double *)(puVar4 + 0x26d0)) {\n          iVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                             ((pMem2->u).nZero,*(undefined4 *)((int)&pMem2->u + 4));\n          pKey1_00 = (void *)-iVar12;\n          goto LAB_0004fec4;\n        }\n        pKey1_00 = (void *)0x1;\n        pKVar16 = pPKey2->pKeyInfo;\nLAB_0004fed0:\n        bVar2 = pKVar16->aSortFlags[bSkip];\n        if (bVar2 == 0) goto LAB_0004fd90;\n        if ((bVar2 & 2) != 0) {\n          if (serial_type == 0) {\n            bVar10 = 1;\n          }\n          else {\n            bVar10 = (byte)pMem2->flags & 1;\n          }\n          if ((bVar2 & 1) == bVar10) goto LAB_0004fd90;\n        }\n        pKey1_00 = (void *)-(int)pKey1_00;\n        goto LAB_0004fd90;\n      }\n      pMVar14 = (Mem *)(uVar8 & 8);\n      if ((uVar3 & 8) != 0) {\n        if (9 < serial_type) {\nLAB_0005018c:\n          pKVar16 = pPKey2->pKeyInfo;\n          pKey1_00 = (void *)0x1;\n          goto LAB_0004fed0;\n        }\n        if (serial_type != 0) {\n          pMVar14 = &mem1;\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))((int)pKey1 + uVar19);\n          if (serial_type == 7) {\n            if ((pMem2->u).r <= (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) {\n              if ((pMem2->u).r < (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) goto LAB_0005018c;\n              if (bSkip + 1U != (uint)pPKey2->nField) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            pMVar14 = (Mem *)(pMem2->u).pDef;\n            if ((pMem2->u).r < dVar21) goto LAB_0005018c;\n            if ((pMem2->u).r < dVar20) {\n              pKey1_00 = (void *)(*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                           (mem1.u.nZero,mem1.u.i._4_4_);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        pKVar16 = pPKey2->pKeyInfo;\n        pKey1_00 = (void *)0xffffffff;\n        goto LAB_0004fed0;\n      }\n      pMVar14 = (Mem *)(uVar8 & 2);\n      if ((uVar3 & 2) != 0) {\n        if (0x7f < serial_type) {\n          (*pcVar7)(pbVar13,&serial_type);\n        }\n        if (serial_type < 0xc) goto LAB_00050270;\n        if ((serial_type & 1) == 0) goto LAB_0005018c;\n        pMVar15 = (Mem *)(serial_type - 0xc >> 1);\n        mem1.n = (int)pMVar15;\n        if ((int)&pMVar15->u + uVar19 <= (uint)nKey1) {\n          pKVar16 = pPKey2->pKeyInfo;\n          if (bSkip < (int)(uint)pKVar16->nAllField) {\n            pMVar14 = (Mem *)pKVar16->aColl[bSkip];\n            if (pMVar14 == (Mem *)0x0) {\n              pMVar17 = (Mem *)pMem2->n;\n              pMVar14 = pMVar17;\n              if ((int)pMVar15 <= (int)pMVar17) {\n                pMVar14 = pMVar15;\n              }\n              pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)\n                                           ((char *)((int)pKey1 + uVar19),pMem2->z);\n              if (pKey1_00 != (void *)0x0) goto LAB_0004fed0;\n              pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);\n            }\n            else {\n              mem1.enc = pKVar16->enc;\n              mem1.db = pKVar16->db;\n              mem1.flags = 2;\n              mem1.z = (char *)((int)pKey1 + uVar19);\n              pKey1_00 = (void *)vdbeCompareMemString\n                                           (&mem1,pMem2,(CollSeq *)pMVar14,&pPKey2->errCode);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        iVar12 = 0x14194;\n        goto LAB_0004fbfc;\n      }\n      if ((uVar3 & 0x10) == 0) {\n        pKey1_00 = (void *)(uint)(serial_type != 0);\n      }\n      else {\n        if (0x7f < serial_type) {\n          (*pcVar7)(pbVar13,&serial_type);\n        }\n        if ((serial_type < 0xc) || ((serial_type & 1) != 0)) goto LAB_00050270;\n        pMVar15 = (Mem *)(serial_type - 0xc >> 1);\n        if ((uint)nKey1 < (int)&pMVar15->u + uVar19) {\n          iVar12 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if ((pMem2->flags & 0x4000) == 0) {\n          pMVar17 = (Mem *)pMem2->n;\n          pMVar14 = pMVar15;\n          if ((int)pMVar17 <= (int)pMVar15) {\n            pMVar14 = pMVar17;\n          }\n          pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)((int)pKey1 + uVar19,pMem2->z);\n          if (pKey1_00 != (void *)0x0) goto LAB_0004fecc;\n          pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);\n        }\n        else {\n          if (pMVar15 != (Mem *)0x0) {\n            if (*(char *)((int)pKey1 + uVar19) != '\0') goto LAB_0005018c;\n            pcVar9 = (char *)((int)pKey1 + uVar19 + 1);\n            while ((char *)((int)pKey1 + uVar19) + (int)pMVar15 != pcVar9) {\n              cVar1 = *pcVar9;\n              pcVar9 = pcVar9 + 1;\n              if (cVar1 != '\0') goto LAB_0005018c;\n            }\n          }\n          pKey1_00 = (void *)((int)pMVar15 - (pMem2->u).nZero);\n        }\n      }\nLAB_0004fec4:\n      if (pKey1_00 != (void *)0x0) {\nLAB_0004fecc:\n        pKVar16 = pPKey2->pKeyInfo;\n        goto LAB_0004fed0;\n      }\n      if ((uint)pPKey2->nField == bSkip + 1U) goto LAB_0004fd84;\n      if (serial_type < 0x80) {\nLAB_0004ff38:\n        uVar8 = (uint)(byte)puVar4[serial_type + 0x2208];\n      }\n      else {\n        uVar8 = serial_type - 0xc >> 1;\n      }\n      bSkip = bSkip + 1;\n      uVar19 = uVar19 + uVar8;\n      iVar12 = 1;\n      uVar8 = serial_type;\n      while (uVar8 = uVar8 >> 7, uVar8 != 0) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar18 = uVar18 + iVar12;\n      if ((szHdr1 <= uVar18) || (pMem2 = pMem2 + 1, (uint)nKey1 < uVar19)) goto LAB_0004fd84;\n    } while( true );\n  }" { (expression_statement "dVar21 = *(double *)(PTR_yy_shift_ofst_376__000f52d4 + 0x26c8);" (assignment_expression "dVar21 = *(double *)(PTR_yy_shift_ofst_376__000f52d4 + 0x26c8)" identifier = (pointer_expression "*(double *)(PTR_yy_shift_ofst_376__000f52d4 + 0x26c8)" * (cast_expression "(double *)(PTR_yy_shift_ofst_376__000f52d4 + 0x26c8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_yy_shift_ofst_376__000f52d4 + 0x26c8)" ( (binary_expression "PTR_yy_shift_ofst_376__000f52d4 + 0x26c8" identifier + number_literal) ))))) ;) (expression_statement "dVar20 = *(double *)(PTR_yy_shift_ofst_376__000f52d4 + 0x26d0);" (assignment_expression "dVar20 = *(double *)(PTR_yy_shift_ofst_376__000f52d4 + 0x26d0)" identifier = (pointer_expression "*(double *)(PTR_yy_shift_ofst_376__000f52d4 + 0x26d0)" * (cast_expression "(double *)(PTR_yy_shift_ofst_376__000f52d4 + 0x26d0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_yy_shift_ofst_376__000f52d4 + 0x26d0)" ( (binary_expression "PTR_yy_shift_ofst_376__000f52d4 + 0x26d0" identifier + number_literal) ))))) ;) (expression_statement "pcVar7 = (code *)(PTR_LAB_000f52ec + -0x46ac);" (assignment_expression "pcVar7 = (code *)(PTR_LAB_000f52ec + -0x46ac)" identifier = (cast_expression "(code *)(PTR_LAB_000f52ec + -0x46ac)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x46ac)" ( (binary_expression "PTR_LAB_000f52ec + -0x46ac" identifier + number_literal) )))) ;) (do_statement "do {\n      uVar3 = pMem2->flags;\n      uVar8 = (uint)uVar3;\n      pbVar13 = (byte *)((int)pKey1 + uVar18);\n      pMVar14 = (Mem *)(uVar8 & 0x24);\n      serial_type = (u32)*pbVar13;\n      if ((uVar3 & 0x24) != 0) {\n        if (9 < serial_type) goto LAB_0005018c;\n        if (serial_type == 0) goto LAB_00050270;\n        if (serial_type != 7) {\n          if (serial_type < 7) {\n                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */\n                    /* WARNING: Treating indirect jump as call */\n            iVar6 = (*(code *)(&_gp + *(int *)(PTR_yy_shift_ofst_376__000f52d4 +\n                                              serial_type * 4 + -0x31cc)))();\n            return iVar6;\n          }\n          iVar6 = FUN_0004fce4((int)pKey1 + uVar19,serial_type - 8);\n          return iVar6;\n        }\n        (*(code *)(PTR_LAB_000f52c8 + 0x56a8))((int)pKey1 + uVar19,7,&mem1);\n        pMVar14 = (Mem *)mem1.u.nZero;\n        if ((double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_) < *(double *)(puVar4 + 0x26c8)) {\n          pKey1_00 = (void *)0xffffffff;\n          goto LAB_0004fecc;\n        }\n        if ((double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_) < *(double *)(puVar4 + 0x26d0)) {\n          iVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                             ((pMem2->u).nZero,*(undefined4 *)((int)&pMem2->u + 4));\n          pKey1_00 = (void *)-iVar12;\n          goto LAB_0004fec4;\n        }\n        pKey1_00 = (void *)0x1;\n        pKVar16 = pPKey2->pKeyInfo;\nLAB_0004fed0:\n        bVar2 = pKVar16->aSortFlags[bSkip];\n        if (bVar2 == 0) goto LAB_0004fd90;\n        if ((bVar2 & 2) != 0) {\n          if (serial_type == 0) {\n            bVar10 = 1;\n          }\n          else {\n            bVar10 = (byte)pMem2->flags & 1;\n          }\n          if ((bVar2 & 1) == bVar10) goto LAB_0004fd90;\n        }\n        pKey1_00 = (void *)-(int)pKey1_00;\n        goto LAB_0004fd90;\n      }\n      pMVar14 = (Mem *)(uVar8 & 8);\n      if ((uVar3 & 8) != 0) {\n        if (9 < serial_type) {\nLAB_0005018c:\n          pKVar16 = pPKey2->pKeyInfo;\n          pKey1_00 = (void *)0x1;\n          goto LAB_0004fed0;\n        }\n        if (serial_type != 0) {\n          pMVar14 = &mem1;\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))((int)pKey1 + uVar19);\n          if (serial_type == 7) {\n            if ((pMem2->u).r <= (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) {\n              if ((pMem2->u).r < (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) goto LAB_0005018c;\n              if (bSkip + 1U != (uint)pPKey2->nField) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            pMVar14 = (Mem *)(pMem2->u).pDef;\n            if ((pMem2->u).r < dVar21) goto LAB_0005018c;\n            if ((pMem2->u).r < dVar20) {\n              pKey1_00 = (void *)(*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                           (mem1.u.nZero,mem1.u.i._4_4_);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        pKVar16 = pPKey2->pKeyInfo;\n        pKey1_00 = (void *)0xffffffff;\n        goto LAB_0004fed0;\n      }\n      pMVar14 = (Mem *)(uVar8 & 2);\n      if ((uVar3 & 2) != 0) {\n        if (0x7f < serial_type) {\n          (*pcVar7)(pbVar13,&serial_type);\n        }\n        if (serial_type < 0xc) goto LAB_00050270;\n        if ((serial_type & 1) == 0) goto LAB_0005018c;\n        pMVar15 = (Mem *)(serial_type - 0xc >> 1);\n        mem1.n = (int)pMVar15;\n        if ((int)&pMVar15->u + uVar19 <= (uint)nKey1) {\n          pKVar16 = pPKey2->pKeyInfo;\n          if (bSkip < (int)(uint)pKVar16->nAllField) {\n            pMVar14 = (Mem *)pKVar16->aColl[bSkip];\n            if (pMVar14 == (Mem *)0x0) {\n              pMVar17 = (Mem *)pMem2->n;\n              pMVar14 = pMVar17;\n              if ((int)pMVar15 <= (int)pMVar17) {\n                pMVar14 = pMVar15;\n              }\n              pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)\n                                           ((char *)((int)pKey1 + uVar19),pMem2->z);\n              if (pKey1_00 != (void *)0x0) goto LAB_0004fed0;\n              pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);\n            }\n            else {\n              mem1.enc = pKVar16->enc;\n              mem1.db = pKVar16->db;\n              mem1.flags = 2;\n              mem1.z = (char *)((int)pKey1 + uVar19);\n              pKey1_00 = (void *)vdbeCompareMemString\n                                           (&mem1,pMem2,(CollSeq *)pMVar14,&pPKey2->errCode);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        iVar12 = 0x14194;\n        goto LAB_0004fbfc;\n      }\n      if ((uVar3 & 0x10) == 0) {\n        pKey1_00 = (void *)(uint)(serial_type != 0);\n      }\n      else {\n        if (0x7f < serial_type) {\n          (*pcVar7)(pbVar13,&serial_type);\n        }\n        if ((serial_type < 0xc) || ((serial_type & 1) != 0)) goto LAB_00050270;\n        pMVar15 = (Mem *)(serial_type - 0xc >> 1);\n        if ((uint)nKey1 < (int)&pMVar15->u + uVar19) {\n          iVar12 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if ((pMem2->flags & 0x4000) == 0) {\n          pMVar17 = (Mem *)pMem2->n;\n          pMVar14 = pMVar15;\n          if ((int)pMVar17 <= (int)pMVar15) {\n            pMVar14 = pMVar17;\n          }\n          pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)((int)pKey1 + uVar19,pMem2->z);\n          if (pKey1_00 != (void *)0x0) goto LAB_0004fecc;\n          pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);\n        }\n        else {\n          if (pMVar15 != (Mem *)0x0) {\n            if (*(char *)((int)pKey1 + uVar19) != '\0') goto LAB_0005018c;\n            pcVar9 = (char *)((int)pKey1 + uVar19 + 1);\n            while ((char *)((int)pKey1 + uVar19) + (int)pMVar15 != pcVar9) {\n              cVar1 = *pcVar9;\n              pcVar9 = pcVar9 + 1;\n              if (cVar1 != '\0') goto LAB_0005018c;\n            }\n          }\n          pKey1_00 = (void *)((int)pMVar15 - (pMem2->u).nZero);\n        }\n      }\nLAB_0004fec4:\n      if (pKey1_00 != (void *)0x0) {\nLAB_0004fecc:\n        pKVar16 = pPKey2->pKeyInfo;\n        goto LAB_0004fed0;\n      }\n      if ((uint)pPKey2->nField == bSkip + 1U) goto LAB_0004fd84;\n      if (serial_type < 0x80) {\nLAB_0004ff38:\n        uVar8 = (uint)(byte)puVar4[serial_type + 0x2208];\n      }\n      else {\n        uVar8 = serial_type - 0xc >> 1;\n      }\n      bSkip = bSkip + 1;\n      uVar19 = uVar19 + uVar8;\n      iVar12 = 1;\n      uVar8 = serial_type;\n      while (uVar8 = uVar8 >> 7, uVar8 != 0) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar18 = uVar18 + iVar12;\n      if ((szHdr1 <= uVar18) || (pMem2 = pMem2 + 1, (uint)nKey1 < uVar19)) goto LAB_0004fd84;\n    } while( true );" do (compound_statement "{\n      uVar3 = pMem2->flags;\n      uVar8 = (uint)uVar3;\n      pbVar13 = (byte *)((int)pKey1 + uVar18);\n      pMVar14 = (Mem *)(uVar8 & 0x24);\n      serial_type = (u32)*pbVar13;\n      if ((uVar3 & 0x24) != 0) {\n        if (9 < serial_type) goto LAB_0005018c;\n        if (serial_type == 0) goto LAB_00050270;\n        if (serial_type != 7) {\n          if (serial_type < 7) {\n                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */\n                    /* WARNING: Treating indirect jump as call */\n            iVar6 = (*(code *)(&_gp + *(int *)(PTR_yy_shift_ofst_376__000f52d4 +\n                                              serial_type * 4 + -0x31cc)))();\n            return iVar6;\n          }\n          iVar6 = FUN_0004fce4((int)pKey1 + uVar19,serial_type - 8);\n          return iVar6;\n        }\n        (*(code *)(PTR_LAB_000f52c8 + 0x56a8))((int)pKey1 + uVar19,7,&mem1);\n        pMVar14 = (Mem *)mem1.u.nZero;\n        if ((double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_) < *(double *)(puVar4 + 0x26c8)) {\n          pKey1_00 = (void *)0xffffffff;\n          goto LAB_0004fecc;\n        }\n        if ((double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_) < *(double *)(puVar4 + 0x26d0)) {\n          iVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                             ((pMem2->u).nZero,*(undefined4 *)((int)&pMem2->u + 4));\n          pKey1_00 = (void *)-iVar12;\n          goto LAB_0004fec4;\n        }\n        pKey1_00 = (void *)0x1;\n        pKVar16 = pPKey2->pKeyInfo;\nLAB_0004fed0:\n        bVar2 = pKVar16->aSortFlags[bSkip];\n        if (bVar2 == 0) goto LAB_0004fd90;\n        if ((bVar2 & 2) != 0) {\n          if (serial_type == 0) {\n            bVar10 = 1;\n          }\n          else {\n            bVar10 = (byte)pMem2->flags & 1;\n          }\n          if ((bVar2 & 1) == bVar10) goto LAB_0004fd90;\n        }\n        pKey1_00 = (void *)-(int)pKey1_00;\n        goto LAB_0004fd90;\n      }\n      pMVar14 = (Mem *)(uVar8 & 8);\n      if ((uVar3 & 8) != 0) {\n        if (9 < serial_type) {\nLAB_0005018c:\n          pKVar16 = pPKey2->pKeyInfo;\n          pKey1_00 = (void *)0x1;\n          goto LAB_0004fed0;\n        }\n        if (serial_type != 0) {\n          pMVar14 = &mem1;\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))((int)pKey1 + uVar19);\n          if (serial_type == 7) {\n            if ((pMem2->u).r <= (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) {\n              if ((pMem2->u).r < (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) goto LAB_0005018c;\n              if (bSkip + 1U != (uint)pPKey2->nField) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            pMVar14 = (Mem *)(pMem2->u).pDef;\n            if ((pMem2->u).r < dVar21) goto LAB_0005018c;\n            if ((pMem2->u).r < dVar20) {\n              pKey1_00 = (void *)(*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                           (mem1.u.nZero,mem1.u.i._4_4_);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        pKVar16 = pPKey2->pKeyInfo;\n        pKey1_00 = (void *)0xffffffff;\n        goto LAB_0004fed0;\n      }\n      pMVar14 = (Mem *)(uVar8 & 2);\n      if ((uVar3 & 2) != 0) {\n        if (0x7f < serial_type) {\n          (*pcVar7)(pbVar13,&serial_type);\n        }\n        if (serial_type < 0xc) goto LAB_00050270;\n        if ((serial_type & 1) == 0) goto LAB_0005018c;\n        pMVar15 = (Mem *)(serial_type - 0xc >> 1);\n        mem1.n = (int)pMVar15;\n        if ((int)&pMVar15->u + uVar19 <= (uint)nKey1) {\n          pKVar16 = pPKey2->pKeyInfo;\n          if (bSkip < (int)(uint)pKVar16->nAllField) {\n            pMVar14 = (Mem *)pKVar16->aColl[bSkip];\n            if (pMVar14 == (Mem *)0x0) {\n              pMVar17 = (Mem *)pMem2->n;\n              pMVar14 = pMVar17;\n              if ((int)pMVar15 <= (int)pMVar17) {\n                pMVar14 = pMVar15;\n              }\n              pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)\n                                           ((char *)((int)pKey1 + uVar19),pMem2->z);\n              if (pKey1_00 != (void *)0x0) goto LAB_0004fed0;\n              pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);\n            }\n            else {\n              mem1.enc = pKVar16->enc;\n              mem1.db = pKVar16->db;\n              mem1.flags = 2;\n              mem1.z = (char *)((int)pKey1 + uVar19);\n              pKey1_00 = (void *)vdbeCompareMemString\n                                           (&mem1,pMem2,(CollSeq *)pMVar14,&pPKey2->errCode);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        iVar12 = 0x14194;\n        goto LAB_0004fbfc;\n      }\n      if ((uVar3 & 0x10) == 0) {\n        pKey1_00 = (void *)(uint)(serial_type != 0);\n      }\n      else {\n        if (0x7f < serial_type) {\n          (*pcVar7)(pbVar13,&serial_type);\n        }\n        if ((serial_type < 0xc) || ((serial_type & 1) != 0)) goto LAB_00050270;\n        pMVar15 = (Mem *)(serial_type - 0xc >> 1);\n        if ((uint)nKey1 < (int)&pMVar15->u + uVar19) {\n          iVar12 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if ((pMem2->flags & 0x4000) == 0) {\n          pMVar17 = (Mem *)pMem2->n;\n          pMVar14 = pMVar15;\n          if ((int)pMVar17 <= (int)pMVar15) {\n            pMVar14 = pMVar17;\n          }\n          pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)((int)pKey1 + uVar19,pMem2->z);\n          if (pKey1_00 != (void *)0x0) goto LAB_0004fecc;\n          pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);\n        }\n        else {\n          if (pMVar15 != (Mem *)0x0) {\n            if (*(char *)((int)pKey1 + uVar19) != '\0') goto LAB_0005018c;\n            pcVar9 = (char *)((int)pKey1 + uVar19 + 1);\n            while ((char *)((int)pKey1 + uVar19) + (int)pMVar15 != pcVar9) {\n              cVar1 = *pcVar9;\n              pcVar9 = pcVar9 + 1;\n              if (cVar1 != '\0') goto LAB_0005018c;\n            }\n          }\n          pKey1_00 = (void *)((int)pMVar15 - (pMem2->u).nZero);\n        }\n      }\nLAB_0004fec4:\n      if (pKey1_00 != (void *)0x0) {\nLAB_0004fecc:\n        pKVar16 = pPKey2->pKeyInfo;\n        goto LAB_0004fed0;\n      }\n      if ((uint)pPKey2->nField == bSkip + 1U) goto LAB_0004fd84;\n      if (serial_type < 0x80) {\nLAB_0004ff38:\n        uVar8 = (uint)(byte)puVar4[serial_type + 0x2208];\n      }\n      else {\n        uVar8 = serial_type - 0xc >> 1;\n      }\n      bSkip = bSkip + 1;\n      uVar19 = uVar19 + uVar8;\n      iVar12 = 1;\n      uVar8 = serial_type;\n      while (uVar8 = uVar8 >> 7, uVar8 != 0) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar18 = uVar18 + iVar12;\n      if ((szHdr1 <= uVar18) || (pMem2 = pMem2 + 1, (uint)nKey1 < uVar19)) goto LAB_0004fd84;\n    }" { (expression_statement "uVar3 = pMem2->flags;" (assignment_expression "uVar3 = pMem2->flags" identifier = (field_expression "pMem2->flags" identifier -> field_identifier)) ;) (expression_statement "uVar8 = (uint)uVar3;" (assignment_expression "uVar8 = (uint)uVar3" identifier = (cast_expression "(uint)uVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "pbVar13 = (byte *)((int)pKey1 + uVar18);" (assignment_expression "pbVar13 = (byte *)((int)pKey1 + uVar18)" identifier = (cast_expression "(byte *)((int)pKey1 + uVar18)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pKey1 + uVar18)" ( (binary_expression "(int)pKey1 + uVar18" (cast_expression "(int)pKey1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "pMVar14 = (Mem *)(uVar8 & 0x24);" (assignment_expression "pMVar14 = (Mem *)(uVar8 & 0x24)" identifier = (cast_expression "(Mem *)(uVar8 & 0x24)" ( (type_descriptor "Mem *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar8 & 0x24)" ( (binary_expression "uVar8 & 0x24" identifier & number_literal) )))) ;) (expression_statement "serial_type = (u32)*pbVar13;" (assignment_expression "serial_type = (u32)*pbVar13" identifier = (binary_expression "(u32)*pbVar13" (parenthesized_expression "(u32)" ( identifier )) * identifier)) ;) (if_statement "if ((uVar3 & 0x24) != 0) {\n        if (9 < serial_type) goto LAB_0005018c;\n        if (serial_type == 0) goto LAB_00050270;\n        if (serial_type != 7) {\n          if (serial_type < 7) {\n                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */\n                    /* WARNING: Treating indirect jump as call */\n            iVar6 = (*(code *)(&_gp + *(int *)(PTR_yy_shift_ofst_376__000f52d4 +\n                                              serial_type * 4 + -0x31cc)))();\n            return iVar6;\n          }\n          iVar6 = FUN_0004fce4((int)pKey1 + uVar19,serial_type - 8);\n          return iVar6;\n        }\n        (*(code *)(PTR_LAB_000f52c8 + 0x56a8))((int)pKey1 + uVar19,7,&mem1);\n        pMVar14 = (Mem *)mem1.u.nZero;\n        if ((double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_) < *(double *)(puVar4 + 0x26c8)) {\n          pKey1_00 = (void *)0xffffffff;\n          goto LAB_0004fecc;\n        }\n        if ((double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_) < *(double *)(puVar4 + 0x26d0)) {\n          iVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                             ((pMem2->u).nZero,*(undefined4 *)((int)&pMem2->u + 4));\n          pKey1_00 = (void *)-iVar12;\n          goto LAB_0004fec4;\n        }\n        pKey1_00 = (void *)0x1;\n        pKVar16 = pPKey2->pKeyInfo;\nLAB_0004fed0:\n        bVar2 = pKVar16->aSortFlags[bSkip];\n        if (bVar2 == 0) goto LAB_0004fd90;\n        if ((bVar2 & 2) != 0) {\n          if (serial_type == 0) {\n            bVar10 = 1;\n          }\n          else {\n            bVar10 = (byte)pMem2->flags & 1;\n          }\n          if ((bVar2 & 1) == bVar10) goto LAB_0004fd90;\n        }\n        pKey1_00 = (void *)-(int)pKey1_00;\n        goto LAB_0004fd90;\n      }" if (parenthesized_expression "((uVar3 & 0x24) != 0)" ( (binary_expression "(uVar3 & 0x24) != 0" (parenthesized_expression "(uVar3 & 0x24)" ( (binary_expression "uVar3 & 0x24" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        if (9 < serial_type) goto LAB_0005018c;\n        if (serial_type == 0) goto LAB_00050270;\n        if (serial_type != 7) {\n          if (serial_type < 7) {\n                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */\n                    /* WARNING: Treating indirect jump as call */\n            iVar6 = (*(code *)(&_gp + *(int *)(PTR_yy_shift_ofst_376__000f52d4 +\n                                              serial_type * 4 + -0x31cc)))();\n            return iVar6;\n          }\n          iVar6 = FUN_0004fce4((int)pKey1 + uVar19,serial_type - 8);\n          return iVar6;\n        }\n        (*(code *)(PTR_LAB_000f52c8 + 0x56a8))((int)pKey1 + uVar19,7,&mem1);\n        pMVar14 = (Mem *)mem1.u.nZero;\n        if ((double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_) < *(double *)(puVar4 + 0x26c8)) {\n          pKey1_00 = (void *)0xffffffff;\n          goto LAB_0004fecc;\n        }\n        if ((double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_) < *(double *)(puVar4 + 0x26d0)) {\n          iVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                             ((pMem2->u).nZero,*(undefined4 *)((int)&pMem2->u + 4));\n          pKey1_00 = (void *)-iVar12;\n          goto LAB_0004fec4;\n        }\n        pKey1_00 = (void *)0x1;\n        pKVar16 = pPKey2->pKeyInfo;\nLAB_0004fed0:\n        bVar2 = pKVar16->aSortFlags[bSkip];\n        if (bVar2 == 0) goto LAB_0004fd90;\n        if ((bVar2 & 2) != 0) {\n          if (serial_type == 0) {\n            bVar10 = 1;\n          }\n          else {\n            bVar10 = (byte)pMem2->flags & 1;\n          }\n          if ((bVar2 & 1) == bVar10) goto LAB_0004fd90;\n        }\n        pKey1_00 = (void *)-(int)pKey1_00;\n        goto LAB_0004fd90;\n      }" { (if_statement "if (9 < serial_type) goto LAB_0005018c;" if (parenthesized_expression "(9 < serial_type)" ( (binary_expression "9 < serial_type" number_literal < identifier) )) (goto_statement "goto LAB_0005018c;" goto statement_identifier ;)) (if_statement "if (serial_type == 0) goto LAB_00050270;" if (parenthesized_expression "(serial_type == 0)" ( (binary_expression "serial_type == 0" identifier == number_literal) )) (goto_statement "goto LAB_00050270;" goto statement_identifier ;)) (if_statement "if (serial_type != 7) {\n          if (serial_type < 7) {\n                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */\n                    /* WARNING: Treating indirect jump as call */\n            iVar6 = (*(code *)(&_gp + *(int *)(PTR_yy_shift_ofst_376__000f52d4 +\n                                              serial_type * 4 + -0x31cc)))();\n            return iVar6;\n          }\n          iVar6 = FUN_0004fce4((int)pKey1 + uVar19,serial_type - 8);\n          return iVar6;\n        }" if (parenthesized_expression "(serial_type != 7)" ( (binary_expression "serial_type != 7" identifier != number_literal) )) (compound_statement "{\n          if (serial_type < 7) {\n                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */\n                    /* WARNING: Treating indirect jump as call */\n            iVar6 = (*(code *)(&_gp + *(int *)(PTR_yy_shift_ofst_376__000f52d4 +\n                                              serial_type * 4 + -0x31cc)))();\n            return iVar6;\n          }\n          iVar6 = FUN_0004fce4((int)pKey1 + uVar19,serial_type - 8);\n          return iVar6;\n        }" { (if_statement "if (serial_type < 7) {\n                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */\n                    /* WARNING: Treating indirect jump as call */\n            iVar6 = (*(code *)(&_gp + *(int *)(PTR_yy_shift_ofst_376__000f52d4 +\n                                              serial_type * 4 + -0x31cc)))();\n            return iVar6;\n          }" if (parenthesized_expression "(serial_type < 7)" ( (binary_expression "serial_type < 7" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */\n                    /* WARNING: Treating indirect jump as call */\n            iVar6 = (*(code *)(&_gp + *(int *)(PTR_yy_shift_ofst_376__000f52d4 +\n                                              serial_type * 4 + -0x31cc)))();\n            return iVar6;\n          }" { comment comment (expression_statement "iVar6 = (*(code *)(&_gp + *(int *)(PTR_yy_shift_ofst_376__000f52d4 +\n                                              serial_type * 4 + -0x31cc)))();" (assignment_expression "iVar6 = (*(code *)(&_gp + *(int *)(PTR_yy_shift_ofst_376__000f52d4 +\n                                              serial_type * 4 + -0x31cc)))()" identifier = (call_expression "(*(code *)(&_gp + *(int *)(PTR_yy_shift_ofst_376__000f52d4 +\n                                              serial_type * 4 + -0x31cc)))()" (parenthesized_expression "(*(code *)(&_gp + *(int *)(PTR_yy_shift_ofst_376__000f52d4 +\n                                              serial_type * 4 + -0x31cc)))" ( (pointer_expression "*(code *)(&_gp + *(int *)(PTR_yy_shift_ofst_376__000f52d4 +\n                                              serial_type * 4 + -0x31cc))" * (cast_expression "(code *)(&_gp + *(int *)(PTR_yy_shift_ofst_376__000f52d4 +\n                                              serial_type * 4 + -0x31cc))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp + *(int *)(PTR_yy_shift_ofst_376__000f52d4 +\n                                              serial_type * 4 + -0x31cc))" ( (binary_expression "&_gp + *(int *)(PTR_yy_shift_ofst_376__000f52d4 +\n                                              serial_type * 4 + -0x31cc)" (pointer_expression "&_gp" & identifier) + (pointer_expression "*(int *)(PTR_yy_shift_ofst_376__000f52d4 +\n                                              serial_type * 4 + -0x31cc)" * (cast_expression "(int *)(PTR_yy_shift_ofst_376__000f52d4 +\n                                              serial_type * 4 + -0x31cc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_yy_shift_ofst_376__000f52d4 +\n                                              serial_type * 4 + -0x31cc)" ( (binary_expression "PTR_yy_shift_ofst_376__000f52d4 +\n                                              serial_type * 4 + -0x31cc" (binary_expression "PTR_yy_shift_ofst_376__000f52d4 +\n                                              serial_type * 4" identifier + (binary_expression "serial_type * 4" identifier * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar6;" return identifier ;) })) (expression_statement "iVar6 = FUN_0004fce4((int)pKey1 + uVar19,serial_type - 8);" (assignment_expression "iVar6 = FUN_0004fce4((int)pKey1 + uVar19,serial_type - 8)" identifier = (call_expression "FUN_0004fce4((int)pKey1 + uVar19,serial_type - 8)" identifier (argument_list "((int)pKey1 + uVar19,serial_type - 8)" ( (binary_expression "(int)pKey1 + uVar19" (cast_expression "(int)pKey1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) , (binary_expression "serial_type - 8" identifier - number_literal) )))) ;) (return_statement "return iVar6;" return identifier ;) })) (expression_statement "(*(code *)(PTR_LAB_000f52c8 + 0x56a8))((int)pKey1 + uVar19,7,&mem1);" (call_expression "(*(code *)(PTR_LAB_000f52c8 + 0x56a8))((int)pKey1 + uVar19,7,&mem1)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52c8 + 0x56a8))" ( (pointer_expression "*(code *)(PTR_LAB_000f52c8 + 0x56a8)" * (cast_expression "(code *)(PTR_LAB_000f52c8 + 0x56a8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52c8 + 0x56a8)" ( (binary_expression "PTR_LAB_000f52c8 + 0x56a8" identifier + number_literal) )))) )) (argument_list "((int)pKey1 + uVar19,7,&mem1)" ( (binary_expression "(int)pKey1 + uVar19" (cast_expression "(int)pKey1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) , number_literal , (pointer_expression "&mem1" & identifier) ))) ;) (expression_statement "pMVar14 = (Mem *)mem1.u.nZero;" (assignment_expression "pMVar14 = (Mem *)mem1.u.nZero" identifier = (cast_expression "(Mem *)mem1.u.nZero" ( (type_descriptor "Mem *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "mem1.u.nZero" (field_expression "mem1.u" identifier . field_identifier) . field_identifier))) ;) (if_statement "if ((double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_) < *(double *)(puVar4 + 0x26c8)) {\n          pKey1_00 = (void *)0xffffffff;\n          goto LAB_0004fecc;\n        }" if (parenthesized_expression "((double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_) < *(double *)(puVar4 + 0x26c8))" ( (binary_expression "(double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_) < *(double *)(puVar4 + 0x26c8)" (cast_expression "(double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)" identifier (argument_list "(mem1.u.nZero,mem1.u.i._4_4_)" ( (field_expression "mem1.u.nZero" (field_expression "mem1.u" identifier . field_identifier) . field_identifier) , (field_expression "mem1.u.i._4_4_" (field_expression "mem1.u.i" (field_expression "mem1.u" identifier . field_identifier) . field_identifier) . field_identifier) )))) < (pointer_expression "*(double *)(puVar4 + 0x26c8)" * (cast_expression "(double *)(puVar4 + 0x26c8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 0x26c8)" ( (binary_expression "puVar4 + 0x26c8" identifier + number_literal) ))))) )) (compound_statement "{\n          pKey1_00 = (void *)0xffffffff;\n          goto LAB_0004fecc;\n        }" { (expression_statement "pKey1_00 = (void *)0xffffffff;" (assignment_expression "pKey1_00 = (void *)0xffffffff" identifier = (cast_expression "(void *)0xffffffff" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0004fecc;" goto statement_identifier ;) })) (if_statement "if ((double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_) < *(double *)(puVar4 + 0x26d0)) {\n          iVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                             ((pMem2->u).nZero,*(undefined4 *)((int)&pMem2->u + 4));\n          pKey1_00 = (void *)-iVar12;\n          goto LAB_0004fec4;\n        }" if (parenthesized_expression "((double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_) < *(double *)(puVar4 + 0x26d0))" ( (binary_expression "(double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_) < *(double *)(puVar4 + 0x26d0)" (cast_expression "(double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)" identifier (argument_list "(mem1.u.nZero,mem1.u.i._4_4_)" ( (field_expression "mem1.u.nZero" (field_expression "mem1.u" identifier . field_identifier) . field_identifier) , (field_expression "mem1.u.i._4_4_" (field_expression "mem1.u.i" (field_expression "mem1.u" identifier . field_identifier) . field_identifier) . field_identifier) )))) < (pointer_expression "*(double *)(puVar4 + 0x26d0)" * (cast_expression "(double *)(puVar4 + 0x26d0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 0x26d0)" ( (binary_expression "puVar4 + 0x26d0" identifier + number_literal) ))))) )) (compound_statement "{\n          iVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                             ((pMem2->u).nZero,*(undefined4 *)((int)&pMem2->u + 4));\n          pKey1_00 = (void *)-iVar12;\n          goto LAB_0004fec4;\n        }" { (expression_statement "iVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                             ((pMem2->u).nZero,*(undefined4 *)((int)&pMem2->u + 4));" (assignment_expression "iVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                             ((pMem2->u).nZero,*(undefined4 *)((int)&pMem2->u + 4))" identifier = (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x1598))\n                             ((pMem2->u).nZero,*(undefined4 *)((int)&pMem2->u + 4))" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x1598))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x1598)" * (cast_expression "(code *)(PTR_LAB_000f52ec + -0x1598)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x1598)" ( (binary_expression "PTR_LAB_000f52ec + -0x1598" identifier + number_literal) )))) )) (argument_list "((pMem2->u).nZero,*(undefined4 *)((int)&pMem2->u + 4))" ( (field_expression "(pMem2->u).nZero" (parenthesized_expression "(pMem2->u)" ( (field_expression "pMem2->u" identifier -> field_identifier) )) . field_identifier) , (pointer_expression "*(undefined4 *)((int)&pMem2->u + 4)" * (cast_expression "(undefined4 *)((int)&pMem2->u + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pMem2->u + 4)" ( (binary_expression "(int)&pMem2->u + 4" (cast_expression "(int)&pMem2->u" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pMem2->u" & (field_expression "pMem2->u" identifier -> field_identifier))) + number_literal) )))) )))) ;) (expression_statement "pKey1_00 = (void *)-iVar12;" (assignment_expression "pKey1_00 = (void *)-iVar12" identifier = (cast_expression "(void *)-iVar12" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-iVar12" - identifier))) ;) (goto_statement "goto LAB_0004fec4;" goto statement_identifier ;) })) (expression_statement "pKey1_00 = (void *)0x1;" (assignment_expression "pKey1_00 = (void *)0x1" identifier = (cast_expression "(void *)0x1" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pKVar16 = pPKey2->pKeyInfo;" (assignment_expression "pKVar16 = pPKey2->pKeyInfo" identifier = (field_expression "pPKey2->pKeyInfo" identifier -> field_identifier)) ;) (labeled_statement "LAB_0004fed0:\n        bVar2 = pKVar16->aSortFlags[bSkip];" statement_identifier : (expression_statement "bVar2 = pKVar16->aSortFlags[bSkip];" (assignment_expression "bVar2 = pKVar16->aSortFlags[bSkip]" identifier = (subscript_expression "pKVar16->aSortFlags[bSkip]" (field_expression "pKVar16->aSortFlags" identifier -> field_identifier) [ identifier ])) ;)) (if_statement "if (bVar2 == 0) goto LAB_0004fd90;" if (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004fd90;" goto statement_identifier ;)) (if_statement "if ((bVar2 & 2) != 0) {\n          if (serial_type == 0) {\n            bVar10 = 1;\n          }\n          else {\n            bVar10 = (byte)pMem2->flags & 1;\n          }\n          if ((bVar2 & 1) == bVar10) goto LAB_0004fd90;\n        }" if (parenthesized_expression "((bVar2 & 2) != 0)" ( (binary_expression "(bVar2 & 2) != 0" (parenthesized_expression "(bVar2 & 2)" ( (binary_expression "bVar2 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          if (serial_type == 0) {\n            bVar10 = 1;\n          }\n          else {\n            bVar10 = (byte)pMem2->flags & 1;\n          }\n          if ((bVar2 & 1) == bVar10) goto LAB_0004fd90;\n        }" { (if_statement "if (serial_type == 0) {\n            bVar10 = 1;\n          }\n          else {\n            bVar10 = (byte)pMem2->flags & 1;\n          }" if (parenthesized_expression "(serial_type == 0)" ( (binary_expression "serial_type == 0" identifier == number_literal) )) (compound_statement "{\n            bVar10 = 1;\n          }" { (expression_statement "bVar10 = 1;" (assignment_expression "bVar10 = 1" identifier = number_literal) ;) }) (else_clause "else {\n            bVar10 = (byte)pMem2->flags & 1;\n          }" else (compound_statement "{\n            bVar10 = (byte)pMem2->flags & 1;\n          }" { (expression_statement "bVar10 = (byte)pMem2->flags & 1;" (assignment_expression "bVar10 = (byte)pMem2->flags & 1" identifier = (binary_expression "(byte)pMem2->flags & 1" (cast_expression "(byte)pMem2->flags" ( (type_descriptor "byte" type_identifier) ) (field_expression "pMem2->flags" identifier -> field_identifier)) & number_literal)) ;) }))) (if_statement "if ((bVar2 & 1) == bVar10) goto LAB_0004fd90;" if (parenthesized_expression "((bVar2 & 1) == bVar10)" ( (binary_expression "(bVar2 & 1) == bVar10" (parenthesized_expression "(bVar2 & 1)" ( (binary_expression "bVar2 & 1" identifier & number_literal) )) == identifier) )) (goto_statement "goto LAB_0004fd90;" goto statement_identifier ;)) })) (expression_statement "pKey1_00 = (void *)-(int)pKey1_00;" (assignment_expression "pKey1_00 = (void *)-(int)pKey1_00" identifier = (cast_expression "(void *)-(int)pKey1_00" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)pKey1_00" - (cast_expression "(int)pKey1_00" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (goto_statement "goto LAB_0004fd90;" goto statement_identifier ;) })) (expression_statement "pMVar14 = (Mem *)(uVar8 & 8);" (assignment_expression "pMVar14 = (Mem *)(uVar8 & 8)" identifier = (cast_expression "(Mem *)(uVar8 & 8)" ( (type_descriptor "Mem *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar8 & 8)" ( (binary_expression "uVar8 & 8" identifier & number_literal) )))) ;) (if_statement "if ((uVar3 & 8) != 0) {\n        if (9 < serial_type) {\nLAB_0005018c:\n          pKVar16 = pPKey2->pKeyInfo;\n          pKey1_00 = (void *)0x1;\n          goto LAB_0004fed0;\n        }\n        if (serial_type != 0) {\n          pMVar14 = &mem1;\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))((int)pKey1 + uVar19);\n          if (serial_type == 7) {\n            if ((pMem2->u).r <= (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) {\n              if ((pMem2->u).r < (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) goto LAB_0005018c;\n              if (bSkip + 1U != (uint)pPKey2->nField) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            pMVar14 = (Mem *)(pMem2->u).pDef;\n            if ((pMem2->u).r < dVar21) goto LAB_0005018c;\n            if ((pMem2->u).r < dVar20) {\n              pKey1_00 = (void *)(*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                           (mem1.u.nZero,mem1.u.i._4_4_);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        pKVar16 = pPKey2->pKeyInfo;\n        pKey1_00 = (void *)0xffffffff;\n        goto LAB_0004fed0;\n      }" if (parenthesized_expression "((uVar3 & 8) != 0)" ( (binary_expression "(uVar3 & 8) != 0" (parenthesized_expression "(uVar3 & 8)" ( (binary_expression "uVar3 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        if (9 < serial_type) {\nLAB_0005018c:\n          pKVar16 = pPKey2->pKeyInfo;\n          pKey1_00 = (void *)0x1;\n          goto LAB_0004fed0;\n        }\n        if (serial_type != 0) {\n          pMVar14 = &mem1;\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))((int)pKey1 + uVar19);\n          if (serial_type == 7) {\n            if ((pMem2->u).r <= (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) {\n              if ((pMem2->u).r < (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) goto LAB_0005018c;\n              if (bSkip + 1U != (uint)pPKey2->nField) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            pMVar14 = (Mem *)(pMem2->u).pDef;\n            if ((pMem2->u).r < dVar21) goto LAB_0005018c;\n            if ((pMem2->u).r < dVar20) {\n              pKey1_00 = (void *)(*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                           (mem1.u.nZero,mem1.u.i._4_4_);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        pKVar16 = pPKey2->pKeyInfo;\n        pKey1_00 = (void *)0xffffffff;\n        goto LAB_0004fed0;\n      }" { (if_statement "if (9 < serial_type) {\nLAB_0005018c:\n          pKVar16 = pPKey2->pKeyInfo;\n          pKey1_00 = (void *)0x1;\n          goto LAB_0004fed0;\n        }" if (parenthesized_expression "(9 < serial_type)" ( (binary_expression "9 < serial_type" number_literal < identifier) )) (compound_statement "{\nLAB_0005018c:\n          pKVar16 = pPKey2->pKeyInfo;\n          pKey1_00 = (void *)0x1;\n          goto LAB_0004fed0;\n        }" { (labeled_statement "LAB_0005018c:\n          pKVar16 = pPKey2->pKeyInfo;" statement_identifier : (expression_statement "pKVar16 = pPKey2->pKeyInfo;" (assignment_expression "pKVar16 = pPKey2->pKeyInfo" identifier = (field_expression "pPKey2->pKeyInfo" identifier -> field_identifier)) ;)) (expression_statement "pKey1_00 = (void *)0x1;" (assignment_expression "pKey1_00 = (void *)0x1" identifier = (cast_expression "(void *)0x1" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0004fed0;" goto statement_identifier ;) })) (if_statement "if (serial_type != 0) {\n          pMVar14 = &mem1;\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))((int)pKey1 + uVar19);\n          if (serial_type == 7) {\n            if ((pMem2->u).r <= (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) {\n              if ((pMem2->u).r < (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) goto LAB_0005018c;\n              if (bSkip + 1U != (uint)pPKey2->nField) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            pMVar14 = (Mem *)(pMem2->u).pDef;\n            if ((pMem2->u).r < dVar21) goto LAB_0005018c;\n            if ((pMem2->u).r < dVar20) {\n              pKey1_00 = (void *)(*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                           (mem1.u.nZero,mem1.u.i._4_4_);\n              goto LAB_0004fec4;\n            }\n          }\n        }" if (parenthesized_expression "(serial_type != 0)" ( (binary_expression "serial_type != 0" identifier != number_literal) )) (compound_statement "{\n          pMVar14 = &mem1;\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))((int)pKey1 + uVar19);\n          if (serial_type == 7) {\n            if ((pMem2->u).r <= (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) {\n              if ((pMem2->u).r < (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) goto LAB_0005018c;\n              if (bSkip + 1U != (uint)pPKey2->nField) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            pMVar14 = (Mem *)(pMem2->u).pDef;\n            if ((pMem2->u).r < dVar21) goto LAB_0005018c;\n            if ((pMem2->u).r < dVar20) {\n              pKey1_00 = (void *)(*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                           (mem1.u.nZero,mem1.u.i._4_4_);\n              goto LAB_0004fec4;\n            }\n          }\n        }" { (expression_statement "pMVar14 = &mem1;" (assignment_expression "pMVar14 = &mem1" identifier = (pointer_expression "&mem1" & identifier)) ;) (expression_statement "(*(code *)(PTR_LAB_000f52c8 + 0x56a8))((int)pKey1 + uVar19);" (call_expression "(*(code *)(PTR_LAB_000f52c8 + 0x56a8))((int)pKey1 + uVar19)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52c8 + 0x56a8))" ( (pointer_expression "*(code *)(PTR_LAB_000f52c8 + 0x56a8)" * (cast_expression "(code *)(PTR_LAB_000f52c8 + 0x56a8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52c8 + 0x56a8)" ( (binary_expression "PTR_LAB_000f52c8 + 0x56a8" identifier + number_literal) )))) )) (argument_list "((int)pKey1 + uVar19)" ( (binary_expression "(int)pKey1 + uVar19" (cast_expression "(int)pKey1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) ;) (if_statement "if (serial_type == 7) {\n            if ((pMem2->u).r <= (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) {\n              if ((pMem2->u).r < (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) goto LAB_0005018c;\n              if (bSkip + 1U != (uint)pPKey2->nField) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            pMVar14 = (Mem *)(pMem2->u).pDef;\n            if ((pMem2->u).r < dVar21) goto LAB_0005018c;\n            if ((pMem2->u).r < dVar20) {\n              pKey1_00 = (void *)(*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                           (mem1.u.nZero,mem1.u.i._4_4_);\n              goto LAB_0004fec4;\n            }\n          }" if (parenthesized_expression "(serial_type == 7)" ( (binary_expression "serial_type == 7" identifier == number_literal) )) (compound_statement "{\n            if ((pMem2->u).r <= (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) {\n              if ((pMem2->u).r < (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) goto LAB_0005018c;\n              if (bSkip + 1U != (uint)pPKey2->nField) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }" { (if_statement "if ((pMem2->u).r <= (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) {\n              if ((pMem2->u).r < (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) goto LAB_0005018c;\n              if (bSkip + 1U != (uint)pPKey2->nField) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }" if (parenthesized_expression "((pMem2->u).r <= (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_))" ( (binary_expression "(pMem2->u).r <= (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)" (field_expression "(pMem2->u).r" (parenthesized_expression "(pMem2->u)" ( (field_expression "pMem2->u" identifier -> field_identifier) )) . field_identifier) <= (cast_expression "(double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)" identifier (argument_list "(mem1.u.nZero,mem1.u.i._4_4_)" ( (field_expression "mem1.u.nZero" (field_expression "mem1.u" identifier . field_identifier) . field_identifier) , (field_expression "mem1.u.i._4_4_" (field_expression "mem1.u.i" (field_expression "mem1.u" identifier . field_identifier) . field_identifier) . field_identifier) ))))) )) (compound_statement "{\n              if ((pMem2->u).r < (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) goto LAB_0005018c;\n              if (bSkip + 1U != (uint)pPKey2->nField) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }" { (if_statement "if ((pMem2->u).r < (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)) goto LAB_0005018c;" if (parenthesized_expression "((pMem2->u).r < (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_))" ( (binary_expression "(pMem2->u).r < (double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)" (field_expression "(pMem2->u).r" (parenthesized_expression "(pMem2->u)" ( (field_expression "pMem2->u" identifier -> field_identifier) )) . field_identifier) < (cast_expression "(double)CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(mem1.u.nZero,mem1.u.i._4_4_)" identifier (argument_list "(mem1.u.nZero,mem1.u.i._4_4_)" ( (field_expression "mem1.u.nZero" (field_expression "mem1.u" identifier . field_identifier) . field_identifier) , (field_expression "mem1.u.i._4_4_" (field_expression "mem1.u.i" (field_expression "mem1.u" identifier . field_identifier) . field_identifier) . field_identifier) ))))) )) (goto_statement "goto LAB_0005018c;" goto statement_identifier ;)) (if_statement "if (bSkip + 1U != (uint)pPKey2->nField) goto LAB_0004ff38;" if (parenthesized_expression "(bSkip + 1U != (uint)pPKey2->nField)" ( (binary_expression "bSkip + 1U != (uint)pPKey2->nField" (binary_expression "bSkip + 1U" identifier + number_literal) != (cast_expression "(uint)pPKey2->nField" ( (type_descriptor "uint" type_identifier) ) (field_expression "pPKey2->nField" identifier -> field_identifier))) )) (goto_statement "goto LAB_0004ff38;" goto statement_identifier ;)) (goto_statement "goto LAB_0004fd84;" goto statement_identifier ;) })) }) (else_clause "else {\n            pMVar14 = (Mem *)(pMem2->u).pDef;\n            if ((pMem2->u).r < dVar21) goto LAB_0005018c;\n            if ((pMem2->u).r < dVar20) {\n              pKey1_00 = (void *)(*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                           (mem1.u.nZero,mem1.u.i._4_4_);\n              goto LAB_0004fec4;\n            }\n          }" else (compound_statement "{\n            pMVar14 = (Mem *)(pMem2->u).pDef;\n            if ((pMem2->u).r < dVar21) goto LAB_0005018c;\n            if ((pMem2->u).r < dVar20) {\n              pKey1_00 = (void *)(*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                           (mem1.u.nZero,mem1.u.i._4_4_);\n              goto LAB_0004fec4;\n            }\n          }" { (expression_statement "pMVar14 = (Mem *)(pMem2->u).pDef;" (assignment_expression "pMVar14 = (Mem *)(pMem2->u).pDef" identifier = (cast_expression "(Mem *)(pMem2->u).pDef" ( (type_descriptor "Mem *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(pMem2->u).pDef" (parenthesized_expression "(pMem2->u)" ( (field_expression "pMem2->u" identifier -> field_identifier) )) . field_identifier))) ;) (if_statement "if ((pMem2->u).r < dVar21) goto LAB_0005018c;" if (parenthesized_expression "((pMem2->u).r < dVar21)" ( (binary_expression "(pMem2->u).r < dVar21" (field_expression "(pMem2->u).r" (parenthesized_expression "(pMem2->u)" ( (field_expression "pMem2->u" identifier -> field_identifier) )) . field_identifier) < identifier) )) (goto_statement "goto LAB_0005018c;" goto statement_identifier ;)) (if_statement "if ((pMem2->u).r < dVar20) {\n              pKey1_00 = (void *)(*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                           (mem1.u.nZero,mem1.u.i._4_4_);\n              goto LAB_0004fec4;\n            }" if (parenthesized_expression "((pMem2->u).r < dVar20)" ( (binary_expression "(pMem2->u).r < dVar20" (field_expression "(pMem2->u).r" (parenthesized_expression "(pMem2->u)" ( (field_expression "pMem2->u" identifier -> field_identifier) )) . field_identifier) < identifier) )) (compound_statement "{\n              pKey1_00 = (void *)(*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                           (mem1.u.nZero,mem1.u.i._4_4_);\n              goto LAB_0004fec4;\n            }" { (expression_statement "pKey1_00 = (void *)(*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                           (mem1.u.nZero,mem1.u.i._4_4_);" (assignment_expression "pKey1_00 = (void *)(*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                           (mem1.u.nZero,mem1.u.i._4_4_)" identifier = (cast_expression "(void *)(*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                           (mem1.u.nZero,mem1.u.i._4_4_)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                           (mem1.u.nZero,mem1.u.i._4_4_)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x1598))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x1598)" * (cast_expression "(code *)(PTR_LAB_000f52ec + -0x1598)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x1598)" ( (binary_expression "PTR_LAB_000f52ec + -0x1598" identifier + number_literal) )))) )) (argument_list "(mem1.u.nZero,mem1.u.i._4_4_)" ( (field_expression "mem1.u.nZero" (field_expression "mem1.u" identifier . field_identifier) . field_identifier) , (field_expression "mem1.u.i._4_4_" (field_expression "mem1.u.i" (field_expression "mem1.u" identifier . field_identifier) . field_identifier) . field_identifier) ))))) ;) (goto_statement "goto LAB_0004fec4;" goto statement_identifier ;) })) }))) })) (labeled_statement "LAB_00050270:\n        pKVar16 = pPKey2->pKeyInfo;" statement_identifier : (expression_statement "pKVar16 = pPKey2->pKeyInfo;" (assignment_expression "pKVar16 = pPKey2->pKeyInfo" identifier = (field_expression "pPKey2->pKeyInfo" identifier -> field_identifier)) ;)) (expression_statement "pKey1_00 = (void *)0xffffffff;" (assignment_expression "pKey1_00 = (void *)0xffffffff" identifier = (cast_expression "(void *)0xffffffff" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0004fed0;" goto statement_identifier ;) })) (expression_statement "pMVar14 = (Mem *)(uVar8 & 2);" (assignment_expression "pMVar14 = (Mem *)(uVar8 & 2)" identifier = (cast_expression "(Mem *)(uVar8 & 2)" ( (type_descriptor "Mem *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar8 & 2)" ( (binary_expression "uVar8 & 2" identifier & number_literal) )))) ;) (if_statement "if ((uVar3 & 2) != 0) {\n        if (0x7f < serial_type) {\n          (*pcVar7)(pbVar13,&serial_type);\n        }\n        if (serial_type < 0xc) goto LAB_00050270;\n        if ((serial_type & 1) == 0) goto LAB_0005018c;\n        pMVar15 = (Mem *)(serial_type - 0xc >> 1);\n        mem1.n = (int)pMVar15;\n        if ((int)&pMVar15->u + uVar19 <= (uint)nKey1) {\n          pKVar16 = pPKey2->pKeyInfo;\n          if (bSkip < (int)(uint)pKVar16->nAllField) {\n            pMVar14 = (Mem *)pKVar16->aColl[bSkip];\n            if (pMVar14 == (Mem *)0x0) {\n              pMVar17 = (Mem *)pMem2->n;\n              pMVar14 = pMVar17;\n              if ((int)pMVar15 <= (int)pMVar17) {\n                pMVar14 = pMVar15;\n              }\n              pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)\n                                           ((char *)((int)pKey1 + uVar19),pMem2->z);\n              if (pKey1_00 != (void *)0x0) goto LAB_0004fed0;\n              pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);\n            }\n            else {\n              mem1.enc = pKVar16->enc;\n              mem1.db = pKVar16->db;\n              mem1.flags = 2;\n              mem1.z = (char *)((int)pKey1 + uVar19);\n              pKey1_00 = (void *)vdbeCompareMemString\n                                           (&mem1,pMem2,(CollSeq *)pMVar14,&pPKey2->errCode);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        iVar12 = 0x14194;\n        goto LAB_0004fbfc;\n      }" if (parenthesized_expression "((uVar3 & 2) != 0)" ( (binary_expression "(uVar3 & 2) != 0" (parenthesized_expression "(uVar3 & 2)" ( (binary_expression "uVar3 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        if (0x7f < serial_type) {\n          (*pcVar7)(pbVar13,&serial_type);\n        }\n        if (serial_type < 0xc) goto LAB_00050270;\n        if ((serial_type & 1) == 0) goto LAB_0005018c;\n        pMVar15 = (Mem *)(serial_type - 0xc >> 1);\n        mem1.n = (int)pMVar15;\n        if ((int)&pMVar15->u + uVar19 <= (uint)nKey1) {\n          pKVar16 = pPKey2->pKeyInfo;\n          if (bSkip < (int)(uint)pKVar16->nAllField) {\n            pMVar14 = (Mem *)pKVar16->aColl[bSkip];\n            if (pMVar14 == (Mem *)0x0) {\n              pMVar17 = (Mem *)pMem2->n;\n              pMVar14 = pMVar17;\n              if ((int)pMVar15 <= (int)pMVar17) {\n                pMVar14 = pMVar15;\n              }\n              pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)\n                                           ((char *)((int)pKey1 + uVar19),pMem2->z);\n              if (pKey1_00 != (void *)0x0) goto LAB_0004fed0;\n              pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);\n            }\n            else {\n              mem1.enc = pKVar16->enc;\n              mem1.db = pKVar16->db;\n              mem1.flags = 2;\n              mem1.z = (char *)((int)pKey1 + uVar19);\n              pKey1_00 = (void *)vdbeCompareMemString\n                                           (&mem1,pMem2,(CollSeq *)pMVar14,&pPKey2->errCode);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        iVar12 = 0x14194;\n        goto LAB_0004fbfc;\n      }" { (if_statement "if (0x7f < serial_type) {\n          (*pcVar7)(pbVar13,&serial_type);\n        }" if (parenthesized_expression "(0x7f < serial_type)" ( (binary_expression "0x7f < serial_type" number_literal < identifier) )) (compound_statement "{\n          (*pcVar7)(pbVar13,&serial_type);\n        }" { (expression_statement "(*pcVar7)(pbVar13,&serial_type);" (call_expression "(*pcVar7)(pbVar13,&serial_type)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(pbVar13,&serial_type)" ( identifier , (pointer_expression "&serial_type" & identifier) ))) ;) })) (if_statement "if (serial_type < 0xc) goto LAB_00050270;" if (parenthesized_expression "(serial_type < 0xc)" ( (binary_expression "serial_type < 0xc" identifier < number_literal) )) (goto_statement "goto LAB_00050270;" goto statement_identifier ;)) (if_statement "if ((serial_type & 1) == 0) goto LAB_0005018c;" if (parenthesized_expression "((serial_type & 1) == 0)" ( (binary_expression "(serial_type & 1) == 0" (parenthesized_expression "(serial_type & 1)" ( (binary_expression "serial_type & 1" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0005018c;" goto statement_identifier ;)) (expression_statement "pMVar15 = (Mem *)(serial_type - 0xc >> 1);" (assignment_expression "pMVar15 = (Mem *)(serial_type - 0xc >> 1)" identifier = (cast_expression "(Mem *)(serial_type - 0xc >> 1)" ( (type_descriptor "Mem *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(serial_type - 0xc >> 1)" ( (binary_expression "serial_type - 0xc >> 1" (binary_expression "serial_type - 0xc" identifier - number_literal) >> number_literal) )))) ;) (expression_statement "mem1.n = (int)pMVar15;" (assignment_expression "mem1.n = (int)pMVar15" (field_expression "mem1.n" identifier . field_identifier) = (cast_expression "(int)pMVar15" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if ((int)&pMVar15->u + uVar19 <= (uint)nKey1) {\n          pKVar16 = pPKey2->pKeyInfo;\n          if (bSkip < (int)(uint)pKVar16->nAllField) {\n            pMVar14 = (Mem *)pKVar16->aColl[bSkip];\n            if (pMVar14 == (Mem *)0x0) {\n              pMVar17 = (Mem *)pMem2->n;\n              pMVar14 = pMVar17;\n              if ((int)pMVar15 <= (int)pMVar17) {\n                pMVar14 = pMVar15;\n              }\n              pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)\n                                           ((char *)((int)pKey1 + uVar19),pMem2->z);\n              if (pKey1_00 != (void *)0x0) goto LAB_0004fed0;\n              pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);\n            }\n            else {\n              mem1.enc = pKVar16->enc;\n              mem1.db = pKVar16->db;\n              mem1.flags = 2;\n              mem1.z = (char *)((int)pKey1 + uVar19);\n              pKey1_00 = (void *)vdbeCompareMemString\n                                           (&mem1,pMem2,(CollSeq *)pMVar14,&pPKey2->errCode);\n            }\n            goto LAB_0004fec4;\n          }\n        }" if (parenthesized_expression "((int)&pMVar15->u + uVar19 <= (uint)nKey1)" ( (binary_expression "(int)&pMVar15->u + uVar19 <= (uint)nKey1" (binary_expression "(int)&pMVar15->u + uVar19" (cast_expression "(int)&pMVar15->u" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pMVar15->u" & (field_expression "pMVar15->u" identifier -> field_identifier))) + identifier) <= (cast_expression "(uint)nKey1" ( (type_descriptor "uint" type_identifier) ) identifier)) )) (compound_statement "{\n          pKVar16 = pPKey2->pKeyInfo;\n          if (bSkip < (int)(uint)pKVar16->nAllField) {\n            pMVar14 = (Mem *)pKVar16->aColl[bSkip];\n            if (pMVar14 == (Mem *)0x0) {\n              pMVar17 = (Mem *)pMem2->n;\n              pMVar14 = pMVar17;\n              if ((int)pMVar15 <= (int)pMVar17) {\n                pMVar14 = pMVar15;\n              }\n              pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)\n                                           ((char *)((int)pKey1 + uVar19),pMem2->z);\n              if (pKey1_00 != (void *)0x0) goto LAB_0004fed0;\n              pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);\n            }\n            else {\n              mem1.enc = pKVar16->enc;\n              mem1.db = pKVar16->db;\n              mem1.flags = 2;\n              mem1.z = (char *)((int)pKey1 + uVar19);\n              pKey1_00 = (void *)vdbeCompareMemString\n                                           (&mem1,pMem2,(CollSeq *)pMVar14,&pPKey2->errCode);\n            }\n            goto LAB_0004fec4;\n          }\n        }" { (expression_statement "pKVar16 = pPKey2->pKeyInfo;" (assignment_expression "pKVar16 = pPKey2->pKeyInfo" identifier = (field_expression "pPKey2->pKeyInfo" identifier -> field_identifier)) ;) (if_statement "if (bSkip < (int)(uint)pKVar16->nAllField) {\n            pMVar14 = (Mem *)pKVar16->aColl[bSkip];\n            if (pMVar14 == (Mem *)0x0) {\n              pMVar17 = (Mem *)pMem2->n;\n              pMVar14 = pMVar17;\n              if ((int)pMVar15 <= (int)pMVar17) {\n                pMVar14 = pMVar15;\n              }\n              pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)\n                                           ((char *)((int)pKey1 + uVar19),pMem2->z);\n              if (pKey1_00 != (void *)0x0) goto LAB_0004fed0;\n              pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);\n            }\n            else {\n              mem1.enc = pKVar16->enc;\n              mem1.db = pKVar16->db;\n              mem1.flags = 2;\n              mem1.z = (char *)((int)pKey1 + uVar19);\n              pKey1_00 = (void *)vdbeCompareMemString\n                                           (&mem1,pMem2,(CollSeq *)pMVar14,&pPKey2->errCode);\n            }\n            goto LAB_0004fec4;\n          }" if (parenthesized_expression "(bSkip < (int)(uint)pKVar16->nAllField)" ( (binary_expression "bSkip < (int)(uint)pKVar16->nAllField" identifier < (cast_expression "(int)(uint)pKVar16->nAllField" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)pKVar16->nAllField" ( (type_descriptor "uint" type_identifier) ) (field_expression "pKVar16->nAllField" identifier -> field_identifier)))) )) (compound_statement "{\n            pMVar14 = (Mem *)pKVar16->aColl[bSkip];\n            if (pMVar14 == (Mem *)0x0) {\n              pMVar17 = (Mem *)pMem2->n;\n              pMVar14 = pMVar17;\n              if ((int)pMVar15 <= (int)pMVar17) {\n                pMVar14 = pMVar15;\n              }\n              pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)\n                                           ((char *)((int)pKey1 + uVar19),pMem2->z);\n              if (pKey1_00 != (void *)0x0) goto LAB_0004fed0;\n              pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);\n            }\n            else {\n              mem1.enc = pKVar16->enc;\n              mem1.db = pKVar16->db;\n              mem1.flags = 2;\n              mem1.z = (char *)((int)pKey1 + uVar19);\n              pKey1_00 = (void *)vdbeCompareMemString\n                                           (&mem1,pMem2,(CollSeq *)pMVar14,&pPKey2->errCode);\n            }\n            goto LAB_0004fec4;\n          }" { (expression_statement "pMVar14 = (Mem *)pKVar16->aColl[bSkip];" (assignment_expression "pMVar14 = (Mem *)pKVar16->aColl[bSkip]" identifier = (cast_expression "(Mem *)pKVar16->aColl[bSkip]" ( (type_descriptor "Mem *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "pKVar16->aColl[bSkip]" (field_expression "pKVar16->aColl" identifier -> field_identifier) [ identifier ]))) ;) (if_statement "if (pMVar14 == (Mem *)0x0) {\n              pMVar17 = (Mem *)pMem2->n;\n              pMVar14 = pMVar17;\n              if ((int)pMVar15 <= (int)pMVar17) {\n                pMVar14 = pMVar15;\n              }\n              pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)\n                                           ((char *)((int)pKey1 + uVar19),pMem2->z);\n              if (pKey1_00 != (void *)0x0) goto LAB_0004fed0;\n              pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);\n            }\n            else {\n              mem1.enc = pKVar16->enc;\n              mem1.db = pKVar16->db;\n              mem1.flags = 2;\n              mem1.z = (char *)((int)pKey1 + uVar19);\n              pKey1_00 = (void *)vdbeCompareMemString\n                                           (&mem1,pMem2,(CollSeq *)pMVar14,&pPKey2->errCode);\n            }" if (parenthesized_expression "(pMVar14 == (Mem *)0x0)" ( (binary_expression "pMVar14 == (Mem *)0x0" identifier == (cast_expression "(Mem *)0x0" ( (type_descriptor "Mem *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              pMVar17 = (Mem *)pMem2->n;\n              pMVar14 = pMVar17;\n              if ((int)pMVar15 <= (int)pMVar17) {\n                pMVar14 = pMVar15;\n              }\n              pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)\n                                           ((char *)((int)pKey1 + uVar19),pMem2->z);\n              if (pKey1_00 != (void *)0x0) goto LAB_0004fed0;\n              pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);\n            }" { (expression_statement "pMVar17 = (Mem *)pMem2->n;" (assignment_expression "pMVar17 = (Mem *)pMem2->n" identifier = (cast_expression "(Mem *)pMem2->n" ( (type_descriptor "Mem *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pMem2->n" identifier -> field_identifier))) ;) (expression_statement "pMVar14 = pMVar17;" (assignment_expression "pMVar14 = pMVar17" identifier = identifier) ;) (if_statement "if ((int)pMVar15 <= (int)pMVar17) {\n                pMVar14 = pMVar15;\n              }" if (parenthesized_expression "((int)pMVar15 <= (int)pMVar17)" ( (binary_expression "(int)pMVar15 <= (int)pMVar17" (cast_expression "(int)pMVar15" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)pMVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                pMVar14 = pMVar15;\n              }" { (expression_statement "pMVar14 = pMVar15;" (assignment_expression "pMVar14 = pMVar15" identifier = identifier) ;) })) (expression_statement "pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)\n                                           ((char *)((int)pKey1 + uVar19),pMem2->z);" (assignment_expression "pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)\n                                           ((char *)((int)pKey1 + uVar19),pMem2->z)" identifier = (cast_expression "(void *)(*(code *)PTR_memcmp_000f5554)\n                                           ((char *)((int)pKey1 + uVar19),pMem2->z)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_memcmp_000f5554)\n                                           ((char *)((int)pKey1 + uVar19),pMem2->z)" (parenthesized_expression "(*(code *)PTR_memcmp_000f5554)" ( (pointer_expression "*(code *)PTR_memcmp_000f5554" * (cast_expression "(code *)PTR_memcmp_000f5554" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((char *)((int)pKey1 + uVar19),pMem2->z)" ( (cast_expression "(char *)((int)pKey1 + uVar19)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pKey1 + uVar19)" ( (binary_expression "(int)pKey1 + uVar19" (cast_expression "(int)pKey1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) , (field_expression "pMem2->z" identifier -> field_identifier) ))))) ;) (if_statement "if (pKey1_00 != (void *)0x0) goto LAB_0004fed0;" if (parenthesized_expression "(pKey1_00 != (void *)0x0)" ( (binary_expression "pKey1_00 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0004fed0;" goto statement_identifier ;)) (expression_statement "pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);" (assignment_expression "pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17)" identifier = (cast_expression "(void *)((int)pMVar15 - (int)pMVar17)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pMVar15 - (int)pMVar17)" ( (binary_expression "(int)pMVar15 - (int)pMVar17" (cast_expression "(int)pMVar15" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pMVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) }) (else_clause "else {\n              mem1.enc = pKVar16->enc;\n              mem1.db = pKVar16->db;\n              mem1.flags = 2;\n              mem1.z = (char *)((int)pKey1 + uVar19);\n              pKey1_00 = (void *)vdbeCompareMemString\n                                           (&mem1,pMem2,(CollSeq *)pMVar14,&pPKey2->errCode);\n            }" else (compound_statement "{\n              mem1.enc = pKVar16->enc;\n              mem1.db = pKVar16->db;\n              mem1.flags = 2;\n              mem1.z = (char *)((int)pKey1 + uVar19);\n              pKey1_00 = (void *)vdbeCompareMemString\n                                           (&mem1,pMem2,(CollSeq *)pMVar14,&pPKey2->errCode);\n            }" { (expression_statement "mem1.enc = pKVar16->enc;" (assignment_expression "mem1.enc = pKVar16->enc" (field_expression "mem1.enc" identifier . field_identifier) = (field_expression "pKVar16->enc" identifier -> field_identifier)) ;) (expression_statement "mem1.db = pKVar16->db;" (assignment_expression "mem1.db = pKVar16->db" (field_expression "mem1.db" identifier . field_identifier) = (field_expression "pKVar16->db" identifier -> field_identifier)) ;) (expression_statement "mem1.flags = 2;" (assignment_expression "mem1.flags = 2" (field_expression "mem1.flags" identifier . field_identifier) = number_literal) ;) (expression_statement "mem1.z = (char *)((int)pKey1 + uVar19);" (assignment_expression "mem1.z = (char *)((int)pKey1 + uVar19)" (field_expression "mem1.z" identifier . field_identifier) = (cast_expression "(char *)((int)pKey1 + uVar19)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pKey1 + uVar19)" ( (binary_expression "(int)pKey1 + uVar19" (cast_expression "(int)pKey1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "pKey1_00 = (void *)vdbeCompareMemString\n                                           (&mem1,pMem2,(CollSeq *)pMVar14,&pPKey2->errCode);" (assignment_expression "pKey1_00 = (void *)vdbeCompareMemString\n                                           (&mem1,pMem2,(CollSeq *)pMVar14,&pPKey2->errCode)" identifier = (cast_expression "(void *)vdbeCompareMemString\n                                           (&mem1,pMem2,(CollSeq *)pMVar14,&pPKey2->errCode)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "vdbeCompareMemString\n                                           (&mem1,pMem2,(CollSeq *)pMVar14,&pPKey2->errCode)" identifier (argument_list "(&mem1,pMem2,(CollSeq *)pMVar14,&pPKey2->errCode)" ( (pointer_expression "&mem1" & identifier) , identifier , (cast_expression "(CollSeq *)pMVar14" ( (type_descriptor "CollSeq *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "&pPKey2->errCode" & (field_expression "pPKey2->errCode" identifier -> field_identifier)) ))))) ;) }))) (goto_statement "goto LAB_0004fec4;" goto statement_identifier ;) })) })) (expression_statement "iVar12 = 0x14194;" (assignment_expression "iVar12 = 0x14194" identifier = number_literal) ;) (goto_statement "goto LAB_0004fbfc;" goto statement_identifier ;) })) (if_statement "if ((uVar3 & 0x10) == 0) {\n        pKey1_00 = (void *)(uint)(serial_type != 0);\n      }\n      else {\n        if (0x7f < serial_type) {\n          (*pcVar7)(pbVar13,&serial_type);\n        }\n        if ((serial_type < 0xc) || ((serial_type & 1) != 0)) goto LAB_00050270;\n        pMVar15 = (Mem *)(serial_type - 0xc >> 1);\n        if ((uint)nKey1 < (int)&pMVar15->u + uVar19) {\n          iVar12 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if ((pMem2->flags & 0x4000) == 0) {\n          pMVar17 = (Mem *)pMem2->n;\n          pMVar14 = pMVar15;\n          if ((int)pMVar17 <= (int)pMVar15) {\n            pMVar14 = pMVar17;\n          }\n          pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)((int)pKey1 + uVar19,pMem2->z);\n          if (pKey1_00 != (void *)0x0) goto LAB_0004fecc;\n          pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);\n        }\n        else {\n          if (pMVar15 != (Mem *)0x0) {\n            if (*(char *)((int)pKey1 + uVar19) != '\0') goto LAB_0005018c;\n            pcVar9 = (char *)((int)pKey1 + uVar19 + 1);\n            while ((char *)((int)pKey1 + uVar19) + (int)pMVar15 != pcVar9) {\n              cVar1 = *pcVar9;\n              pcVar9 = pcVar9 + 1;\n              if (cVar1 != '\0') goto LAB_0005018c;\n            }\n          }\n          pKey1_00 = (void *)((int)pMVar15 - (pMem2->u).nZero);\n        }\n      }" if (parenthesized_expression "((uVar3 & 0x10) == 0)" ( (binary_expression "(uVar3 & 0x10) == 0" (parenthesized_expression "(uVar3 & 0x10)" ( (binary_expression "uVar3 & 0x10" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        pKey1_00 = (void *)(uint)(serial_type != 0);\n      }" { (expression_statement "pKey1_00 = (void *)(uint)(serial_type != 0);" (assignment_expression "pKey1_00 = (void *)(uint)(serial_type != 0)" identifier = (cast_expression "(void *)(uint)(serial_type != 0)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(serial_type != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(serial_type != 0)" ( (binary_expression "serial_type != 0" identifier != number_literal) ))))) ;) }) (else_clause "else {\n        if (0x7f < serial_type) {\n          (*pcVar7)(pbVar13,&serial_type);\n        }\n        if ((serial_type < 0xc) || ((serial_type & 1) != 0)) goto LAB_00050270;\n        pMVar15 = (Mem *)(serial_type - 0xc >> 1);\n        if ((uint)nKey1 < (int)&pMVar15->u + uVar19) {\n          iVar12 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if ((pMem2->flags & 0x4000) == 0) {\n          pMVar17 = (Mem *)pMem2->n;\n          pMVar14 = pMVar15;\n          if ((int)pMVar17 <= (int)pMVar15) {\n            pMVar14 = pMVar17;\n          }\n          pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)((int)pKey1 + uVar19,pMem2->z);\n          if (pKey1_00 != (void *)0x0) goto LAB_0004fecc;\n          pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);\n        }\n        else {\n          if (pMVar15 != (Mem *)0x0) {\n            if (*(char *)((int)pKey1 + uVar19) != '\0') goto LAB_0005018c;\n            pcVar9 = (char *)((int)pKey1 + uVar19 + 1);\n            while ((char *)((int)pKey1 + uVar19) + (int)pMVar15 != pcVar9) {\n              cVar1 = *pcVar9;\n              pcVar9 = pcVar9 + 1;\n              if (cVar1 != '\0') goto LAB_0005018c;\n            }\n          }\n          pKey1_00 = (void *)((int)pMVar15 - (pMem2->u).nZero);\n        }\n      }" else (compound_statement "{\n        if (0x7f < serial_type) {\n          (*pcVar7)(pbVar13,&serial_type);\n        }\n        if ((serial_type < 0xc) || ((serial_type & 1) != 0)) goto LAB_00050270;\n        pMVar15 = (Mem *)(serial_type - 0xc >> 1);\n        if ((uint)nKey1 < (int)&pMVar15->u + uVar19) {\n          iVar12 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if ((pMem2->flags & 0x4000) == 0) {\n          pMVar17 = (Mem *)pMem2->n;\n          pMVar14 = pMVar15;\n          if ((int)pMVar17 <= (int)pMVar15) {\n            pMVar14 = pMVar17;\n          }\n          pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)((int)pKey1 + uVar19,pMem2->z);\n          if (pKey1_00 != (void *)0x0) goto LAB_0004fecc;\n          pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);\n        }\n        else {\n          if (pMVar15 != (Mem *)0x0) {\n            if (*(char *)((int)pKey1 + uVar19) != '\0') goto LAB_0005018c;\n            pcVar9 = (char *)((int)pKey1 + uVar19 + 1);\n            while ((char *)((int)pKey1 + uVar19) + (int)pMVar15 != pcVar9) {\n              cVar1 = *pcVar9;\n              pcVar9 = pcVar9 + 1;\n              if (cVar1 != '\0') goto LAB_0005018c;\n            }\n          }\n          pKey1_00 = (void *)((int)pMVar15 - (pMem2->u).nZero);\n        }\n      }" { (if_statement "if (0x7f < serial_type) {\n          (*pcVar7)(pbVar13,&serial_type);\n        }" if (parenthesized_expression "(0x7f < serial_type)" ( (binary_expression "0x7f < serial_type" number_literal < identifier) )) (compound_statement "{\n          (*pcVar7)(pbVar13,&serial_type);\n        }" { (expression_statement "(*pcVar7)(pbVar13,&serial_type);" (call_expression "(*pcVar7)(pbVar13,&serial_type)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(pbVar13,&serial_type)" ( identifier , (pointer_expression "&serial_type" & identifier) ))) ;) })) (if_statement "if ((serial_type < 0xc) || ((serial_type & 1) != 0)) goto LAB_00050270;" if (parenthesized_expression "((serial_type < 0xc) || ((serial_type & 1) != 0))" ( (binary_expression "(serial_type < 0xc) || ((serial_type & 1) != 0)" (parenthesized_expression "(serial_type < 0xc)" ( (binary_expression "serial_type < 0xc" identifier < number_literal) )) || (parenthesized_expression "((serial_type & 1) != 0)" ( (binary_expression "(serial_type & 1) != 0" (parenthesized_expression "(serial_type & 1)" ( (binary_expression "serial_type & 1" identifier & number_literal) )) != number_literal) ))) )) (goto_statement "goto LAB_00050270;" goto statement_identifier ;)) (expression_statement "pMVar15 = (Mem *)(serial_type - 0xc >> 1);" (assignment_expression "pMVar15 = (Mem *)(serial_type - 0xc >> 1)" identifier = (cast_expression "(Mem *)(serial_type - 0xc >> 1)" ( (type_descriptor "Mem *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(serial_type - 0xc >> 1)" ( (binary_expression "serial_type - 0xc >> 1" (binary_expression "serial_type - 0xc" identifier - number_literal) >> number_literal) )))) ;) (if_statement "if ((uint)nKey1 < (int)&pMVar15->u + uVar19) {\n          iVar12 = 0x141b2;\n          goto LAB_0004fbfc;\n        }" if (parenthesized_expression "((uint)nKey1 < (int)&pMVar15->u + uVar19)" ( (binary_expression "(uint)nKey1 < (int)&pMVar15->u + uVar19" (cast_expression "(uint)nKey1" ( (type_descriptor "uint" type_identifier) ) identifier) < (binary_expression "(int)&pMVar15->u + uVar19" (cast_expression "(int)&pMVar15->u" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pMVar15->u" & (field_expression "pMVar15->u" identifier -> field_identifier))) + identifier)) )) (compound_statement "{\n          iVar12 = 0x141b2;\n          goto LAB_0004fbfc;\n        }" { (expression_statement "iVar12 = 0x141b2;" (assignment_expression "iVar12 = 0x141b2" identifier = number_literal) ;) (goto_statement "goto LAB_0004fbfc;" goto statement_identifier ;) })) (if_statement "if ((pMem2->flags & 0x4000) == 0) {\n          pMVar17 = (Mem *)pMem2->n;\n          pMVar14 = pMVar15;\n          if ((int)pMVar17 <= (int)pMVar15) {\n            pMVar14 = pMVar17;\n          }\n          pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)((int)pKey1 + uVar19,pMem2->z);\n          if (pKey1_00 != (void *)0x0) goto LAB_0004fecc;\n          pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);\n        }\n        else {\n          if (pMVar15 != (Mem *)0x0) {\n            if (*(char *)((int)pKey1 + uVar19) != '\0') goto LAB_0005018c;\n            pcVar9 = (char *)((int)pKey1 + uVar19 + 1);\n            while ((char *)((int)pKey1 + uVar19) + (int)pMVar15 != pcVar9) {\n              cVar1 = *pcVar9;\n              pcVar9 = pcVar9 + 1;\n              if (cVar1 != '\0') goto LAB_0005018c;\n            }\n          }\n          pKey1_00 = (void *)((int)pMVar15 - (pMem2->u).nZero);\n        }" if (parenthesized_expression "((pMem2->flags & 0x4000) == 0)" ( (binary_expression "(pMem2->flags & 0x4000) == 0" (parenthesized_expression "(pMem2->flags & 0x4000)" ( (binary_expression "pMem2->flags & 0x4000" (field_expression "pMem2->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n          pMVar17 = (Mem *)pMem2->n;\n          pMVar14 = pMVar15;\n          if ((int)pMVar17 <= (int)pMVar15) {\n            pMVar14 = pMVar17;\n          }\n          pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)((int)pKey1 + uVar19,pMem2->z);\n          if (pKey1_00 != (void *)0x0) goto LAB_0004fecc;\n          pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);\n        }" { (expression_statement "pMVar17 = (Mem *)pMem2->n;" (assignment_expression "pMVar17 = (Mem *)pMem2->n" identifier = (cast_expression "(Mem *)pMem2->n" ( (type_descriptor "Mem *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pMem2->n" identifier -> field_identifier))) ;) (expression_statement "pMVar14 = pMVar15;" (assignment_expression "pMVar14 = pMVar15" identifier = identifier) ;) (if_statement "if ((int)pMVar17 <= (int)pMVar15) {\n            pMVar14 = pMVar17;\n          }" if (parenthesized_expression "((int)pMVar17 <= (int)pMVar15)" ( (binary_expression "(int)pMVar17 <= (int)pMVar15" (cast_expression "(int)pMVar17" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)pMVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            pMVar14 = pMVar17;\n          }" { (expression_statement "pMVar14 = pMVar17;" (assignment_expression "pMVar14 = pMVar17" identifier = identifier) ;) })) (expression_statement "pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)((int)pKey1 + uVar19,pMem2->z);" (assignment_expression "pKey1_00 = (void *)(*(code *)PTR_memcmp_000f5554)((int)pKey1 + uVar19,pMem2->z)" identifier = (cast_expression "(void *)(*(code *)PTR_memcmp_000f5554)((int)pKey1 + uVar19,pMem2->z)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_memcmp_000f5554)((int)pKey1 + uVar19,pMem2->z)" (parenthesized_expression "(*(code *)PTR_memcmp_000f5554)" ( (pointer_expression "*(code *)PTR_memcmp_000f5554" * (cast_expression "(code *)PTR_memcmp_000f5554" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((int)pKey1 + uVar19,pMem2->z)" ( (binary_expression "(int)pKey1 + uVar19" (cast_expression "(int)pKey1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) , (field_expression "pMem2->z" identifier -> field_identifier) ))))) ;) (if_statement "if (pKey1_00 != (void *)0x0) goto LAB_0004fecc;" if (parenthesized_expression "(pKey1_00 != (void *)0x0)" ( (binary_expression "pKey1_00 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0004fecc;" goto statement_identifier ;)) (expression_statement "pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17);" (assignment_expression "pKey1_00 = (void *)((int)pMVar15 - (int)pMVar17)" identifier = (cast_expression "(void *)((int)pMVar15 - (int)pMVar17)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pMVar15 - (int)pMVar17)" ( (binary_expression "(int)pMVar15 - (int)pMVar17" (cast_expression "(int)pMVar15" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pMVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) }) (else_clause "else {\n          if (pMVar15 != (Mem *)0x0) {\n            if (*(char *)((int)pKey1 + uVar19) != '\0') goto LAB_0005018c;\n            pcVar9 = (char *)((int)pKey1 + uVar19 + 1);\n            while ((char *)((int)pKey1 + uVar19) + (int)pMVar15 != pcVar9) {\n              cVar1 = *pcVar9;\n              pcVar9 = pcVar9 + 1;\n              if (cVar1 != '\0') goto LAB_0005018c;\n            }\n          }\n          pKey1_00 = (void *)((int)pMVar15 - (pMem2->u).nZero);\n        }" else (compound_statement "{\n          if (pMVar15 != (Mem *)0x0) {\n            if (*(char *)((int)pKey1 + uVar19) != '\0') goto LAB_0005018c;\n            pcVar9 = (char *)((int)pKey1 + uVar19 + 1);\n            while ((char *)((int)pKey1 + uVar19) + (int)pMVar15 != pcVar9) {\n              cVar1 = *pcVar9;\n              pcVar9 = pcVar9 + 1;\n              if (cVar1 != '\0') goto LAB_0005018c;\n            }\n          }\n          pKey1_00 = (void *)((int)pMVar15 - (pMem2->u).nZero);\n        }" { (if_statement "if (pMVar15 != (Mem *)0x0) {\n            if (*(char *)((int)pKey1 + uVar19) != '\0') goto LAB_0005018c;\n            pcVar9 = (char *)((int)pKey1 + uVar19 + 1);\n            while ((char *)((int)pKey1 + uVar19) + (int)pMVar15 != pcVar9) {\n              cVar1 = *pcVar9;\n              pcVar9 = pcVar9 + 1;\n              if (cVar1 != '\0') goto LAB_0005018c;\n            }\n          }" if (parenthesized_expression "(pMVar15 != (Mem *)0x0)" ( (binary_expression "pMVar15 != (Mem *)0x0" identifier != (cast_expression "(Mem *)0x0" ( (type_descriptor "Mem *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            if (*(char *)((int)pKey1 + uVar19) != '\0') goto LAB_0005018c;\n            pcVar9 = (char *)((int)pKey1 + uVar19 + 1);\n            while ((char *)((int)pKey1 + uVar19) + (int)pMVar15 != pcVar9) {\n              cVar1 = *pcVar9;\n              pcVar9 = pcVar9 + 1;\n              if (cVar1 != '\0') goto LAB_0005018c;\n            }\n          }" { (if_statement "if (*(char *)((int)pKey1 + uVar19) != '\0') goto LAB_0005018c;" if (parenthesized_expression "(*(char *)((int)pKey1 + uVar19) != '\0')" ( (binary_expression "*(char *)((int)pKey1 + uVar19) != '\0'" (pointer_expression "*(char *)((int)pKey1 + uVar19)" * (cast_expression "(char *)((int)pKey1 + uVar19)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pKey1 + uVar19)" ( (binary_expression "(int)pKey1 + uVar19" (cast_expression "(int)pKey1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0005018c;" goto statement_identifier ;)) (expression_statement "pcVar9 = (char *)((int)pKey1 + uVar19 + 1);" (assignment_expression "pcVar9 = (char *)((int)pKey1 + uVar19 + 1)" identifier = (cast_expression "(char *)((int)pKey1 + uVar19 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pKey1 + uVar19 + 1)" ( (binary_expression "(int)pKey1 + uVar19 + 1" (binary_expression "(int)pKey1 + uVar19" (cast_expression "(int)pKey1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) (while_statement "while ((char *)((int)pKey1 + uVar19) + (int)pMVar15 != pcVar9) {\n              cVar1 = *pcVar9;\n              pcVar9 = pcVar9 + 1;\n              if (cVar1 != '\0') goto LAB_0005018c;\n            }" while (parenthesized_expression "((char *)((int)pKey1 + uVar19) + (int)pMVar15 != pcVar9)" ( (binary_expression "(char *)((int)pKey1 + uVar19) + (int)pMVar15 != pcVar9" (binary_expression "(char *)((int)pKey1 + uVar19) + (int)pMVar15" (cast_expression "(char *)((int)pKey1 + uVar19)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pKey1 + uVar19)" ( (binary_expression "(int)pKey1 + uVar19" (cast_expression "(int)pKey1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) + (cast_expression "(int)pMVar15" ( (type_descriptor "int" primitive_type) ) identifier)) != identifier) )) (compound_statement "{\n              cVar1 = *pcVar9;\n              pcVar9 = pcVar9 + 1;\n              if (cVar1 != '\0') goto LAB_0005018c;\n            }" { (expression_statement "cVar1 = *pcVar9;" (assignment_expression "cVar1 = *pcVar9" identifier = (pointer_expression "*pcVar9" * identifier)) ;) (expression_statement "pcVar9 = pcVar9 + 1;" (assignment_expression "pcVar9 = pcVar9 + 1" identifier = (binary_expression "pcVar9 + 1" identifier + number_literal)) ;) (if_statement "if (cVar1 != '\0') goto LAB_0005018c;" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0005018c;" goto statement_identifier ;)) })) })) (expression_statement "pKey1_00 = (void *)((int)pMVar15 - (pMem2->u).nZero);" (assignment_expression "pKey1_00 = (void *)((int)pMVar15 - (pMem2->u).nZero)" identifier = (cast_expression "(void *)((int)pMVar15 - (pMem2->u).nZero)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pMVar15 - (pMem2->u).nZero)" ( (binary_expression "(int)pMVar15 - (pMem2->u).nZero" (cast_expression "(int)pMVar15" ( (type_descriptor "int" primitive_type) ) identifier) - (field_expression "(pMem2->u).nZero" (parenthesized_expression "(pMem2->u)" ( (field_expression "pMem2->u" identifier -> field_identifier) )) . field_identifier)) )))) ;) }))) }))) (labeled_statement "LAB_0004fec4:\n      if (pKey1_00 != (void *)0x0) {\nLAB_0004fecc:\n        pKVar16 = pPKey2->pKeyInfo;\n        goto LAB_0004fed0;\n      }" statement_identifier : (if_statement "if (pKey1_00 != (void *)0x0) {\nLAB_0004fecc:\n        pKVar16 = pPKey2->pKeyInfo;\n        goto LAB_0004fed0;\n      }" if (parenthesized_expression "(pKey1_00 != (void *)0x0)" ( (binary_expression "pKey1_00 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0004fecc:\n        pKVar16 = pPKey2->pKeyInfo;\n        goto LAB_0004fed0;\n      }" { (labeled_statement "LAB_0004fecc:\n        pKVar16 = pPKey2->pKeyInfo;" statement_identifier : (expression_statement "pKVar16 = pPKey2->pKeyInfo;" (assignment_expression "pKVar16 = pPKey2->pKeyInfo" identifier = (field_expression "pPKey2->pKeyInfo" identifier -> field_identifier)) ;)) (goto_statement "goto LAB_0004fed0;" goto statement_identifier ;) }))) (if_statement "if ((uint)pPKey2->nField == bSkip + 1U) goto LAB_0004fd84;" if (parenthesized_expression "((uint)pPKey2->nField == bSkip + 1U)" ( (binary_expression "(uint)pPKey2->nField == bSkip + 1U" (cast_expression "(uint)pPKey2->nField" ( (type_descriptor "uint" type_identifier) ) (field_expression "pPKey2->nField" identifier -> field_identifier)) == (binary_expression "bSkip + 1U" identifier + number_literal)) )) (goto_statement "goto LAB_0004fd84;" goto statement_identifier ;)) (if_statement "if (serial_type < 0x80) {\nLAB_0004ff38:\n        uVar8 = (uint)(byte)puVar4[serial_type + 0x2208];\n      }\n      else {\n        uVar8 = serial_type - 0xc >> 1;\n      }" if (parenthesized_expression "(serial_type < 0x80)" ( (binary_expression "serial_type < 0x80" identifier < number_literal) )) (compound_statement "{\nLAB_0004ff38:\n        uVar8 = (uint)(byte)puVar4[serial_type + 0x2208];\n      }" { (labeled_statement "LAB_0004ff38:\n        uVar8 = (uint)(byte)puVar4[serial_type + 0x2208];" statement_identifier : (expression_statement "uVar8 = (uint)(byte)puVar4[serial_type + 0x2208];" (assignment_expression "uVar8 = (uint)(byte)puVar4[serial_type + 0x2208]" identifier = (cast_expression "(uint)(byte)puVar4[serial_type + 0x2208]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar4[serial_type + 0x2208]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar4[serial_type + 0x2208]" identifier [ (binary_expression "serial_type + 0x2208" identifier + number_literal) ])))) ;)) }) (else_clause "else {\n        uVar8 = serial_type - 0xc >> 1;\n      }" else (compound_statement "{\n        uVar8 = serial_type - 0xc >> 1;\n      }" { (expression_statement "uVar8 = serial_type - 0xc >> 1;" (assignment_expression "uVar8 = serial_type - 0xc >> 1" identifier = (binary_expression "serial_type - 0xc >> 1" (binary_expression "serial_type - 0xc" identifier - number_literal) >> number_literal)) ;) }))) (expression_statement "bSkip = bSkip + 1;" (assignment_expression "bSkip = bSkip + 1" identifier = (binary_expression "bSkip + 1" identifier + number_literal)) ;) (expression_statement "uVar19 = uVar19 + uVar8;" (assignment_expression "uVar19 = uVar19 + uVar8" identifier = (binary_expression "uVar19 + uVar8" identifier + identifier)) ;) (expression_statement "iVar12 = 1;" (assignment_expression "iVar12 = 1" identifier = number_literal) ;) (expression_statement "uVar8 = serial_type;" (assignment_expression "uVar8 = serial_type" identifier = identifier) ;) (while_statement "while (uVar8 = uVar8 >> 7, uVar8 != 0) {\n        iVar12 = iVar12 + 1;\n      }" while (parenthesized_expression "(uVar8 = uVar8 >> 7, uVar8 != 0)" ( (comma_expression "uVar8 = uVar8 >> 7, uVar8 != 0" (assignment_expression "uVar8 = uVar8 >> 7" identifier = (binary_expression "uVar8 >> 7" identifier >> number_literal)) , (binary_expression "uVar8 != 0" identifier != number_literal)) )) (compound_statement "{\n        iVar12 = iVar12 + 1;\n      }" { (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar18 = uVar18 + iVar12;" (assignment_expression "uVar18 = uVar18 + iVar12" identifier = (binary_expression "uVar18 + iVar12" identifier + identifier)) ;) (if_statement "if ((szHdr1 <= uVar18) || (pMem2 = pMem2 + 1, (uint)nKey1 < uVar19)) goto LAB_0004fd84;" if (parenthesized_expression "((szHdr1 <= uVar18) || (pMem2 = pMem2 + 1, (uint)nKey1 < uVar19))" ( (binary_expression "(szHdr1 <= uVar18) || (pMem2 = pMem2 + 1, (uint)nKey1 < uVar19)" (parenthesized_expression "(szHdr1 <= uVar18)" ( (binary_expression "szHdr1 <= uVar18" identifier <= identifier) )) || (parenthesized_expression "(pMem2 = pMem2 + 1, (uint)nKey1 < uVar19)" ( (comma_expression "pMem2 = pMem2 + 1, (uint)nKey1 < uVar19" (assignment_expression "pMem2 = pMem2 + 1" identifier = (binary_expression "pMem2 + 1" identifier + number_literal)) , (binary_expression "(uint)nKey1 < uVar19" (cast_expression "(uint)nKey1" ( (type_descriptor "uint" type_identifier) ) identifier) < identifier)) ))) )) (goto_statement "goto LAB_0004fd84;" goto statement_identifier ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "iVar12 = 0x14147;" (assignment_expression "iVar12 = 0x14147" identifier = number_literal) ;) (labeled_statement "LAB_0004fbfc:\n  iVar12 = sqlite3CorruptError(iVar12);" statement_identifier : (expression_statement "iVar12 = sqlite3CorruptError(iVar12);" (assignment_expression "iVar12 = sqlite3CorruptError(iVar12)" identifier = (call_expression "sqlite3CorruptError(iVar12)" identifier (argument_list "(iVar12)" ( identifier )))) ;)) (expression_statement "pKey1_00 = (void *)0x0;" (assignment_expression "pKey1_00 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pPKey2->errCode = (u8)iVar12;" (assignment_expression "pPKey2->errCode = (u8)iVar12" (field_expression "pPKey2->errCode" identifier -> field_identifier) = (cast_expression "(u8)iVar12" ( (type_descriptor "u8" type_identifier) ) identifier)) ;) (labeled_statement "LAB_0004fd90:\n  if (iVar6 == *(int *)puVar5) {\n    return (int)pKey1_00;\n  }" statement_identifier : (if_statement "if (iVar6 == *(int *)puVar5) {\n    return (int)pKey1_00;\n  }" if (parenthesized_expression "(iVar6 == *(int *)puVar5)" ( (binary_expression "iVar6 == *(int *)puVar5" identifier == (pointer_expression "*(int *)puVar5" * (cast_expression "(int *)puVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return (int)pKey1_00;\n  }" { (return_statement "return (int)pKey1_00;" return (cast_expression "(int)pKey1_00" ( (type_descriptor "int" primitive_type) ) identifier) ;) }))) (expression_statement "(*(code *)PTR___stack_chk_fail_000f5540)();" (call_expression "(*(code *)PTR___stack_chk_fail_000f5540)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000f5540)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000f5540" * (cast_expression "(code *)PTR___stack_chk_fail_000f5540" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "iVar6 = sqlite3VdbeRecordCompareWithSkip(iVar6,pKey1_00,(UnpackedRecord *)pMVar14,0);" (assignment_expression "iVar6 = sqlite3VdbeRecordCompareWithSkip(iVar6,pKey1_00,(UnpackedRecord *)pMVar14,0)" identifier = (call_expression "sqlite3VdbeRecordCompareWithSkip(iVar6,pKey1_00,(UnpackedRecord *)pMVar14,0)" identifier (argument_list "(iVar6,pKey1_00,(UnpackedRecord *)pMVar14,0)" ( identifier , identifier , (cast_expression "(UnpackedRecord *)pMVar14" ( (type_descriptor "UnpackedRecord *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal )))) ;) (return_statement "return iVar6;" return identifier ;) (labeled_statement "LAB_0004fd84:\n  pKey1_00 = (void *)(int)pPKey2->default_rc;" statement_identifier : (expression_statement "pKey1_00 = (void *)(int)pPKey2->default_rc;" (assignment_expression "pKey1_00 = (void *)(int)pPKey2->default_rc" identifier = (cast_expression "(void *)(int)pPKey2->default_rc" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)pPKey2->default_rc" ( (type_descriptor "int" primitive_type) ) (field_expression "pPKey2->default_rc" identifier -> field_identifier)))) ;)) (expression_statement "pPKey2->eqSeen = '\x01';" (assignment_expression "pPKey2->eqSeen = '\x01'" (field_expression "pPKey2->eqSeen" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (goto_statement "goto LAB_0004fd90;" goto statement_identifier ;) })))
(translation_unit "uint FUN_0004fb4c(uint param_1,byte *param_2,int *param_3,int param_4)\n\n{\n  byte bVar1;\n  double dVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined1 uVar6;\n  code *pcVar5;\n  uint uVar7;\n  byte bVar8;\n  undefined4 uVar9;\n  byte *pbVar10;\n  int iVar11;\n  uint uVar12;\n  int iVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  double *pdVar17;\n  double dVar18;\n  double dVar19;\n  uint local_70;\n  uint local_6c;\n  uint local_68;\n  undefined4 uStack_64;\n  undefined2 local_60;\n  undefined1 local_5e;\n  uint local_5c;\n  byte *local_58;\n  undefined4 local_48;\n  int local_3c;\n  \n  puVar4 = PTR___stack_chk_guard_000f5568;\n  local_3c = *(int *)PTR___stack_chk_guard_000f5568;\n  pdVar17 = (double *)param_3[1];\n  if (param_4 == 0) {\n    bVar1 = *param_2;\n    if ((char)bVar1 < '\0') {\n      uVar15 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70);\n      uVar16 = local_70;\n    }\n    else {\n      uVar15 = 1;\n      uVar16 = (uint)bVar1;\n      local_70 = (uint)bVar1;\n    }\n  }\n  else {\n    uVar15 = 2;\n    if ((char)param_2[1] < '\0') {\n      iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68);\n      uVar15 = iVar11 + 1;\n      local_70 = (uint)*param_2;\n      uVar16 = local_68;\n      if (local_68 < 0x80) goto LAB_0004fbd0;\n      uVar16 = (local_68 - 0xc >> 1) + local_70;\n    }\n    else {\n      local_70 = (uint)*param_2;\n      uVar16 = (uint)param_2[1];\nLAB_0004fbd0:\n      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;\n    }\n    pdVar17 = pdVar17 + 5;\n  }\n  puVar3 = PTR_DAT_000f52d4;\n  if (uVar16 <= param_1) {\n    dVar19 = *(double *)(PTR_DAT_000f52d4 + 0x26c8);\n    dVar18 = *(double *)(PTR_DAT_000f52d4 + 0x26d0);\n    pcVar5 = (code *)(PTR_LAB_000f52ec + -0x46ac);\n    do {\n      dVar2 = pdVar17[1];\n      pbVar10 = param_2 + uVar15;\n      local_6c = (uint)*pbVar10;\n      if (((ulonglong)dVar2 & 0x24000000000000) != 0) {\n        if (local_6c < 10) {\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    \n                    \n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }\nLAB_0005018c:\n        iVar11 = *param_3;\n        uVar12 = 1;\nLAB_0004fed0:\n        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);\n        if (bVar1 == 0) goto LAB_0004fd90;\n        if ((bVar1 & 2) != 0) {\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }\n        uVar12 = -uVar12;\n        goto LAB_0004fd90;\n      }\n      if (((ulonglong)dVar2 & 0x8000000000000) != 0) {\n        if (9 < local_6c) goto LAB_0005018c;\n        if (local_6c != 0) {\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        iVar11 = *param_3;\n        uVar12 = 0xffffffff;\n        goto LAB_0004fed0;\n      }\n      if (((ulonglong)dVar2 & 0x2000000000000) != 0) {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if (local_6c < 0xc) goto LAB_00050270;\n        if ((local_6c & 1) == 0) goto LAB_0005018c;\n        uVar7 = local_6c - 0xc >> 1;\n        local_5c = uVar7;\n        if (uVar7 + uVar16 <= param_1) {\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        uVar9 = 0x14194;\n        goto LAB_0004fbfc;\n      }\n      if (((ulonglong)dVar2 & 0x10000000000000) == 0) {\n        uVar12 = (uint)(local_6c != 0);\n      }\n      else {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;\n        uVar7 = local_6c - 0xc >> 1;\n        if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }\n      }\nLAB_0004fec4:\n      if (uVar12 != 0) {\nLAB_0004fecc:\n        iVar11 = *param_3;\n        goto LAB_0004fed0;\n      }\nLAB_0004fd10:\n      if ((uint)*(ushort *)(param_3 + 2) == param_4 + 1U) goto LAB_0004fd84;\n      if (local_6c < 0x80) {\nLAB_0004ff38:\n        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];\n      }\n      else {\n        uVar7 = local_6c - 0xc >> 1;\n      }\n      param_4 = param_4 + 1;\n      uVar16 = uVar16 + uVar7;\n      iVar11 = 1;\n      uVar7 = local_6c;\n      while (uVar7 = uVar7 >> 7, uVar7 != 0) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar15 = uVar15 + iVar11;\n      if ((local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16)) goto LAB_0004fd84;\n    } while( true );\n  }\n  uVar9 = 0x14147;\nLAB_0004fbfc:\n  uVar6 = FUN_00044904(uVar9);\n  uVar12 = 0;\n  *(undefined1 *)((int)param_3 + 0xb) = uVar6;\nLAB_0004fd90:\n  if (local_3c == *(int *)puVar4) {\n    return uVar12;\n  }\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  uVar15 = FUN_0004fb4c();\n  return uVar15;\nLAB_0004fd84:\n  uVar12 = (uint)*(char *)((int)param_3 + 10);\n  *(undefined1 *)((int)param_3 + 0xe) = 1;\n  goto LAB_0004fd90;\n}\n\n" (function_definition "uint FUN_0004fb4c(uint param_1,byte *param_2,int *param_3,int param_4)\n\n{\n  byte bVar1;\n  double dVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined1 uVar6;\n  code *pcVar5;\n  uint uVar7;\n  byte bVar8;\n  undefined4 uVar9;\n  byte *pbVar10;\n  int iVar11;\n  uint uVar12;\n  int iVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  double *pdVar17;\n  double dVar18;\n  double dVar19;\n  uint local_70;\n  uint local_6c;\n  uint local_68;\n  undefined4 uStack_64;\n  undefined2 local_60;\n  undefined1 local_5e;\n  uint local_5c;\n  byte *local_58;\n  undefined4 local_48;\n  int local_3c;\n  \n  puVar4 = PTR___stack_chk_guard_000f5568;\n  local_3c = *(int *)PTR___stack_chk_guard_000f5568;\n  pdVar17 = (double *)param_3[1];\n  if (param_4 == 0) {\n    bVar1 = *param_2;\n    if ((char)bVar1 < '\0') {\n      uVar15 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70);\n      uVar16 = local_70;\n    }\n    else {\n      uVar15 = 1;\n      uVar16 = (uint)bVar1;\n      local_70 = (uint)bVar1;\n    }\n  }\n  else {\n    uVar15 = 2;\n    if ((char)param_2[1] < '\0') {\n      iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68);\n      uVar15 = iVar11 + 1;\n      local_70 = (uint)*param_2;\n      uVar16 = local_68;\n      if (local_68 < 0x80) goto LAB_0004fbd0;\n      uVar16 = (local_68 - 0xc >> 1) + local_70;\n    }\n    else {\n      local_70 = (uint)*param_2;\n      uVar16 = (uint)param_2[1];\nLAB_0004fbd0:\n      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;\n    }\n    pdVar17 = pdVar17 + 5;\n  }\n  puVar3 = PTR_DAT_000f52d4;\n  if (uVar16 <= param_1) {\n    dVar19 = *(double *)(PTR_DAT_000f52d4 + 0x26c8);\n    dVar18 = *(double *)(PTR_DAT_000f52d4 + 0x26d0);\n    pcVar5 = (code *)(PTR_LAB_000f52ec + -0x46ac);\n    do {\n      dVar2 = pdVar17[1];\n      pbVar10 = param_2 + uVar15;\n      local_6c = (uint)*pbVar10;\n      if (((ulonglong)dVar2 & 0x24000000000000) != 0) {\n        if (local_6c < 10) {\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    \n                    \n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }\nLAB_0005018c:\n        iVar11 = *param_3;\n        uVar12 = 1;\nLAB_0004fed0:\n        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);\n        if (bVar1 == 0) goto LAB_0004fd90;\n        if ((bVar1 & 2) != 0) {\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }\n        uVar12 = -uVar12;\n        goto LAB_0004fd90;\n      }\n      if (((ulonglong)dVar2 & 0x8000000000000) != 0) {\n        if (9 < local_6c) goto LAB_0005018c;\n        if (local_6c != 0) {\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        iVar11 = *param_3;\n        uVar12 = 0xffffffff;\n        goto LAB_0004fed0;\n      }\n      if (((ulonglong)dVar2 & 0x2000000000000) != 0) {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if (local_6c < 0xc) goto LAB_00050270;\n        if ((local_6c & 1) == 0) goto LAB_0005018c;\n        uVar7 = local_6c - 0xc >> 1;\n        local_5c = uVar7;\n        if (uVar7 + uVar16 <= param_1) {\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        uVar9 = 0x14194;\n        goto LAB_0004fbfc;\n      }\n      if (((ulonglong)dVar2 & 0x10000000000000) == 0) {\n        uVar12 = (uint)(local_6c != 0);\n      }\n      else {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;\n        uVar7 = local_6c - 0xc >> 1;\n        if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }\n      }\nLAB_0004fec4:\n      if (uVar12 != 0) {\nLAB_0004fecc:\n        iVar11 = *param_3;\n        goto LAB_0004fed0;\n      }\nLAB_0004fd10:\n      if ((uint)*(ushort *)(param_3 + 2) == param_4 + 1U) goto LAB_0004fd84;\n      if (local_6c < 0x80) {\nLAB_0004ff38:\n        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];\n      }\n      else {\n        uVar7 = local_6c - 0xc >> 1;\n      }\n      param_4 = param_4 + 1;\n      uVar16 = uVar16 + uVar7;\n      iVar11 = 1;\n      uVar7 = local_6c;\n      while (uVar7 = uVar7 >> 7, uVar7 != 0) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar15 = uVar15 + iVar11;\n      if ((local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16)) goto LAB_0004fd84;\n    } while( true );\n  }\n  uVar9 = 0x14147;\nLAB_0004fbfc:\n  uVar6 = FUN_00044904(uVar9);\n  uVar12 = 0;\n  *(undefined1 *)((int)param_3 + 0xb) = uVar6;\nLAB_0004fd90:\n  if (local_3c == *(int *)puVar4) {\n    return uVar12;\n  }\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  uVar15 = FUN_0004fb4c();\n  return uVar15;\nLAB_0004fd84:\n  uVar12 = (uint)*(char *)((int)param_3 + 10);\n  *(undefined1 *)((int)param_3 + 0xe) = 1;\n  goto LAB_0004fd90;\n}" type_identifier (function_declarator "FUN_0004fb4c(uint param_1,byte *param_2,int *param_3,int param_4)" identifier (parameter_list "(uint param_1,byte *param_2,int *param_3,int param_4)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  double dVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined1 uVar6;\n  code *pcVar5;\n  uint uVar7;\n  byte bVar8;\n  undefined4 uVar9;\n  byte *pbVar10;\n  int iVar11;\n  uint uVar12;\n  int iVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  double *pdVar17;\n  double dVar18;\n  double dVar19;\n  uint local_70;\n  uint local_6c;\n  uint local_68;\n  undefined4 uStack_64;\n  undefined2 local_60;\n  undefined1 local_5e;\n  uint local_5c;\n  byte *local_58;\n  undefined4 local_48;\n  int local_3c;\n  \n  puVar4 = PTR___stack_chk_guard_000f5568;\n  local_3c = *(int *)PTR___stack_chk_guard_000f5568;\n  pdVar17 = (double *)param_3[1];\n  if (param_4 == 0) {\n    bVar1 = *param_2;\n    if ((char)bVar1 < '\0') {\n      uVar15 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70);\n      uVar16 = local_70;\n    }\n    else {\n      uVar15 = 1;\n      uVar16 = (uint)bVar1;\n      local_70 = (uint)bVar1;\n    }\n  }\n  else {\n    uVar15 = 2;\n    if ((char)param_2[1] < '\0') {\n      iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68);\n      uVar15 = iVar11 + 1;\n      local_70 = (uint)*param_2;\n      uVar16 = local_68;\n      if (local_68 < 0x80) goto LAB_0004fbd0;\n      uVar16 = (local_68 - 0xc >> 1) + local_70;\n    }\n    else {\n      local_70 = (uint)*param_2;\n      uVar16 = (uint)param_2[1];\nLAB_0004fbd0:\n      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;\n    }\n    pdVar17 = pdVar17 + 5;\n  }\n  puVar3 = PTR_DAT_000f52d4;\n  if (uVar16 <= param_1) {\n    dVar19 = *(double *)(PTR_DAT_000f52d4 + 0x26c8);\n    dVar18 = *(double *)(PTR_DAT_000f52d4 + 0x26d0);\n    pcVar5 = (code *)(PTR_LAB_000f52ec + -0x46ac);\n    do {\n      dVar2 = pdVar17[1];\n      pbVar10 = param_2 + uVar15;\n      local_6c = (uint)*pbVar10;\n      if (((ulonglong)dVar2 & 0x24000000000000) != 0) {\n        if (local_6c < 10) {\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    \n                    \n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }\nLAB_0005018c:\n        iVar11 = *param_3;\n        uVar12 = 1;\nLAB_0004fed0:\n        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);\n        if (bVar1 == 0) goto LAB_0004fd90;\n        if ((bVar1 & 2) != 0) {\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }\n        uVar12 = -uVar12;\n        goto LAB_0004fd90;\n      }\n      if (((ulonglong)dVar2 & 0x8000000000000) != 0) {\n        if (9 < local_6c) goto LAB_0005018c;\n        if (local_6c != 0) {\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        iVar11 = *param_3;\n        uVar12 = 0xffffffff;\n        goto LAB_0004fed0;\n      }\n      if (((ulonglong)dVar2 & 0x2000000000000) != 0) {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if (local_6c < 0xc) goto LAB_00050270;\n        if ((local_6c & 1) == 0) goto LAB_0005018c;\n        uVar7 = local_6c - 0xc >> 1;\n        local_5c = uVar7;\n        if (uVar7 + uVar16 <= param_1) {\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        uVar9 = 0x14194;\n        goto LAB_0004fbfc;\n      }\n      if (((ulonglong)dVar2 & 0x10000000000000) == 0) {\n        uVar12 = (uint)(local_6c != 0);\n      }\n      else {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;\n        uVar7 = local_6c - 0xc >> 1;\n        if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }\n      }\nLAB_0004fec4:\n      if (uVar12 != 0) {\nLAB_0004fecc:\n        iVar11 = *param_3;\n        goto LAB_0004fed0;\n      }\nLAB_0004fd10:\n      if ((uint)*(ushort *)(param_3 + 2) == param_4 + 1U) goto LAB_0004fd84;\n      if (local_6c < 0x80) {\nLAB_0004ff38:\n        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];\n      }\n      else {\n        uVar7 = local_6c - 0xc >> 1;\n      }\n      param_4 = param_4 + 1;\n      uVar16 = uVar16 + uVar7;\n      iVar11 = 1;\n      uVar7 = local_6c;\n      while (uVar7 = uVar7 >> 7, uVar7 != 0) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar15 = uVar15 + iVar11;\n      if ((local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16)) goto LAB_0004fd84;\n    } while( true );\n  }\n  uVar9 = 0x14147;\nLAB_0004fbfc:\n  uVar6 = FUN_00044904(uVar9);\n  uVar12 = 0;\n  *(undefined1 *)((int)param_3 + 0xb) = uVar6;\nLAB_0004fd90:\n  if (local_3c == *(int *)puVar4) {\n    return uVar12;\n  }\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  uVar15 = FUN_0004fb4c();\n  return uVar15;\nLAB_0004fd84:\n  uVar12 = (uint)*(char *)((int)param_3 + 10);\n  *(undefined1 *)((int)param_3 + 0xe) = 1;\n  goto LAB_0004fd90;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "double dVar2;" primitive_type identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined1 uVar6;" type_identifier identifier ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "double *pdVar17;" primitive_type (pointer_declarator "*pdVar17" * identifier) ;) (declaration "double dVar18;" primitive_type identifier ;) (declaration "double dVar19;" primitive_type identifier ;) (declaration "uint local_70;" type_identifier identifier ;) (declaration "uint local_6c;" type_identifier identifier ;) (declaration "uint local_68;" type_identifier identifier ;) (declaration "undefined4 uStack_64;" type_identifier identifier ;) (declaration "undefined2 local_60;" type_identifier identifier ;) (declaration "undefined1 local_5e;" type_identifier identifier ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "byte *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (expression_statement "puVar4 = PTR___stack_chk_guard_000f5568;" (assignment_expression "puVar4 = PTR___stack_chk_guard_000f5568" identifier = identifier) ;) (expression_statement "local_3c = *(int *)PTR___stack_chk_guard_000f5568;" (assignment_expression "local_3c = *(int *)PTR___stack_chk_guard_000f5568" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000f5568" * (cast_expression "(int *)PTR___stack_chk_guard_000f5568" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pdVar17 = (double *)param_3[1];" (assignment_expression "pdVar17 = (double *)param_3[1]" identifier = (cast_expression "(double *)param_3[1]" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ]))) ;) (if_statement "if (param_4 == 0) {\n    bVar1 = *param_2;\n    if ((char)bVar1 < '\0') {\n      uVar15 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70);\n      uVar16 = local_70;\n    }\n    else {\n      uVar15 = 1;\n      uVar16 = (uint)bVar1;\n      local_70 = (uint)bVar1;\n    }\n  }\n  else {\n    uVar15 = 2;\n    if ((char)param_2[1] < '\0') {\n      iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68);\n      uVar15 = iVar11 + 1;\n      local_70 = (uint)*param_2;\n      uVar16 = local_68;\n      if (local_68 < 0x80) goto LAB_0004fbd0;\n      uVar16 = (local_68 - 0xc >> 1) + local_70;\n    }\n    else {\n      local_70 = (uint)*param_2;\n      uVar16 = (uint)param_2[1];\nLAB_0004fbd0:\n      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;\n    }\n    pdVar17 = pdVar17 + 5;\n  }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n    bVar1 = *param_2;\n    if ((char)bVar1 < '\0') {\n      uVar15 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70);\n      uVar16 = local_70;\n    }\n    else {\n      uVar15 = 1;\n      uVar16 = (uint)bVar1;\n      local_70 = (uint)bVar1;\n    }\n  }" { (expression_statement "bVar1 = *param_2;" (assignment_expression "bVar1 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if ((char)bVar1 < '\0') {\n      uVar15 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70);\n      uVar16 = local_70;\n    }\n    else {\n      uVar15 = 1;\n      uVar16 = (uint)bVar1;\n      local_70 = (uint)bVar1;\n    }" if (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar15 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70);\n      uVar16 = local_70;\n    }" { (expression_statement "uVar15 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70);" (assignment_expression "uVar15 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70)" identifier = (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x46ac))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x46ac)" * (cast_expression "(code *)(PTR_LAB_000f52ec + -0x46ac)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x46ac)" ( (binary_expression "PTR_LAB_000f52ec + -0x46ac" identifier + number_literal) )))) )) (argument_list "(param_2,&local_70)" ( identifier , (pointer_expression "&local_70" & identifier) )))) ;) (expression_statement "uVar16 = local_70;" (assignment_expression "uVar16 = local_70" identifier = identifier) ;) }) (else_clause "else {\n      uVar15 = 1;\n      uVar16 = (uint)bVar1;\n      local_70 = (uint)bVar1;\n    }" else (compound_statement "{\n      uVar15 = 1;\n      uVar16 = (uint)bVar1;\n      local_70 = (uint)bVar1;\n    }" { (expression_statement "uVar15 = 1;" (assignment_expression "uVar15 = 1" identifier = number_literal) ;) (expression_statement "uVar16 = (uint)bVar1;" (assignment_expression "uVar16 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_70 = (uint)bVar1;" (assignment_expression "local_70 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) }) (else_clause "else {\n    uVar15 = 2;\n    if ((char)param_2[1] < '\0') {\n      iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68);\n      uVar15 = iVar11 + 1;\n      local_70 = (uint)*param_2;\n      uVar16 = local_68;\n      if (local_68 < 0x80) goto LAB_0004fbd0;\n      uVar16 = (local_68 - 0xc >> 1) + local_70;\n    }\n    else {\n      local_70 = (uint)*param_2;\n      uVar16 = (uint)param_2[1];\nLAB_0004fbd0:\n      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;\n    }\n    pdVar17 = pdVar17 + 5;\n  }" else (compound_statement "{\n    uVar15 = 2;\n    if ((char)param_2[1] < '\0') {\n      iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68);\n      uVar15 = iVar11 + 1;\n      local_70 = (uint)*param_2;\n      uVar16 = local_68;\n      if (local_68 < 0x80) goto LAB_0004fbd0;\n      uVar16 = (local_68 - 0xc >> 1) + local_70;\n    }\n    else {\n      local_70 = (uint)*param_2;\n      uVar16 = (uint)param_2[1];\nLAB_0004fbd0:\n      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;\n    }\n    pdVar17 = pdVar17 + 5;\n  }" { (expression_statement "uVar15 = 2;" (assignment_expression "uVar15 = 2" identifier = number_literal) ;) (if_statement "if ((char)param_2[1] < '\0') {\n      iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68);\n      uVar15 = iVar11 + 1;\n      local_70 = (uint)*param_2;\n      uVar16 = local_68;\n      if (local_68 < 0x80) goto LAB_0004fbd0;\n      uVar16 = (local_68 - 0xc >> 1) + local_70;\n    }\n    else {\n      local_70 = (uint)*param_2;\n      uVar16 = (uint)param_2[1];\nLAB_0004fbd0:\n      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;\n    }" if (parenthesized_expression "((char)param_2[1] < '\0')" ( (binary_expression "(char)param_2[1] < '\0'" (cast_expression "(char)param_2[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_2[1]" identifier [ number_literal ])) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68);\n      uVar15 = iVar11 + 1;\n      local_70 = (uint)*param_2;\n      uVar16 = local_68;\n      if (local_68 < 0x80) goto LAB_0004fbd0;\n      uVar16 = (local_68 - 0xc >> 1) + local_70;\n    }" { (expression_statement "iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68);" (assignment_expression "iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68)" identifier = (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x46ac))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x46ac)" * (cast_expression "(code *)(PTR_LAB_000f52ec + -0x46ac)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x46ac)" ( (binary_expression "PTR_LAB_000f52ec + -0x46ac" identifier + number_literal) )))) )) (argument_list "(param_2 + 1,&local_68)" ( (binary_expression "param_2 + 1" identifier + number_literal) , (pointer_expression "&local_68" & identifier) )))) ;) (expression_statement "uVar15 = iVar11 + 1;" (assignment_expression "uVar15 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (expression_statement "local_70 = (uint)*param_2;" (assignment_expression "local_70 = (uint)*param_2" identifier = (binary_expression "(uint)*param_2" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "uVar16 = local_68;" (assignment_expression "uVar16 = local_68" identifier = identifier) ;) (if_statement "if (local_68 < 0x80) goto LAB_0004fbd0;" if (parenthesized_expression "(local_68 < 0x80)" ( (binary_expression "local_68 < 0x80" identifier < number_literal) )) (goto_statement "goto LAB_0004fbd0;" goto statement_identifier ;)) (expression_statement "uVar16 = (local_68 - 0xc >> 1) + local_70;" (assignment_expression "uVar16 = (local_68 - 0xc >> 1) + local_70" identifier = (binary_expression "(local_68 - 0xc >> 1) + local_70" (parenthesized_expression "(local_68 - 0xc >> 1)" ( (binary_expression "local_68 - 0xc >> 1" (binary_expression "local_68 - 0xc" identifier - number_literal) >> number_literal) )) + identifier)) ;) }) (else_clause "else {\n      local_70 = (uint)*param_2;\n      uVar16 = (uint)param_2[1];\nLAB_0004fbd0:\n      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;\n    }" else (compound_statement "{\n      local_70 = (uint)*param_2;\n      uVar16 = (uint)param_2[1];\nLAB_0004fbd0:\n      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;\n    }" { (expression_statement "local_70 = (uint)*param_2;" (assignment_expression "local_70 = (uint)*param_2" identifier = (binary_expression "(uint)*param_2" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "uVar16 = (uint)param_2[1];" (assignment_expression "uVar16 = (uint)param_2[1]" identifier = (cast_expression "(uint)param_2[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) ;) (labeled_statement "LAB_0004fbd0:\n      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;" statement_identifier : (expression_statement "uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;" (assignment_expression "uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70" identifier = (binary_expression "(byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70" (cast_expression "(byte)PTR_DAT_000f52d4[uVar16 + 0x2208]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "PTR_DAT_000f52d4[uVar16 + 0x2208]" identifier [ (binary_expression "uVar16 + 0x2208" identifier + number_literal) ])) + identifier)) ;)) }))) (expression_statement "pdVar17 = pdVar17 + 5;" (assignment_expression "pdVar17 = pdVar17 + 5" identifier = (binary_expression "pdVar17 + 5" identifier + number_literal)) ;) }))) (expression_statement "puVar3 = PTR_DAT_000f52d4;" (assignment_expression "puVar3 = PTR_DAT_000f52d4" identifier = identifier) ;) (if_statement "if (uVar16 <= param_1) {\n    dVar19 = *(double *)(PTR_DAT_000f52d4 + 0x26c8);\n    dVar18 = *(double *)(PTR_DAT_000f52d4 + 0x26d0);\n    pcVar5 = (code *)(PTR_LAB_000f52ec + -0x46ac);\n    do {\n      dVar2 = pdVar17[1];\n      pbVar10 = param_2 + uVar15;\n      local_6c = (uint)*pbVar10;\n      if (((ulonglong)dVar2 & 0x24000000000000) != 0) {\n        if (local_6c < 10) {\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    \n                    \n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }\nLAB_0005018c:\n        iVar11 = *param_3;\n        uVar12 = 1;\nLAB_0004fed0:\n        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);\n        if (bVar1 == 0) goto LAB_0004fd90;\n        if ((bVar1 & 2) != 0) {\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }\n        uVar12 = -uVar12;\n        goto LAB_0004fd90;\n      }\n      if (((ulonglong)dVar2 & 0x8000000000000) != 0) {\n        if (9 < local_6c) goto LAB_0005018c;\n        if (local_6c != 0) {\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        iVar11 = *param_3;\n        uVar12 = 0xffffffff;\n        goto LAB_0004fed0;\n      }\n      if (((ulonglong)dVar2 & 0x2000000000000) != 0) {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if (local_6c < 0xc) goto LAB_00050270;\n        if ((local_6c & 1) == 0) goto LAB_0005018c;\n        uVar7 = local_6c - 0xc >> 1;\n        local_5c = uVar7;\n        if (uVar7 + uVar16 <= param_1) {\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        uVar9 = 0x14194;\n        goto LAB_0004fbfc;\n      }\n      if (((ulonglong)dVar2 & 0x10000000000000) == 0) {\n        uVar12 = (uint)(local_6c != 0);\n      }\n      else {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;\n        uVar7 = local_6c - 0xc >> 1;\n        if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }\n      }\nLAB_0004fec4:\n      if (uVar12 != 0) {\nLAB_0004fecc:\n        iVar11 = *param_3;\n        goto LAB_0004fed0;\n      }\nLAB_0004fd10:\n      if ((uint)*(ushort *)(param_3 + 2) == param_4 + 1U) goto LAB_0004fd84;\n      if (local_6c < 0x80) {\nLAB_0004ff38:\n        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];\n      }\n      else {\n        uVar7 = local_6c - 0xc >> 1;\n      }\n      param_4 = param_4 + 1;\n      uVar16 = uVar16 + uVar7;\n      iVar11 = 1;\n      uVar7 = local_6c;\n      while (uVar7 = uVar7 >> 7, uVar7 != 0) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar15 = uVar15 + iVar11;\n      if ((local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16)) goto LAB_0004fd84;\n    } while( true );\n  }" if (parenthesized_expression "(uVar16 <= param_1)" ( (binary_expression "uVar16 <= param_1" identifier <= identifier) )) (compound_statement "{\n    dVar19 = *(double *)(PTR_DAT_000f52d4 + 0x26c8);\n    dVar18 = *(double *)(PTR_DAT_000f52d4 + 0x26d0);\n    pcVar5 = (code *)(PTR_LAB_000f52ec + -0x46ac);\n    do {\n      dVar2 = pdVar17[1];\n      pbVar10 = param_2 + uVar15;\n      local_6c = (uint)*pbVar10;\n      if (((ulonglong)dVar2 & 0x24000000000000) != 0) {\n        if (local_6c < 10) {\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    \n                    \n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }\nLAB_0005018c:\n        iVar11 = *param_3;\n        uVar12 = 1;\nLAB_0004fed0:\n        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);\n        if (bVar1 == 0) goto LAB_0004fd90;\n        if ((bVar1 & 2) != 0) {\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }\n        uVar12 = -uVar12;\n        goto LAB_0004fd90;\n      }\n      if (((ulonglong)dVar2 & 0x8000000000000) != 0) {\n        if (9 < local_6c) goto LAB_0005018c;\n        if (local_6c != 0) {\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        iVar11 = *param_3;\n        uVar12 = 0xffffffff;\n        goto LAB_0004fed0;\n      }\n      if (((ulonglong)dVar2 & 0x2000000000000) != 0) {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if (local_6c < 0xc) goto LAB_00050270;\n        if ((local_6c & 1) == 0) goto LAB_0005018c;\n        uVar7 = local_6c - 0xc >> 1;\n        local_5c = uVar7;\n        if (uVar7 + uVar16 <= param_1) {\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        uVar9 = 0x14194;\n        goto LAB_0004fbfc;\n      }\n      if (((ulonglong)dVar2 & 0x10000000000000) == 0) {\n        uVar12 = (uint)(local_6c != 0);\n      }\n      else {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;\n        uVar7 = local_6c - 0xc >> 1;\n        if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }\n      }\nLAB_0004fec4:\n      if (uVar12 != 0) {\nLAB_0004fecc:\n        iVar11 = *param_3;\n        goto LAB_0004fed0;\n      }\nLAB_0004fd10:\n      if ((uint)*(ushort *)(param_3 + 2) == param_4 + 1U) goto LAB_0004fd84;\n      if (local_6c < 0x80) {\nLAB_0004ff38:\n        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];\n      }\n      else {\n        uVar7 = local_6c - 0xc >> 1;\n      }\n      param_4 = param_4 + 1;\n      uVar16 = uVar16 + uVar7;\n      iVar11 = 1;\n      uVar7 = local_6c;\n      while (uVar7 = uVar7 >> 7, uVar7 != 0) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar15 = uVar15 + iVar11;\n      if ((local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16)) goto LAB_0004fd84;\n    } while( true );\n  }" { (expression_statement "dVar19 = *(double *)(PTR_DAT_000f52d4 + 0x26c8);" (assignment_expression "dVar19 = *(double *)(PTR_DAT_000f52d4 + 0x26c8)" identifier = (pointer_expression "*(double *)(PTR_DAT_000f52d4 + 0x26c8)" * (cast_expression "(double *)(PTR_DAT_000f52d4 + 0x26c8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000f52d4 + 0x26c8)" ( (binary_expression "PTR_DAT_000f52d4 + 0x26c8" identifier + number_literal) ))))) ;) (expression_statement "dVar18 = *(double *)(PTR_DAT_000f52d4 + 0x26d0);" (assignment_expression "dVar18 = *(double *)(PTR_DAT_000f52d4 + 0x26d0)" identifier = (pointer_expression "*(double *)(PTR_DAT_000f52d4 + 0x26d0)" * (cast_expression "(double *)(PTR_DAT_000f52d4 + 0x26d0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000f52d4 + 0x26d0)" ( (binary_expression "PTR_DAT_000f52d4 + 0x26d0" identifier + number_literal) ))))) ;) (expression_statement "pcVar5 = (code *)(PTR_LAB_000f52ec + -0x46ac);" (assignment_expression "pcVar5 = (code *)(PTR_LAB_000f52ec + -0x46ac)" identifier = (cast_expression "(code *)(PTR_LAB_000f52ec + -0x46ac)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x46ac)" ( (binary_expression "PTR_LAB_000f52ec + -0x46ac" identifier + number_literal) )))) ;) (do_statement "do {\n      dVar2 = pdVar17[1];\n      pbVar10 = param_2 + uVar15;\n      local_6c = (uint)*pbVar10;\n      if (((ulonglong)dVar2 & 0x24000000000000) != 0) {\n        if (local_6c < 10) {\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    \n                    \n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }\nLAB_0005018c:\n        iVar11 = *param_3;\n        uVar12 = 1;\nLAB_0004fed0:\n        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);\n        if (bVar1 == 0) goto LAB_0004fd90;\n        if ((bVar1 & 2) != 0) {\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }\n        uVar12 = -uVar12;\n        goto LAB_0004fd90;\n      }\n      if (((ulonglong)dVar2 & 0x8000000000000) != 0) {\n        if (9 < local_6c) goto LAB_0005018c;\n        if (local_6c != 0) {\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        iVar11 = *param_3;\n        uVar12 = 0xffffffff;\n        goto LAB_0004fed0;\n      }\n      if (((ulonglong)dVar2 & 0x2000000000000) != 0) {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if (local_6c < 0xc) goto LAB_00050270;\n        if ((local_6c & 1) == 0) goto LAB_0005018c;\n        uVar7 = local_6c - 0xc >> 1;\n        local_5c = uVar7;\n        if (uVar7 + uVar16 <= param_1) {\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        uVar9 = 0x14194;\n        goto LAB_0004fbfc;\n      }\n      if (((ulonglong)dVar2 & 0x10000000000000) == 0) {\n        uVar12 = (uint)(local_6c != 0);\n      }\n      else {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;\n        uVar7 = local_6c - 0xc >> 1;\n        if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }\n      }\nLAB_0004fec4:\n      if (uVar12 != 0) {\nLAB_0004fecc:\n        iVar11 = *param_3;\n        goto LAB_0004fed0;\n      }\nLAB_0004fd10:\n      if ((uint)*(ushort *)(param_3 + 2) == param_4 + 1U) goto LAB_0004fd84;\n      if (local_6c < 0x80) {\nLAB_0004ff38:\n        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];\n      }\n      else {\n        uVar7 = local_6c - 0xc >> 1;\n      }\n      param_4 = param_4 + 1;\n      uVar16 = uVar16 + uVar7;\n      iVar11 = 1;\n      uVar7 = local_6c;\n      while (uVar7 = uVar7 >> 7, uVar7 != 0) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar15 = uVar15 + iVar11;\n      if ((local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16)) goto LAB_0004fd84;\n    } while( true );" do (compound_statement "{\n      dVar2 = pdVar17[1];\n      pbVar10 = param_2 + uVar15;\n      local_6c = (uint)*pbVar10;\n      if (((ulonglong)dVar2 & 0x24000000000000) != 0) {\n        if (local_6c < 10) {\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    \n                    \n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }\nLAB_0005018c:\n        iVar11 = *param_3;\n        uVar12 = 1;\nLAB_0004fed0:\n        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);\n        if (bVar1 == 0) goto LAB_0004fd90;\n        if ((bVar1 & 2) != 0) {\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }\n        uVar12 = -uVar12;\n        goto LAB_0004fd90;\n      }\n      if (((ulonglong)dVar2 & 0x8000000000000) != 0) {\n        if (9 < local_6c) goto LAB_0005018c;\n        if (local_6c != 0) {\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        iVar11 = *param_3;\n        uVar12 = 0xffffffff;\n        goto LAB_0004fed0;\n      }\n      if (((ulonglong)dVar2 & 0x2000000000000) != 0) {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if (local_6c < 0xc) goto LAB_00050270;\n        if ((local_6c & 1) == 0) goto LAB_0005018c;\n        uVar7 = local_6c - 0xc >> 1;\n        local_5c = uVar7;\n        if (uVar7 + uVar16 <= param_1) {\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        uVar9 = 0x14194;\n        goto LAB_0004fbfc;\n      }\n      if (((ulonglong)dVar2 & 0x10000000000000) == 0) {\n        uVar12 = (uint)(local_6c != 0);\n      }\n      else {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;\n        uVar7 = local_6c - 0xc >> 1;\n        if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }\n      }\nLAB_0004fec4:\n      if (uVar12 != 0) {\nLAB_0004fecc:\n        iVar11 = *param_3;\n        goto LAB_0004fed0;\n      }\nLAB_0004fd10:\n      if ((uint)*(ushort *)(param_3 + 2) == param_4 + 1U) goto LAB_0004fd84;\n      if (local_6c < 0x80) {\nLAB_0004ff38:\n        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];\n      }\n      else {\n        uVar7 = local_6c - 0xc >> 1;\n      }\n      param_4 = param_4 + 1;\n      uVar16 = uVar16 + uVar7;\n      iVar11 = 1;\n      uVar7 = local_6c;\n      while (uVar7 = uVar7 >> 7, uVar7 != 0) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar15 = uVar15 + iVar11;\n      if ((local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16)) goto LAB_0004fd84;\n    }" { (expression_statement "dVar2 = pdVar17[1];" (assignment_expression "dVar2 = pdVar17[1]" identifier = (subscript_expression "pdVar17[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar10 = param_2 + uVar15;" (assignment_expression "pbVar10 = param_2 + uVar15" identifier = (binary_expression "param_2 + uVar15" identifier + identifier)) ;) (expression_statement "local_6c = (uint)*pbVar10;" (assignment_expression "local_6c = (uint)*pbVar10" identifier = (binary_expression "(uint)*pbVar10" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (if_statement "if (((ulonglong)dVar2 & 0x24000000000000) != 0) {\n        if (local_6c < 10) {\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    \n                    \n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }\nLAB_0005018c:\n        iVar11 = *param_3;\n        uVar12 = 1;\nLAB_0004fed0:\n        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);\n        if (bVar1 == 0) goto LAB_0004fd90;\n        if ((bVar1 & 2) != 0) {\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }\n        uVar12 = -uVar12;\n        goto LAB_0004fd90;\n      }" if (parenthesized_expression "(((ulonglong)dVar2 & 0x24000000000000) != 0)" ( (binary_expression "((ulonglong)dVar2 & 0x24000000000000) != 0" (parenthesized_expression "((ulonglong)dVar2 & 0x24000000000000)" ( (binary_expression "(ulonglong)dVar2 & 0x24000000000000" (cast_expression "(ulonglong)dVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n        if (local_6c < 10) {\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    \n                    \n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }\nLAB_0005018c:\n        iVar11 = *param_3;\n        uVar12 = 1;\nLAB_0004fed0:\n        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);\n        if (bVar1 == 0) goto LAB_0004fd90;\n        if ((bVar1 & 2) != 0) {\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }\n        uVar12 = -uVar12;\n        goto LAB_0004fd90;\n      }" { (if_statement "if (local_6c < 10) {\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    \n                    \n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }" if (parenthesized_expression "(local_6c < 10)" ( (binary_expression "local_6c < 10" identifier < number_literal) )) (compound_statement "{\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    \n                    \n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }" { (if_statement "if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    \n                    \n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }" if (parenthesized_expression "(local_6c != 0)" ( (binary_expression "local_6c != 0" identifier != number_literal) )) (compound_statement "{\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    \n                    \n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }" { (if_statement "if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }" if (parenthesized_expression "(local_6c == 7)" ( (binary_expression "local_6c == 7" identifier == number_literal) )) (compound_statement "{\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }" { (expression_statement "(*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);" (call_expression "(*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52c8 + 0x56a8))" ( (pointer_expression "*(code *)(PTR_LAB_000f52c8 + 0x56a8)" * (cast_expression "(code *)(PTR_LAB_000f52c8 + 0x56a8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52c8 + 0x56a8)" ( (binary_expression "PTR_LAB_000f52c8 + 0x56a8" identifier + number_literal) )))) )) (argument_list "(param_2 + uVar16,7,&local_68)" ( (binary_expression "param_2 + uVar16" identifier + identifier) , number_literal , (pointer_expression "&local_68" & identifier) ))) ;) (if_statement "if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }" if (parenthesized_expression "((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8))" ( (binary_expression "(double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)" (cast_expression "(double)CONCAT44(local_68,uStack_64)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(local_68,uStack_64)" identifier (argument_list "(local_68,uStack_64)" ( identifier , identifier )))) < (pointer_expression "*(double *)(puVar3 + 0x26c8)" * (cast_expression "(double *)(puVar3 + 0x26c8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x26c8)" ( (binary_expression "puVar3 + 0x26c8" identifier + number_literal) ))))) )) (compound_statement "{\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }" { (expression_statement "uVar12 = 0xffffffff;" (assignment_expression "uVar12 = 0xffffffff" identifier = number_literal) ;) (goto_statement "goto LAB_0004fecc;" goto statement_identifier ;) })) (if_statement "if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }" if (parenthesized_expression "((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0))" ( (binary_expression "(double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)" (cast_expression "(double)CONCAT44(local_68,uStack_64)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(local_68,uStack_64)" identifier (argument_list "(local_68,uStack_64)" ( identifier , identifier )))) < (pointer_expression "*(double *)(puVar3 + 0x26d0)" * (cast_expression "(double *)(puVar3 + 0x26d0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x26d0)" ( (binary_expression "puVar3 + 0x26d0" identifier + number_literal) ))))) )) (compound_statement "{\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }" { (expression_statement "iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));" (assignment_expression "iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4))" identifier = (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4))" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x1598))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x1598)" * (cast_expression "(code *)(PTR_LAB_000f52ec + -0x1598)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x1598)" ( (binary_expression "PTR_LAB_000f52ec + -0x1598" identifier + number_literal) )))) )) (argument_list "(*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4))" ( (pointer_expression "*(undefined4 *)pdVar17" * (cast_expression "(undefined4 *)pdVar17" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (pointer_expression "*(undefined4 *)((int)pdVar17 + 4)" * (cast_expression "(undefined4 *)((int)pdVar17 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pdVar17 + 4)" ( (binary_expression "(int)pdVar17 + 4" (cast_expression "(int)pdVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )))) ;) (expression_statement "uVar12 = -iVar11;" (assignment_expression "uVar12 = -iVar11" identifier = (unary_expression "-iVar11" - identifier)) ;) (goto_statement "goto LAB_0004fec4;" goto statement_identifier ;) })) (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;) (expression_statement "iVar11 = *param_3;" (assignment_expression "iVar11 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (goto_statement "goto LAB_0004fed0;" goto statement_identifier ;) })) (if_statement "if (local_6c < 7) {\n                    \n                    \n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }" if (parenthesized_expression "(local_6c < 7)" ( (binary_expression "local_6c < 7" identifier < number_literal) )) (compound_statement "{\n                    \n                    \n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }" { (expression_statement "uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();" (assignment_expression "uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))()" identifier = (call_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc))" * (cast_expression "(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc))" ( (binary_expression "&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)" * (cast_expression "(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)" ( (binary_expression "PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc" (binary_expression "PTR_DAT_000f52d4 + local_6c * 4" identifier + (binary_expression "local_6c * 4" identifier * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar15;" return identifier ;) })) (expression_statement "iVar11 = *(int *)pdVar17;" (assignment_expression "iVar11 = *(int *)pdVar17" identifier = (pointer_expression "*(int *)pdVar17" * (cast_expression "(int *)pdVar17" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }" if (parenthesized_expression "((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8))))" ( (binary_expression "(iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))" (parenthesized_expression "(iVar11 < 1)" ( (binary_expression "iVar11 < 1" identifier < number_literal) )) && (parenthesized_expression "((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))" ( (parenthesized_expression "(iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8))" ( (binary_expression "iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)" (binary_expression "iVar11 != 0" identifier != number_literal) || (parenthesized_expression "(*(uint *)((int)pdVar17 + 4) <= local_6c - 8)" ( (binary_expression "*(uint *)((int)pdVar17 + 4) <= local_6c - 8" (pointer_expression "*(uint *)((int)pdVar17 + 4)" * (cast_expression "(uint *)((int)pdVar17 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pdVar17 + 4)" ( (binary_expression "(int)pdVar17 + 4" (cast_expression "(int)pdVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) <= (binary_expression "local_6c - 8" identifier - number_literal)) ))) )) ))) )) (compound_statement "{\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }" { (if_statement "if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;" if (parenthesized_expression "((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))" ( (binary_expression "(iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8)))" (parenthesized_expression "(iVar11 < 0)" ( (binary_expression "iVar11 < 0" identifier < number_literal) )) || (parenthesized_expression "((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8)))" ( (parenthesized_expression "(iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))" ( (binary_expression "iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8)" (binary_expression "iVar11 == 0" identifier == number_literal) && (parenthesized_expression "(*(uint *)((int)pdVar17 + 4) < local_6c - 8)" ( (binary_expression "*(uint *)((int)pdVar17 + 4) < local_6c - 8" (pointer_expression "*(uint *)((int)pdVar17 + 4)" * (cast_expression "(uint *)((int)pdVar17 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pdVar17 + 4)" ( (binary_expression "(int)pdVar17 + 4" (cast_expression "(int)pdVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < (binary_expression "local_6c - 8" identifier - number_literal)) ))) )) ))) )) (goto_statement "goto LAB_0005018c;" goto statement_identifier ;)) (goto_statement "goto LAB_0004fd10;" goto statement_identifier ;) })) })) (goto_statement "goto LAB_00050270;" goto statement_identifier ;) })) (labeled_statement "LAB_0005018c:\n        iVar11 = *param_3;" statement_identifier : (expression_statement "iVar11 = *param_3;" (assignment_expression "iVar11 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;)) (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;) (labeled_statement "LAB_0004fed0:\n        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);" statement_identifier : (expression_statement "bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);" (assignment_expression "bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4)" identifier = (pointer_expression "*(byte *)(*(int *)(iVar11 + 0x10) + param_4)" * (cast_expression "(byte *)(*(int *)(iVar11 + 0x10) + param_4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar11 + 0x10) + param_4)" ( (binary_expression "*(int *)(iVar11 + 0x10) + param_4" (pointer_expression "*(int *)(iVar11 + 0x10)" * (cast_expression "(int *)(iVar11 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x10)" ( (binary_expression "iVar11 + 0x10" identifier + number_literal) )))) + identifier) ))))) ;)) (if_statement "if (bVar1 == 0) goto LAB_0004fd90;" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0004fd90;" goto statement_identifier ;)) (if_statement "if ((bVar1 & 2) != 0) {\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }" if (parenthesized_expression "((bVar1 & 2) != 0)" ( (binary_expression "(bVar1 & 2) != 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }" { (if_statement "if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (compound_statement "{\n            bVar8 = 1;\n          }" { (expression_statement "bVar8 = 1;" (assignment_expression "bVar8 = 1" identifier = number_literal) ;) }) (else_clause "else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }" else (compound_statement "{\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }" { (expression_statement "bVar8 = *(byte *)((int)pdVar17 + 9) & 1;" (assignment_expression "bVar8 = *(byte *)((int)pdVar17 + 9) & 1" identifier = (binary_expression "*(byte *)((int)pdVar17 + 9) & 1" (pointer_expression "*(byte *)((int)pdVar17 + 9)" * (cast_expression "(byte *)((int)pdVar17 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pdVar17 + 9)" ( (binary_expression "(int)pdVar17 + 9" (cast_expression "(int)pdVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal)) ;) }))) (if_statement "if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;" if (parenthesized_expression "((bVar1 & 1) == bVar8)" ( (binary_expression "(bVar1 & 1) == bVar8" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) == identifier) )) (goto_statement "goto LAB_0004fd90;" goto statement_identifier ;)) })) (expression_statement "uVar12 = -uVar12;" (assignment_expression "uVar12 = -uVar12" identifier = (unary_expression "-uVar12" - identifier)) ;) (goto_statement "goto LAB_0004fd90;" goto statement_identifier ;) })) (if_statement "if (((ulonglong)dVar2 & 0x8000000000000) != 0) {\n        if (9 < local_6c) goto LAB_0005018c;\n        if (local_6c != 0) {\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        iVar11 = *param_3;\n        uVar12 = 0xffffffff;\n        goto LAB_0004fed0;\n      }" if (parenthesized_expression "(((ulonglong)dVar2 & 0x8000000000000) != 0)" ( (binary_expression "((ulonglong)dVar2 & 0x8000000000000) != 0" (parenthesized_expression "((ulonglong)dVar2 & 0x8000000000000)" ( (binary_expression "(ulonglong)dVar2 & 0x8000000000000" (cast_expression "(ulonglong)dVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n        if (9 < local_6c) goto LAB_0005018c;\n        if (local_6c != 0) {\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        iVar11 = *param_3;\n        uVar12 = 0xffffffff;\n        goto LAB_0004fed0;\n      }" { (if_statement "if (9 < local_6c) goto LAB_0005018c;" if (parenthesized_expression "(9 < local_6c)" ( (binary_expression "9 < local_6c" number_literal < identifier) )) (goto_statement "goto LAB_0005018c;" goto statement_identifier ;)) (if_statement "if (local_6c != 0) {\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }" if (parenthesized_expression "(local_6c != 0)" ( (binary_expression "local_6c != 0" identifier != number_literal) )) (compound_statement "{\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }" { (expression_statement "(*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);" (call_expression "(*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52c8 + 0x56a8))" ( (pointer_expression "*(code *)(PTR_LAB_000f52c8 + 0x56a8)" * (cast_expression "(code *)(PTR_LAB_000f52c8 + 0x56a8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52c8 + 0x56a8)" ( (binary_expression "PTR_LAB_000f52c8 + 0x56a8" identifier + number_literal) )))) )) (argument_list "(param_2 + uVar16,local_6c,&local_68)" ( (binary_expression "param_2 + uVar16" identifier + identifier) , identifier , (pointer_expression "&local_68" & identifier) ))) ;) (if_statement "if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }" if (parenthesized_expression "(local_6c == 7)" ( (binary_expression "local_6c == 7" identifier == number_literal) )) (compound_statement "{\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }" { (if_statement "if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }" if (parenthesized_expression "(*pdVar17 <= (double)CONCAT44(local_68,uStack_64))" ( (binary_expression "*pdVar17 <= (double)CONCAT44(local_68,uStack_64)" (pointer_expression "*pdVar17" * identifier) <= (cast_expression "(double)CONCAT44(local_68,uStack_64)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(local_68,uStack_64)" identifier (argument_list "(local_68,uStack_64)" ( identifier , identifier ))))) )) (compound_statement "{\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }" { (if_statement "if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;" if (parenthesized_expression "(*pdVar17 < (double)CONCAT44(local_68,uStack_64))" ( (binary_expression "*pdVar17 < (double)CONCAT44(local_68,uStack_64)" (pointer_expression "*pdVar17" * identifier) < (cast_expression "(double)CONCAT44(local_68,uStack_64)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(local_68,uStack_64)" identifier (argument_list "(local_68,uStack_64)" ( identifier , identifier ))))) )) (goto_statement "goto LAB_0005018c;" goto statement_identifier ;)) (if_statement "if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;" if (parenthesized_expression "(param_4 + 1U != (uint)*(ushort *)(param_3 + 2))" ( (binary_expression "param_4 + 1U != (uint)*(ushort *)(param_3 + 2)" (binary_expression "param_4 + 1U" identifier + number_literal) != (binary_expression "(uint)*(ushort *)(param_3 + 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(param_3 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 2)" ( (binary_expression "param_3 + 2" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0004ff38;" goto statement_identifier ;)) (goto_statement "goto LAB_0004fd84;" goto statement_identifier ;) })) }) (else_clause "else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }" else (compound_statement "{\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }" { (if_statement "if (*pdVar17 < dVar19) goto LAB_0005018c;" if (parenthesized_expression "(*pdVar17 < dVar19)" ( (binary_expression "*pdVar17 < dVar19" (pointer_expression "*pdVar17" * identifier) < identifier) )) (goto_statement "goto LAB_0005018c;" goto statement_identifier ;)) (if_statement "if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }" if (parenthesized_expression "(*pdVar17 < dVar18)" ( (binary_expression "*pdVar17 < dVar18" (pointer_expression "*pdVar17" * identifier) < identifier) )) (compound_statement "{\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }" { (expression_statement "uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);" (assignment_expression "uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64)" identifier = (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x1598))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x1598)" * (cast_expression "(code *)(PTR_LAB_000f52ec + -0x1598)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x1598)" ( (binary_expression "PTR_LAB_000f52ec + -0x1598" identifier + number_literal) )))) )) (argument_list "(local_68,uStack_64)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_0004fec4;" goto statement_identifier ;) })) }))) })) (labeled_statement "LAB_00050270:\n        iVar11 = *param_3;" statement_identifier : (expression_statement "iVar11 = *param_3;" (assignment_expression "iVar11 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;)) (expression_statement "uVar12 = 0xffffffff;" (assignment_expression "uVar12 = 0xffffffff" identifier = number_literal) ;) (goto_statement "goto LAB_0004fed0;" goto statement_identifier ;) })) (if_statement "if (((ulonglong)dVar2 & 0x2000000000000) != 0) {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if (local_6c < 0xc) goto LAB_00050270;\n        if ((local_6c & 1) == 0) goto LAB_0005018c;\n        uVar7 = local_6c - 0xc >> 1;\n        local_5c = uVar7;\n        if (uVar7 + uVar16 <= param_1) {\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        uVar9 = 0x14194;\n        goto LAB_0004fbfc;\n      }" if (parenthesized_expression "(((ulonglong)dVar2 & 0x2000000000000) != 0)" ( (binary_expression "((ulonglong)dVar2 & 0x2000000000000) != 0" (parenthesized_expression "((ulonglong)dVar2 & 0x2000000000000)" ( (binary_expression "(ulonglong)dVar2 & 0x2000000000000" (cast_expression "(ulonglong)dVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if (local_6c < 0xc) goto LAB_00050270;\n        if ((local_6c & 1) == 0) goto LAB_0005018c;\n        uVar7 = local_6c - 0xc >> 1;\n        local_5c = uVar7;\n        if (uVar7 + uVar16 <= param_1) {\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        uVar9 = 0x14194;\n        goto LAB_0004fbfc;\n      }" { (if_statement "if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }" if (parenthesized_expression "(0x7f < local_6c)" ( (binary_expression "0x7f < local_6c" number_literal < identifier) )) (compound_statement "{\n          (*pcVar5)(pbVar10,&local_6c);\n        }" { (expression_statement "(*pcVar5)(pbVar10,&local_6c);" (call_expression "(*pcVar5)(pbVar10,&local_6c)" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "(pbVar10,&local_6c)" ( identifier , (pointer_expression "&local_6c" & identifier) ))) ;) })) (if_statement "if (local_6c < 0xc) goto LAB_00050270;" if (parenthesized_expression "(local_6c < 0xc)" ( (binary_expression "local_6c < 0xc" identifier < number_literal) )) (goto_statement "goto LAB_00050270;" goto statement_identifier ;)) (if_statement "if ((local_6c & 1) == 0) goto LAB_0005018c;" if (parenthesized_expression "((local_6c & 1) == 0)" ( (binary_expression "(local_6c & 1) == 0" (parenthesized_expression "(local_6c & 1)" ( (binary_expression "local_6c & 1" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0005018c;" goto statement_identifier ;)) (expression_statement "uVar7 = local_6c - 0xc >> 1;" (assignment_expression "uVar7 = local_6c - 0xc >> 1" identifier = (binary_expression "local_6c - 0xc >> 1" (binary_expression "local_6c - 0xc" identifier - number_literal) >> number_literal)) ;) (expression_statement "local_5c = uVar7;" (assignment_expression "local_5c = uVar7" identifier = identifier) ;) (if_statement "if (uVar7 + uVar16 <= param_1) {\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }" if (parenthesized_expression "(uVar7 + uVar16 <= param_1)" ( (binary_expression "uVar7 + uVar16 <= param_1" (binary_expression "uVar7 + uVar16" identifier + identifier) <= identifier) )) (compound_statement "{\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }" { (expression_statement "iVar11 = *param_3;" (assignment_expression "iVar11 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (if_statement "if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }" if (parenthesized_expression "(param_4 < (int)(uint)*(ushort *)(iVar11 + 8))" ( (binary_expression "param_4 < (int)(uint)*(ushort *)(iVar11 + 8)" identifier < (binary_expression "(int)(uint)*(ushort *)(iVar11 + 8)" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(ushort *)(iVar11 + 8)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 8)" ( (binary_expression "iVar11 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }" { (expression_statement "iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);" (assignment_expression "iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4)" identifier = (pointer_expression "*(int *)(iVar11 + (param_4 + 4) * 4 + 4)" * (cast_expression "(int *)(iVar11 + (param_4 + 4) * 4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + (param_4 + 4) * 4 + 4)" ( (binary_expression "iVar11 + (param_4 + 4) * 4 + 4" (binary_expression "iVar11 + (param_4 + 4) * 4" identifier + (binary_expression "(param_4 + 4) * 4" (parenthesized_expression "(param_4 + 4)" ( (binary_expression "param_4 + 4" identifier + number_literal) )) * number_literal)) + number_literal) ))))) ;) (if_statement "if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }" { (expression_statement "uVar14 = *(uint *)((int)pdVar17 + 0xc);" (assignment_expression "uVar14 = *(uint *)((int)pdVar17 + 0xc)" identifier = (pointer_expression "*(uint *)((int)pdVar17 + 0xc)" * (cast_expression "(uint *)((int)pdVar17 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pdVar17 + 0xc)" ( (binary_expression "(int)pdVar17 + 0xc" (cast_expression "(int)pdVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar12 = uVar14;" (assignment_expression "uVar12 = uVar14" identifier = identifier) ;) (if_statement "if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }" if (parenthesized_expression "((int)uVar7 <= (int)uVar14)" ( (binary_expression "(int)uVar7 <= (int)uVar14" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                uVar12 = uVar7;\n              }" { (expression_statement "uVar12 = uVar7;" (assignment_expression "uVar12 = uVar7" identifier = identifier) ;) })) (expression_statement "uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);" (assignment_expression "uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12)" identifier = (call_expression "(*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12)" (parenthesized_expression "(*(code *)PTR_memcmp_000f5554)" ( (pointer_expression "*(code *)PTR_memcmp_000f5554" * (cast_expression "(code *)PTR_memcmp_000f5554" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12)" ( (binary_expression "param_2 + uVar16" identifier + identifier) , (pointer_expression "*(undefined4 *)(pdVar17 + 2)" * (cast_expression "(undefined4 *)(pdVar17 + 2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pdVar17 + 2)" ( (binary_expression "pdVar17 + 2" identifier + number_literal) )))) , identifier )))) ;) (if_statement "if (uVar12 != 0) goto LAB_0004fed0;" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004fed0;" goto statement_identifier ;)) (expression_statement "uVar12 = uVar7 - uVar14;" (assignment_expression "uVar12 = uVar7 - uVar14" identifier = (binary_expression "uVar7 - uVar14" identifier - identifier)) ;) }) (else_clause "else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }" else (compound_statement "{\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }" { (expression_statement "local_5e = *(undefined1 *)(iVar11 + 4);" (assignment_expression "local_5e = *(undefined1 *)(iVar11 + 4)" identifier = (pointer_expression "*(undefined1 *)(iVar11 + 4)" * (cast_expression "(undefined1 *)(iVar11 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) ))))) ;) (expression_statement "local_48 = *(undefined4 *)(iVar11 + 0xc);" (assignment_expression "local_48 = *(undefined4 *)(iVar11 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(iVar11 + 0xc)" * (cast_expression "(undefined4 *)(iVar11 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0xc)" ( (binary_expression "iVar11 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "local_60 = 2;" (assignment_expression "local_60 = 2" identifier = number_literal) ;) (expression_statement "local_58 = param_2 + uVar16;" (assignment_expression "local_58 = param_2 + uVar16" identifier = (binary_expression "param_2 + uVar16" identifier + identifier)) ;) (expression_statement "uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);" (assignment_expression "uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb)" identifier = (call_expression "FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb)" identifier (argument_list "(&local_68,pdVar17,iVar13,(int)param_3 + 0xb)" ( (pointer_expression "&local_68" & identifier) , identifier , identifier , (binary_expression "(int)param_3 + 0xb" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }))) (goto_statement "goto LAB_0004fec4;" goto statement_identifier ;) })) })) (expression_statement "uVar9 = 0x14194;" (assignment_expression "uVar9 = 0x14194" identifier = number_literal) ;) (goto_statement "goto LAB_0004fbfc;" goto statement_identifier ;) })) (if_statement "if (((ulonglong)dVar2 & 0x10000000000000) == 0) {\n        uVar12 = (uint)(local_6c != 0);\n      }\n      else {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;\n        uVar7 = local_6c - 0xc >> 1;\n        if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }\n      }" if (parenthesized_expression "(((ulonglong)dVar2 & 0x10000000000000) == 0)" ( (binary_expression "((ulonglong)dVar2 & 0x10000000000000) == 0" (parenthesized_expression "((ulonglong)dVar2 & 0x10000000000000)" ( (binary_expression "(ulonglong)dVar2 & 0x10000000000000" (cast_expression "(ulonglong)dVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n        uVar12 = (uint)(local_6c != 0);\n      }" { (expression_statement "uVar12 = (uint)(local_6c != 0);" (assignment_expression "uVar12 = (uint)(local_6c != 0)" identifier = (call_expression "(uint)(local_6c != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_6c != 0)" ( (binary_expression "local_6c != 0" identifier != number_literal) )))) ;) }) (else_clause "else {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;\n        uVar7 = local_6c - 0xc >> 1;\n        if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }\n      }" else (compound_statement "{\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;\n        uVar7 = local_6c - 0xc >> 1;\n        if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }\n      }" { (if_statement "if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }" if (parenthesized_expression "(0x7f < local_6c)" ( (binary_expression "0x7f < local_6c" number_literal < identifier) )) (compound_statement "{\n          (*pcVar5)(pbVar10,&local_6c);\n        }" { (expression_statement "(*pcVar5)(pbVar10,&local_6c);" (call_expression "(*pcVar5)(pbVar10,&local_6c)" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "(pbVar10,&local_6c)" ( identifier , (pointer_expression "&local_6c" & identifier) ))) ;) })) (if_statement "if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;" if (parenthesized_expression "((local_6c < 0xc) || ((local_6c & 1) != 0))" ( (binary_expression "(local_6c < 0xc) || ((local_6c & 1) != 0)" (parenthesized_expression "(local_6c < 0xc)" ( (binary_expression "local_6c < 0xc" identifier < number_literal) )) || (parenthesized_expression "((local_6c & 1) != 0)" ( (binary_expression "(local_6c & 1) != 0" (parenthesized_expression "(local_6c & 1)" ( (binary_expression "local_6c & 1" identifier & number_literal) )) != number_literal) ))) )) (goto_statement "goto LAB_00050270;" goto statement_identifier ;)) (expression_statement "uVar7 = local_6c - 0xc >> 1;" (assignment_expression "uVar7 = local_6c - 0xc >> 1" identifier = (binary_expression "local_6c - 0xc >> 1" (binary_expression "local_6c - 0xc" identifier - number_literal) >> number_literal)) ;) (if_statement "if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }" if (parenthesized_expression "(param_1 < uVar7 + uVar16)" ( (binary_expression "param_1 < uVar7 + uVar16" identifier < (binary_expression "uVar7 + uVar16" identifier + identifier)) )) (compound_statement "{\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }" { (expression_statement "uVar9 = 0x141b2;" (assignment_expression "uVar9 = 0x141b2" identifier = number_literal) ;) (goto_statement "goto LAB_0004fbfc;" goto statement_identifier ;) })) (if_statement "if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }" if (parenthesized_expression "(((ulonglong)pdVar17[1] & 0x4000000000000000) == 0)" ( (binary_expression "((ulonglong)pdVar17[1] & 0x4000000000000000) == 0" (parenthesized_expression "((ulonglong)pdVar17[1] & 0x4000000000000000)" ( (binary_expression "(ulonglong)pdVar17[1] & 0x4000000000000000" (cast_expression "(ulonglong)pdVar17[1]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "pdVar17[1]" identifier [ number_literal ])) & number_literal) )) == number_literal) )) (compound_statement "{\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }" { (expression_statement "uVar14 = *(uint *)((int)pdVar17 + 0xc);" (assignment_expression "uVar14 = *(uint *)((int)pdVar17 + 0xc)" identifier = (pointer_expression "*(uint *)((int)pdVar17 + 0xc)" * (cast_expression "(uint *)((int)pdVar17 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pdVar17 + 0xc)" ( (binary_expression "(int)pdVar17 + 0xc" (cast_expression "(int)pdVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar12 = uVar7;" (assignment_expression "uVar12 = uVar7" identifier = identifier) ;) (if_statement "if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }" if (parenthesized_expression "((int)uVar14 <= (int)uVar7)" ( (binary_expression "(int)uVar14 <= (int)uVar7" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar12 = uVar14;\n          }" { (expression_statement "uVar12 = uVar14;" (assignment_expression "uVar12 = uVar14" identifier = identifier) ;) })) (expression_statement "uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);" (assignment_expression "uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12)" identifier = (call_expression "(*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12)" (parenthesized_expression "(*(code *)PTR_memcmp_000f5554)" ( (pointer_expression "*(code *)PTR_memcmp_000f5554" * (cast_expression "(code *)PTR_memcmp_000f5554" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12)" ( (binary_expression "param_2 + uVar16" identifier + identifier) , (pointer_expression "*(undefined4 *)(pdVar17 + 2)" * (cast_expression "(undefined4 *)(pdVar17 + 2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pdVar17 + 2)" ( (binary_expression "pdVar17 + 2" identifier + number_literal) )))) , identifier )))) ;) (if_statement "if (uVar12 != 0) goto LAB_0004fecc;" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004fecc;" goto statement_identifier ;)) (expression_statement "uVar12 = uVar7 - uVar14;" (assignment_expression "uVar12 = uVar7 - uVar14" identifier = (binary_expression "uVar7 - uVar14" identifier - identifier)) ;) }) (else_clause "else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }" else (compound_statement "{\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }" { (if_statement "if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (compound_statement "{\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }" { (if_statement "if (param_2[uVar16] != 0) goto LAB_0005018c;" if (parenthesized_expression "(param_2[uVar16] != 0)" ( (binary_expression "param_2[uVar16] != 0" (subscript_expression "param_2[uVar16]" identifier [ identifier ]) != number_literal) )) (goto_statement "goto LAB_0005018c;" goto statement_identifier ;)) (expression_statement "pbVar10 = param_2 + uVar16 + 1;" (assignment_expression "pbVar10 = param_2 + uVar16 + 1" identifier = (binary_expression "param_2 + uVar16 + 1" (binary_expression "param_2 + uVar16" identifier + identifier) + number_literal)) ;) (while_statement "while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }" while (parenthesized_expression "(param_2 + uVar16 + uVar7 != pbVar10)" ( (binary_expression "param_2 + uVar16 + uVar7 != pbVar10" (binary_expression "param_2 + uVar16 + uVar7" (binary_expression "param_2 + uVar16" identifier + identifier) + identifier) != identifier) )) (compound_statement "{\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }" { (expression_statement "bVar1 = *pbVar10;" (assignment_expression "bVar1 = *pbVar10" identifier = (pointer_expression "*pbVar10" * identifier)) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1 != 0) goto LAB_0005018c;" if (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0005018c;" goto statement_identifier ;)) })) })) (expression_statement "uVar12 = uVar7 - *(int *)pdVar17;" (assignment_expression "uVar12 = uVar7 - *(int *)pdVar17" identifier = (binary_expression "uVar7 - *(int *)pdVar17" identifier - (pointer_expression "*(int *)pdVar17" * (cast_expression "(int *)pdVar17" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)))) ;) }))) }))) (labeled_statement "LAB_0004fec4:\n      if (uVar12 != 0) {\nLAB_0004fecc:\n        iVar11 = *param_3;\n        goto LAB_0004fed0;\n      }" statement_identifier : (if_statement "if (uVar12 != 0) {\nLAB_0004fecc:\n        iVar11 = *param_3;\n        goto LAB_0004fed0;\n      }" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0004fecc:\n        iVar11 = *param_3;\n        goto LAB_0004fed0;\n      }" { (labeled_statement "LAB_0004fecc:\n        iVar11 = *param_3;" statement_identifier : (expression_statement "iVar11 = *param_3;" (assignment_expression "iVar11 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;)) (goto_statement "goto LAB_0004fed0;" goto statement_identifier ;) }))) (labeled_statement "LAB_0004fd10:\n      if ((uint)*(ushort *)(param_3 + 2) == param_4 + 1U) goto LAB_0004fd84;" statement_identifier : (if_statement "if ((uint)*(ushort *)(param_3 + 2) == param_4 + 1U) goto LAB_0004fd84;" if (parenthesized_expression "((uint)*(ushort *)(param_3 + 2) == param_4 + 1U)" ( (binary_expression "(uint)*(ushort *)(param_3 + 2) == param_4 + 1U" (binary_expression "(uint)*(ushort *)(param_3 + 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(param_3 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 2)" ( (binary_expression "param_3 + 2" identifier + number_literal) )))) == (binary_expression "param_4 + 1U" identifier + number_literal)) )) (goto_statement "goto LAB_0004fd84;" goto statement_identifier ;))) (if_statement "if (local_6c < 0x80) {\nLAB_0004ff38:\n        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];\n      }\n      else {\n        uVar7 = local_6c - 0xc >> 1;\n      }" if (parenthesized_expression "(local_6c < 0x80)" ( (binary_expression "local_6c < 0x80" identifier < number_literal) )) (compound_statement "{\nLAB_0004ff38:\n        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];\n      }" { (labeled_statement "LAB_0004ff38:\n        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];" statement_identifier : (expression_statement "uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];" (assignment_expression "uVar7 = (uint)(byte)puVar3[local_6c + 0x2208]" identifier = (cast_expression "(uint)(byte)puVar3[local_6c + 0x2208]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar3[local_6c + 0x2208]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar3[local_6c + 0x2208]" identifier [ (binary_expression "local_6c + 0x2208" identifier + number_literal) ])))) ;)) }) (else_clause "else {\n        uVar7 = local_6c - 0xc >> 1;\n      }" else (compound_statement "{\n        uVar7 = local_6c - 0xc >> 1;\n      }" { (expression_statement "uVar7 = local_6c - 0xc >> 1;" (assignment_expression "uVar7 = local_6c - 0xc >> 1" identifier = (binary_expression "local_6c - 0xc >> 1" (binary_expression "local_6c - 0xc" identifier - number_literal) >> number_literal)) ;) }))) (expression_statement "param_4 = param_4 + 1;" (assignment_expression "param_4 = param_4 + 1" identifier = (binary_expression "param_4 + 1" identifier + number_literal)) ;) (expression_statement "uVar16 = uVar16 + uVar7;" (assignment_expression "uVar16 = uVar16 + uVar7" identifier = (binary_expression "uVar16 + uVar7" identifier + identifier)) ;) (expression_statement "iVar11 = 1;" (assignment_expression "iVar11 = 1" identifier = number_literal) ;) (expression_statement "uVar7 = local_6c;" (assignment_expression "uVar7 = local_6c" identifier = identifier) ;) (while_statement "while (uVar7 = uVar7 >> 7, uVar7 != 0) {\n        iVar11 = iVar11 + 1;\n      }" while (parenthesized_expression "(uVar7 = uVar7 >> 7, uVar7 != 0)" ( (comma_expression "uVar7 = uVar7 >> 7, uVar7 != 0" (assignment_expression "uVar7 = uVar7 >> 7" identifier = (binary_expression "uVar7 >> 7" identifier >> number_literal)) , (binary_expression "uVar7 != 0" identifier != number_literal)) )) (compound_statement "{\n        iVar11 = iVar11 + 1;\n      }" { (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar15 = uVar15 + iVar11;" (assignment_expression "uVar15 = uVar15 + iVar11" identifier = (binary_expression "uVar15 + iVar11" identifier + identifier)) ;) (if_statement "if ((local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16)) goto LAB_0004fd84;" if (parenthesized_expression "((local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16))" ( (binary_expression "(local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16)" (parenthesized_expression "(local_70 <= uVar15)" ( (binary_expression "local_70 <= uVar15" identifier <= identifier) )) || (parenthesized_expression "(pdVar17 = pdVar17 + 5, param_1 < uVar16)" ( (comma_expression "pdVar17 = pdVar17 + 5, param_1 < uVar16" (assignment_expression "pdVar17 = pdVar17 + 5" identifier = (binary_expression "pdVar17 + 5" identifier + number_literal)) , (binary_expression "param_1 < uVar16" identifier < identifier)) ))) )) (goto_statement "goto LAB_0004fd84;" goto statement_identifier ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "uVar9 = 0x14147;" (assignment_expression "uVar9 = 0x14147" identifier = number_literal) ;) (labeled_statement "LAB_0004fbfc:\n  uVar6 = FUN_00044904(uVar9);" statement_identifier : (expression_statement "uVar6 = FUN_00044904(uVar9);" (assignment_expression "uVar6 = FUN_00044904(uVar9)" identifier = (call_expression "FUN_00044904(uVar9)" identifier (argument_list "(uVar9)" ( identifier )))) ;)) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "*(undefined1 *)((int)param_3 + 0xb) = uVar6;" (assignment_expression "*(undefined1 *)((int)param_3 + 0xb) = uVar6" (pointer_expression "*(undefined1 *)((int)param_3 + 0xb)" * (cast_expression "(undefined1 *)((int)param_3 + 0xb)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 + 0xb)" ( (binary_expression "(int)param_3 + 0xb" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (labeled_statement "LAB_0004fd90:\n  if (local_3c == *(int *)puVar4) {\n    return uVar12;\n  }" statement_identifier : (if_statement "if (local_3c == *(int *)puVar4) {\n    return uVar12;\n  }" if (parenthesized_expression "(local_3c == *(int *)puVar4)" ( (binary_expression "local_3c == *(int *)puVar4" identifier == (pointer_expression "*(int *)puVar4" * (cast_expression "(int *)puVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return uVar12;\n  }" { (return_statement "return uVar12;" return identifier ;) }))) (expression_statement "(*(code *)PTR___stack_chk_fail_000f5540)();" (call_expression "(*(code *)PTR___stack_chk_fail_000f5540)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000f5540)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000f5540" * (cast_expression "(code *)PTR___stack_chk_fail_000f5540" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "uVar15 = FUN_0004fb4c();" (assignment_expression "uVar15 = FUN_0004fb4c()" identifier = (call_expression "FUN_0004fb4c()" identifier (argument_list "()" ( )))) ;) (return_statement "return uVar15;" return identifier ;) (labeled_statement "LAB_0004fd84:\n  uVar12 = (uint)*(char *)((int)param_3 + 10);" statement_identifier : (expression_statement "uVar12 = (uint)*(char *)((int)param_3 + 10);" (assignment_expression "uVar12 = (uint)*(char *)((int)param_3 + 10)" identifier = (binary_expression "(uint)*(char *)((int)param_3 + 10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(char *)((int)param_3 + 10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 + 10)" ( (binary_expression "(int)param_3 + 10" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;)) (expression_statement "*(undefined1 *)((int)param_3 + 0xe) = 1;" (assignment_expression "*(undefined1 *)((int)param_3 + 0xe) = 1" (pointer_expression "*(undefined1 *)((int)param_3 + 0xe)" * (cast_expression "(undefined1 *)((int)param_3 + 0xe)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 + 0xe)" ( (binary_expression "(int)param_3 + 0xe" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_0004fd90;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) >> LIT) )) + IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) + IDENT)) ;)) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) != 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 (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( (binary_expression IDENT + IDENT) , LIT , (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT )))) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT )))) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) ))))) )))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) <= (binary_expression IDENT - LIT)) ))) )) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) < (binary_expression IDENT - LIT)) ))) )) ))) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( (binary_expression IDENT + IDENT) , IDENT , (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) <= (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < IDENT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , IDENT )))) ;) (goto_statement goto statement_identifier ;) })) }))) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT - LIT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) }))) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) )))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT - LIT) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression IDENT + IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ IDENT ]) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (while_statement while (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT + IDENT) + IDENT) != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)))) ;) }))) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (goto_statement goto statement_identifier ;) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (binary_expression IDENT + LIT)) )) (goto_statement goto statement_identifier ;))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])))) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT - LIT) >> LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT >> LIT)) , (binary_expression IDENT != LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression IDENT < IDENT)) ))) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( BOOL )) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (return_statement return IDENT ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (goto_statement goto statement_identifier ;) })))
(function_definition "uint FUN_0004fb4c(uint param_1,byte *param_2,int *param_3,int param_4)\n\n{\n  byte bVar1;\n  double dVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined1 uVar6;\n  code *pcVar5;\n  uint uVar7;\n  byte bVar8;\n  undefined4 uVar9;\n  byte *pbVar10;\n  int iVar11;\n  uint uVar12;\n  int iVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  double *pdVar17;\n  double dVar18;\n  double dVar19;\n  uint local_70;\n  uint local_6c;\n  uint local_68;\n  undefined4 uStack_64;\n  undefined2 local_60;\n  undefined1 local_5e;\n  uint local_5c;\n  byte *local_58;\n  undefined4 local_48;\n  int local_3c;\n  \n  puVar4 = PTR___stack_chk_guard_000f5568;\n  local_3c = *(int *)PTR___stack_chk_guard_000f5568;\n  pdVar17 = (double *)param_3[1];\n  if (param_4 == 0) {\n    bVar1 = *param_2;\n    if ((char)bVar1 < '\0') {\n      uVar15 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70);\n      uVar16 = local_70;\n    }\n    else {\n      uVar15 = 1;\n      uVar16 = (uint)bVar1;\n      local_70 = (uint)bVar1;\n    }\n  }\n  else {\n    uVar15 = 2;\n    if ((char)param_2[1] < '\0') {\n      iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68);\n      uVar15 = iVar11 + 1;\n      local_70 = (uint)*param_2;\n      uVar16 = local_68;\n      if (local_68 < 0x80) goto LAB_0004fbd0;\n      uVar16 = (local_68 - 0xc >> 1) + local_70;\n    }\n    else {\n      local_70 = (uint)*param_2;\n      uVar16 = (uint)param_2[1];\nLAB_0004fbd0:\n      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;\n    }\n    pdVar17 = pdVar17 + 5;\n  }\n  puVar3 = PTR_DAT_000f52d4;\n  if (uVar16 <= param_1) {\n    dVar19 = *(double *)(PTR_DAT_000f52d4 + 0x26c8);\n    dVar18 = *(double *)(PTR_DAT_000f52d4 + 0x26d0);\n    pcVar5 = (code *)(PTR_LAB_000f52ec + -0x46ac);\n    do {\n      dVar2 = pdVar17[1];\n      pbVar10 = param_2 + uVar15;\n      local_6c = (uint)*pbVar10;\n      if (((ulonglong)dVar2 & 0x24000000000000) != 0) {\n        if (local_6c < 10) {\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    \n                    \n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }\nLAB_0005018c:\n        iVar11 = *param_3;\n        uVar12 = 1;\nLAB_0004fed0:\n        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);\n        if (bVar1 == 0) goto LAB_0004fd90;\n        if ((bVar1 & 2) != 0) {\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }\n        uVar12 = -uVar12;\n        goto LAB_0004fd90;\n      }\n      if (((ulonglong)dVar2 & 0x8000000000000) != 0) {\n        if (9 < local_6c) goto LAB_0005018c;\n        if (local_6c != 0) {\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        iVar11 = *param_3;\n        uVar12 = 0xffffffff;\n        goto LAB_0004fed0;\n      }\n      if (((ulonglong)dVar2 & 0x2000000000000) != 0) {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if (local_6c < 0xc) goto LAB_00050270;\n        if ((local_6c & 1) == 0) goto LAB_0005018c;\n        uVar7 = local_6c - 0xc >> 1;\n        local_5c = uVar7;\n        if (uVar7 + uVar16 <= param_1) {\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        uVar9 = 0x14194;\n        goto LAB_0004fbfc;\n      }\n      if (((ulonglong)dVar2 & 0x10000000000000) == 0) {\n        uVar12 = (uint)(local_6c != 0);\n      }\n      else {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;\n        uVar7 = local_6c - 0xc >> 1;\n        if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }\n      }\nLAB_0004fec4:\n      if (uVar12 != 0) {\nLAB_0004fecc:\n        iVar11 = *param_3;\n        goto LAB_0004fed0;\n      }\nLAB_0004fd10:\n      if ((uint)*(ushort *)(param_3 + 2) == param_4 + 1U) goto LAB_0004fd84;\n      if (local_6c < 0x80) {\nLAB_0004ff38:\n        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];\n      }\n      else {\n        uVar7 = local_6c - 0xc >> 1;\n      }\n      param_4 = param_4 + 1;\n      uVar16 = uVar16 + uVar7;\n      iVar11 = 1;\n      uVar7 = local_6c;\n      while (uVar7 = uVar7 >> 7, uVar7 != 0) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar15 = uVar15 + iVar11;\n      if ((local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16)) goto LAB_0004fd84;\n    } while( true );\n  }\n  uVar9 = 0x14147;\nLAB_0004fbfc:\n  uVar6 = FUN_00044904(uVar9);\n  uVar12 = 0;\n  *(undefined1 *)((int)param_3 + 0xb) = uVar6;\nLAB_0004fd90:\n  if (local_3c == *(int *)puVar4) {\n    return uVar12;\n  }\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  uVar15 = FUN_0004fb4c();\n  return uVar15;\nLAB_0004fd84:\n  uVar12 = (uint)*(char *)((int)param_3 + 10);\n  *(undefined1 *)((int)param_3 + 0xe) = 1;\n  goto LAB_0004fd90;\n}" (type_identifier "uint") (function_declarator "FUN_0004fb4c(uint param_1,byte *param_2,int *param_3,int param_4)" (identifier "FUN_0004fb4c") (parameter_list "(uint param_1,byte *param_2,int *param_3,int param_4)" (( "(") (parameter_declaration "uint param_1" (type_identifier "uint") (identifier "param_1")) (, ",") (parameter_declaration "byte *param_2" (type_identifier "byte") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) () ")"))) (compound_statement "{\n  byte bVar1;\n  double dVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined1 uVar6;\n  code *pcVar5;\n  uint uVar7;\n  byte bVar8;\n  undefined4 uVar9;\n  byte *pbVar10;\n  int iVar11;\n  uint uVar12;\n  int iVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  double *pdVar17;\n  double dVar18;\n  double dVar19;\n  uint local_70;\n  uint local_6c;\n  uint local_68;\n  undefined4 uStack_64;\n  undefined2 local_60;\n  undefined1 local_5e;\n  uint local_5c;\n  byte *local_58;\n  undefined4 local_48;\n  int local_3c;\n  \n  puVar4 = PTR___stack_chk_guard_000f5568;\n  local_3c = *(int *)PTR___stack_chk_guard_000f5568;\n  pdVar17 = (double *)param_3[1];\n  if (param_4 == 0) {\n    bVar1 = *param_2;\n    if ((char)bVar1 < '\0') {\n      uVar15 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70);\n      uVar16 = local_70;\n    }\n    else {\n      uVar15 = 1;\n      uVar16 = (uint)bVar1;\n      local_70 = (uint)bVar1;\n    }\n  }\n  else {\n    uVar15 = 2;\n    if ((char)param_2[1] < '\0') {\n      iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68);\n      uVar15 = iVar11 + 1;\n      local_70 = (uint)*param_2;\n      uVar16 = local_68;\n      if (local_68 < 0x80) goto LAB_0004fbd0;\n      uVar16 = (local_68 - 0xc >> 1) + local_70;\n    }\n    else {\n      local_70 = (uint)*param_2;\n      uVar16 = (uint)param_2[1];\nLAB_0004fbd0:\n      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;\n    }\n    pdVar17 = pdVar17 + 5;\n  }\n  puVar3 = PTR_DAT_000f52d4;\n  if (uVar16 <= param_1) {\n    dVar19 = *(double *)(PTR_DAT_000f52d4 + 0x26c8);\n    dVar18 = *(double *)(PTR_DAT_000f52d4 + 0x26d0);\n    pcVar5 = (code *)(PTR_LAB_000f52ec + -0x46ac);\n    do {\n      dVar2 = pdVar17[1];\n      pbVar10 = param_2 + uVar15;\n      local_6c = (uint)*pbVar10;\n      if (((ulonglong)dVar2 & 0x24000000000000) != 0) {\n        if (local_6c < 10) {\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    \n                    \n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }\nLAB_0005018c:\n        iVar11 = *param_3;\n        uVar12 = 1;\nLAB_0004fed0:\n        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);\n        if (bVar1 == 0) goto LAB_0004fd90;\n        if ((bVar1 & 2) != 0) {\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }\n        uVar12 = -uVar12;\n        goto LAB_0004fd90;\n      }\n      if (((ulonglong)dVar2 & 0x8000000000000) != 0) {\n        if (9 < local_6c) goto LAB_0005018c;\n        if (local_6c != 0) {\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        iVar11 = *param_3;\n        uVar12 = 0xffffffff;\n        goto LAB_0004fed0;\n      }\n      if (((ulonglong)dVar2 & 0x2000000000000) != 0) {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if (local_6c < 0xc) goto LAB_00050270;\n        if ((local_6c & 1) == 0) goto LAB_0005018c;\n        uVar7 = local_6c - 0xc >> 1;\n        local_5c = uVar7;\n        if (uVar7 + uVar16 <= param_1) {\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        uVar9 = 0x14194;\n        goto LAB_0004fbfc;\n      }\n      if (((ulonglong)dVar2 & 0x10000000000000) == 0) {\n        uVar12 = (uint)(local_6c != 0);\n      }\n      else {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;\n        uVar7 = local_6c - 0xc >> 1;\n        if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }\n      }\nLAB_0004fec4:\n      if (uVar12 != 0) {\nLAB_0004fecc:\n        iVar11 = *param_3;\n        goto LAB_0004fed0;\n      }\nLAB_0004fd10:\n      if ((uint)*(ushort *)(param_3 + 2) == param_4 + 1U) goto LAB_0004fd84;\n      if (local_6c < 0x80) {\nLAB_0004ff38:\n        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];\n      }\n      else {\n        uVar7 = local_6c - 0xc >> 1;\n      }\n      param_4 = param_4 + 1;\n      uVar16 = uVar16 + uVar7;\n      iVar11 = 1;\n      uVar7 = local_6c;\n      while (uVar7 = uVar7 >> 7, uVar7 != 0) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar15 = uVar15 + iVar11;\n      if ((local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16)) goto LAB_0004fd84;\n    } while( true );\n  }\n  uVar9 = 0x14147;\nLAB_0004fbfc:\n  uVar6 = FUN_00044904(uVar9);\n  uVar12 = 0;\n  *(undefined1 *)((int)param_3 + 0xb) = uVar6;\nLAB_0004fd90:\n  if (local_3c == *(int *)puVar4) {\n    return uVar12;\n  }\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  uVar15 = FUN_0004fb4c();\n  return uVar15;\nLAB_0004fd84:\n  uVar12 = (uint)*(char *)((int)param_3 + 10);\n  *(undefined1 *)((int)param_3 + 0xe) = 1;\n  goto LAB_0004fd90;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "double dVar2;" (primitive_type "double") (identifier "dVar2") (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined *puVar4;" (type_identifier "undefined") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined1 uVar6;" (type_identifier "undefined1") (identifier "uVar6") (; ";")) (declaration "code *pcVar5;" (type_identifier "code") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "byte bVar8;" (type_identifier "byte") (identifier "bVar8") (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "byte *pbVar10;" (type_identifier "byte") (pointer_declarator "*pbVar10" (* "*") (identifier "pbVar10")) (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "uint uVar14;" (type_identifier "uint") (identifier "uVar14") (; ";")) (declaration "uint uVar15;" (type_identifier "uint") (identifier "uVar15") (; ";")) (declaration "uint uVar16;" (type_identifier "uint") (identifier "uVar16") (; ";")) (declaration "double *pdVar17;" (primitive_type "double") (pointer_declarator "*pdVar17" (* "*") (identifier "pdVar17")) (; ";")) (declaration "double dVar18;" (primitive_type "double") (identifier "dVar18") (; ";")) (declaration "double dVar19;" (primitive_type "double") (identifier "dVar19") (; ";")) (declaration "uint local_70;" (type_identifier "uint") (identifier "local_70") (; ";")) (declaration "uint local_6c;" (type_identifier "uint") (identifier "local_6c") (; ";")) (declaration "uint local_68;" (type_identifier "uint") (identifier "local_68") (; ";")) (declaration "undefined4 uStack_64;" (type_identifier "undefined4") (identifier "uStack_64") (; ";")) (declaration "undefined2 local_60;" (type_identifier "undefined2") (identifier "local_60") (; ";")) (declaration "undefined1 local_5e;" (type_identifier "undefined1") (identifier "local_5e") (; ";")) (declaration "uint local_5c;" (type_identifier "uint") (identifier "local_5c") (; ";")) (declaration "byte *local_58;" (type_identifier "byte") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "undefined4 local_48;" (type_identifier "undefined4") (identifier "local_48") (; ";")) (declaration "int local_3c;" (primitive_type "int") (identifier "local_3c") (; ";")) (expression_statement "puVar4 = PTR___stack_chk_guard_000f5568;" (assignment_expression "puVar4 = PTR___stack_chk_guard_000f5568" (identifier "puVar4") (= "=") (identifier "PTR___stack_chk_guard_000f5568")) (; ";")) (expression_statement "local_3c = *(int *)PTR___stack_chk_guard_000f5568;" (assignment_expression "local_3c = *(int *)PTR___stack_chk_guard_000f5568" (identifier "local_3c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_000f5568" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_000f5568" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_000f5568")))) (; ";")) (expression_statement "pdVar17 = (double *)param_3[1];" (assignment_expression "pdVar17 = (double *)param_3[1]" (identifier "pdVar17") (= "=") (cast_expression "(double *)param_3[1]" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (param_4 == 0) {\n    bVar1 = *param_2;\n    if ((char)bVar1 < '\0') {\n      uVar15 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70);\n      uVar16 = local_70;\n    }\n    else {\n      uVar15 = 1;\n      uVar16 = (uint)bVar1;\n      local_70 = (uint)bVar1;\n    }\n  }\n  else {\n    uVar15 = 2;\n    if ((char)param_2[1] < '\0') {\n      iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68);\n      uVar15 = iVar11 + 1;\n      local_70 = (uint)*param_2;\n      uVar16 = local_68;\n      if (local_68 < 0x80) goto LAB_0004fbd0;\n      uVar16 = (local_68 - 0xc >> 1) + local_70;\n    }\n    else {\n      local_70 = (uint)*param_2;\n      uVar16 = (uint)param_2[1];\nLAB_0004fbd0:\n      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;\n    }\n    pdVar17 = pdVar17 + 5;\n  }" (if "if") (parenthesized_expression "(param_4 == 0)" (( "(") (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    bVar1 = *param_2;\n    if ((char)bVar1 < '\0') {\n      uVar15 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70);\n      uVar16 = local_70;\n    }\n    else {\n      uVar15 = 1;\n      uVar16 = (uint)bVar1;\n      local_70 = (uint)bVar1;\n    }\n  }" ({ "{") (expression_statement "bVar1 = *param_2;" (assignment_expression "bVar1 = *param_2" (identifier "bVar1") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if ((char)bVar1 < '\0') {\n      uVar15 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70);\n      uVar16 = local_70;\n    }\n    else {\n      uVar15 = 1;\n      uVar16 = (uint)bVar1;\n      local_70 = (uint)bVar1;\n    }" (if "if") (parenthesized_expression "((char)bVar1 < '\0')" (( "(") (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar1")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      uVar15 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70);\n      uVar16 = local_70;\n    }" ({ "{") (expression_statement "uVar15 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70);" (assignment_expression "uVar15 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70)" (identifier "uVar15") (= "=") (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x46ac))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x46ac)" (* "*") (cast_expression "(code *)(PTR_LAB_000f52ec + -0x46ac)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f52ec + -0x46ac)" (( "(") (binary_expression "PTR_LAB_000f52ec + -0x46ac" (identifier "PTR_LAB_000f52ec") (+ "+") (number_literal "-0x46ac")) () ")")))) () ")")) (argument_list "(param_2,&local_70)" (( "(") (identifier "param_2") (, ",") (pointer_expression "&local_70" (& "&") (identifier "local_70")) () ")")))) (; ";")) (expression_statement "uVar16 = local_70;" (assignment_expression "uVar16 = local_70" (identifier "uVar16") (= "=") (identifier "local_70")) (; ";")) (} "}")) (else_clause "else {\n      uVar15 = 1;\n      uVar16 = (uint)bVar1;\n      local_70 = (uint)bVar1;\n    }" (else "else") (compound_statement "{\n      uVar15 = 1;\n      uVar16 = (uint)bVar1;\n      local_70 = (uint)bVar1;\n    }" ({ "{") (expression_statement "uVar15 = 1;" (assignment_expression "uVar15 = 1" (identifier "uVar15") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar16 = (uint)bVar1;" (assignment_expression "uVar16 = (uint)bVar1" (identifier "uVar16") (= "=") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1"))) (; ";")) (expression_statement "local_70 = (uint)bVar1;" (assignment_expression "local_70 = (uint)bVar1" (identifier "local_70") (= "=") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    uVar15 = 2;\n    if ((char)param_2[1] < '\0') {\n      iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68);\n      uVar15 = iVar11 + 1;\n      local_70 = (uint)*param_2;\n      uVar16 = local_68;\n      if (local_68 < 0x80) goto LAB_0004fbd0;\n      uVar16 = (local_68 - 0xc >> 1) + local_70;\n    }\n    else {\n      local_70 = (uint)*param_2;\n      uVar16 = (uint)param_2[1];\nLAB_0004fbd0:\n      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;\n    }\n    pdVar17 = pdVar17 + 5;\n  }" (else "else") (compound_statement "{\n    uVar15 = 2;\n    if ((char)param_2[1] < '\0') {\n      iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68);\n      uVar15 = iVar11 + 1;\n      local_70 = (uint)*param_2;\n      uVar16 = local_68;\n      if (local_68 < 0x80) goto LAB_0004fbd0;\n      uVar16 = (local_68 - 0xc >> 1) + local_70;\n    }\n    else {\n      local_70 = (uint)*param_2;\n      uVar16 = (uint)param_2[1];\nLAB_0004fbd0:\n      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;\n    }\n    pdVar17 = pdVar17 + 5;\n  }" ({ "{") (expression_statement "uVar15 = 2;" (assignment_expression "uVar15 = 2" (identifier "uVar15") (= "=") (number_literal "2")) (; ";")) (if_statement "if ((char)param_2[1] < '\0') {\n      iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68);\n      uVar15 = iVar11 + 1;\n      local_70 = (uint)*param_2;\n      uVar16 = local_68;\n      if (local_68 < 0x80) goto LAB_0004fbd0;\n      uVar16 = (local_68 - 0xc >> 1) + local_70;\n    }\n    else {\n      local_70 = (uint)*param_2;\n      uVar16 = (uint)param_2[1];\nLAB_0004fbd0:\n      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;\n    }" (if "if") (parenthesized_expression "((char)param_2[1] < '\0')" (( "(") (binary_expression "(char)param_2[1] < '\0'" (cast_expression "(char)param_2[1]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68);\n      uVar15 = iVar11 + 1;\n      local_70 = (uint)*param_2;\n      uVar16 = local_68;\n      if (local_68 < 0x80) goto LAB_0004fbd0;\n      uVar16 = (local_68 - 0xc >> 1) + local_70;\n    }" ({ "{") (expression_statement "iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68);" (assignment_expression "iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68)" (identifier "iVar11") (= "=") (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x46ac))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x46ac)" (* "*") (cast_expression "(code *)(PTR_LAB_000f52ec + -0x46ac)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f52ec + -0x46ac)" (( "(") (binary_expression "PTR_LAB_000f52ec + -0x46ac" (identifier "PTR_LAB_000f52ec") (+ "+") (number_literal "-0x46ac")) () ")")))) () ")")) (argument_list "(param_2 + 1,&local_68)" (( "(") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1")) (, ",") (pointer_expression "&local_68" (& "&") (identifier "local_68")) () ")")))) (; ";")) (expression_statement "uVar15 = iVar11 + 1;" (assignment_expression "uVar15 = iVar11 + 1" (identifier "uVar15") (= "=") (binary_expression "iVar11 + 1" (identifier "iVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_70 = (uint)*param_2;" (assignment_expression "local_70 = (uint)*param_2" (identifier "local_70") (= "=") (binary_expression "(uint)*param_2" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "param_2"))) (; ";")) (expression_statement "uVar16 = local_68;" (assignment_expression "uVar16 = local_68" (identifier "uVar16") (= "=") (identifier "local_68")) (; ";")) (if_statement "if (local_68 < 0x80) goto LAB_0004fbd0;" (if "if") (parenthesized_expression "(local_68 < 0x80)" (( "(") (binary_expression "local_68 < 0x80" (identifier "local_68") (< "<") (number_literal "0x80")) () ")")) (goto_statement "goto LAB_0004fbd0;" (goto "goto") (statement_identifier "LAB_0004fbd0") (; ";"))) (expression_statement "uVar16 = (local_68 - 0xc >> 1) + local_70;" (assignment_expression "uVar16 = (local_68 - 0xc >> 1) + local_70" (identifier "uVar16") (= "=") (binary_expression "(local_68 - 0xc >> 1) + local_70" (parenthesized_expression "(local_68 - 0xc >> 1)" (( "(") (binary_expression "local_68 - 0xc >> 1" (binary_expression "local_68 - 0xc" (identifier "local_68") (- "-") (number_literal "0xc")) (>> ">>") (number_literal "1")) () ")")) (+ "+") (identifier "local_70"))) (; ";")) (} "}")) (else_clause "else {\n      local_70 = (uint)*param_2;\n      uVar16 = (uint)param_2[1];\nLAB_0004fbd0:\n      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;\n    }" (else "else") (compound_statement "{\n      local_70 = (uint)*param_2;\n      uVar16 = (uint)param_2[1];\nLAB_0004fbd0:\n      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;\n    }" ({ "{") (expression_statement "local_70 = (uint)*param_2;" (assignment_expression "local_70 = (uint)*param_2" (identifier "local_70") (= "=") (binary_expression "(uint)*param_2" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "param_2"))) (; ";")) (expression_statement "uVar16 = (uint)param_2[1];" (assignment_expression "uVar16 = (uint)param_2[1]" (identifier "uVar16") (= "=") (cast_expression "(uint)param_2[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")))) (; ";")) (labeled_statement "LAB_0004fbd0:\n      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;" (statement_identifier "LAB_0004fbd0") (: ":") (expression_statement "uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;" (assignment_expression "uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70" (identifier "uVar16") (= "=") (binary_expression "(byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70" (cast_expression "(byte)PTR_DAT_000f52d4[uVar16 + 0x2208]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "PTR_DAT_000f52d4[uVar16 + 0x2208]" (identifier "PTR_DAT_000f52d4") ([ "[") (binary_expression "uVar16 + 0x2208" (identifier "uVar16") (+ "+") (number_literal "0x2208")) (] "]"))) (+ "+") (identifier "local_70"))) (; ";"))) (} "}")))) (expression_statement "pdVar17 = pdVar17 + 5;" (assignment_expression "pdVar17 = pdVar17 + 5" (identifier "pdVar17") (= "=") (binary_expression "pdVar17 + 5" (identifier "pdVar17") (+ "+") (number_literal "5"))) (; ";")) (} "}")))) (expression_statement "puVar3 = PTR_DAT_000f52d4;" (assignment_expression "puVar3 = PTR_DAT_000f52d4" (identifier "puVar3") (= "=") (identifier "PTR_DAT_000f52d4")) (; ";")) (if_statement "if (uVar16 <= param_1) {\n    dVar19 = *(double *)(PTR_DAT_000f52d4 + 0x26c8);\n    dVar18 = *(double *)(PTR_DAT_000f52d4 + 0x26d0);\n    pcVar5 = (code *)(PTR_LAB_000f52ec + -0x46ac);\n    do {\n      dVar2 = pdVar17[1];\n      pbVar10 = param_2 + uVar15;\n      local_6c = (uint)*pbVar10;\n      if (((ulonglong)dVar2 & 0x24000000000000) != 0) {\n        if (local_6c < 10) {\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    \n                    \n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }\nLAB_0005018c:\n        iVar11 = *param_3;\n        uVar12 = 1;\nLAB_0004fed0:\n        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);\n        if (bVar1 == 0) goto LAB_0004fd90;\n        if ((bVar1 & 2) != 0) {\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }\n        uVar12 = -uVar12;\n        goto LAB_0004fd90;\n      }\n      if (((ulonglong)dVar2 & 0x8000000000000) != 0) {\n        if (9 < local_6c) goto LAB_0005018c;\n        if (local_6c != 0) {\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        iVar11 = *param_3;\n        uVar12 = 0xffffffff;\n        goto LAB_0004fed0;\n      }\n      if (((ulonglong)dVar2 & 0x2000000000000) != 0) {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if (local_6c < 0xc) goto LAB_00050270;\n        if ((local_6c & 1) == 0) goto LAB_0005018c;\n        uVar7 = local_6c - 0xc >> 1;\n        local_5c = uVar7;\n        if (uVar7 + uVar16 <= param_1) {\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        uVar9 = 0x14194;\n        goto LAB_0004fbfc;\n      }\n      if (((ulonglong)dVar2 & 0x10000000000000) == 0) {\n        uVar12 = (uint)(local_6c != 0);\n      }\n      else {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;\n        uVar7 = local_6c - 0xc >> 1;\n        if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }\n      }\nLAB_0004fec4:\n      if (uVar12 != 0) {\nLAB_0004fecc:\n        iVar11 = *param_3;\n        goto LAB_0004fed0;\n      }\nLAB_0004fd10:\n      if ((uint)*(ushort *)(param_3 + 2) == param_4 + 1U) goto LAB_0004fd84;\n      if (local_6c < 0x80) {\nLAB_0004ff38:\n        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];\n      }\n      else {\n        uVar7 = local_6c - 0xc >> 1;\n      }\n      param_4 = param_4 + 1;\n      uVar16 = uVar16 + uVar7;\n      iVar11 = 1;\n      uVar7 = local_6c;\n      while (uVar7 = uVar7 >> 7, uVar7 != 0) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar15 = uVar15 + iVar11;\n      if ((local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16)) goto LAB_0004fd84;\n    } while( true );\n  }" (if "if") (parenthesized_expression "(uVar16 <= param_1)" (( "(") (binary_expression "uVar16 <= param_1" (identifier "uVar16") (<= "<=") (identifier "param_1")) () ")")) (compound_statement "{\n    dVar19 = *(double *)(PTR_DAT_000f52d4 + 0x26c8);\n    dVar18 = *(double *)(PTR_DAT_000f52d4 + 0x26d0);\n    pcVar5 = (code *)(PTR_LAB_000f52ec + -0x46ac);\n    do {\n      dVar2 = pdVar17[1];\n      pbVar10 = param_2 + uVar15;\n      local_6c = (uint)*pbVar10;\n      if (((ulonglong)dVar2 & 0x24000000000000) != 0) {\n        if (local_6c < 10) {\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    \n                    \n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }\nLAB_0005018c:\n        iVar11 = *param_3;\n        uVar12 = 1;\nLAB_0004fed0:\n        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);\n        if (bVar1 == 0) goto LAB_0004fd90;\n        if ((bVar1 & 2) != 0) {\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }\n        uVar12 = -uVar12;\n        goto LAB_0004fd90;\n      }\n      if (((ulonglong)dVar2 & 0x8000000000000) != 0) {\n        if (9 < local_6c) goto LAB_0005018c;\n        if (local_6c != 0) {\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        iVar11 = *param_3;\n        uVar12 = 0xffffffff;\n        goto LAB_0004fed0;\n      }\n      if (((ulonglong)dVar2 & 0x2000000000000) != 0) {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if (local_6c < 0xc) goto LAB_00050270;\n        if ((local_6c & 1) == 0) goto LAB_0005018c;\n        uVar7 = local_6c - 0xc >> 1;\n        local_5c = uVar7;\n        if (uVar7 + uVar16 <= param_1) {\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        uVar9 = 0x14194;\n        goto LAB_0004fbfc;\n      }\n      if (((ulonglong)dVar2 & 0x10000000000000) == 0) {\n        uVar12 = (uint)(local_6c != 0);\n      }\n      else {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;\n        uVar7 = local_6c - 0xc >> 1;\n        if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }\n      }\nLAB_0004fec4:\n      if (uVar12 != 0) {\nLAB_0004fecc:\n        iVar11 = *param_3;\n        goto LAB_0004fed0;\n      }\nLAB_0004fd10:\n      if ((uint)*(ushort *)(param_3 + 2) == param_4 + 1U) goto LAB_0004fd84;\n      if (local_6c < 0x80) {\nLAB_0004ff38:\n        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];\n      }\n      else {\n        uVar7 = local_6c - 0xc >> 1;\n      }\n      param_4 = param_4 + 1;\n      uVar16 = uVar16 + uVar7;\n      iVar11 = 1;\n      uVar7 = local_6c;\n      while (uVar7 = uVar7 >> 7, uVar7 != 0) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar15 = uVar15 + iVar11;\n      if ((local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16)) goto LAB_0004fd84;\n    } while( true );\n  }" ({ "{") (expression_statement "dVar19 = *(double *)(PTR_DAT_000f52d4 + 0x26c8);" (assignment_expression "dVar19 = *(double *)(PTR_DAT_000f52d4 + 0x26c8)" (identifier "dVar19") (= "=") (pointer_expression "*(double *)(PTR_DAT_000f52d4 + 0x26c8)" (* "*") (cast_expression "(double *)(PTR_DAT_000f52d4 + 0x26c8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_000f52d4 + 0x26c8)" (( "(") (binary_expression "PTR_DAT_000f52d4 + 0x26c8" (identifier "PTR_DAT_000f52d4") (+ "+") (number_literal "0x26c8")) () ")"))))) (; ";")) (expression_statement "dVar18 = *(double *)(PTR_DAT_000f52d4 + 0x26d0);" (assignment_expression "dVar18 = *(double *)(PTR_DAT_000f52d4 + 0x26d0)" (identifier "dVar18") (= "=") (pointer_expression "*(double *)(PTR_DAT_000f52d4 + 0x26d0)" (* "*") (cast_expression "(double *)(PTR_DAT_000f52d4 + 0x26d0)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_000f52d4 + 0x26d0)" (( "(") (binary_expression "PTR_DAT_000f52d4 + 0x26d0" (identifier "PTR_DAT_000f52d4") (+ "+") (number_literal "0x26d0")) () ")"))))) (; ";")) (expression_statement "pcVar5 = (code *)(PTR_LAB_000f52ec + -0x46ac);" (assignment_expression "pcVar5 = (code *)(PTR_LAB_000f52ec + -0x46ac)" (identifier "pcVar5") (= "=") (cast_expression "(code *)(PTR_LAB_000f52ec + -0x46ac)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f52ec + -0x46ac)" (( "(") (binary_expression "PTR_LAB_000f52ec + -0x46ac" (identifier "PTR_LAB_000f52ec") (+ "+") (number_literal "-0x46ac")) () ")")))) (; ";")) (do_statement "do {\n      dVar2 = pdVar17[1];\n      pbVar10 = param_2 + uVar15;\n      local_6c = (uint)*pbVar10;\n      if (((ulonglong)dVar2 & 0x24000000000000) != 0) {\n        if (local_6c < 10) {\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    \n                    \n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }\nLAB_0005018c:\n        iVar11 = *param_3;\n        uVar12 = 1;\nLAB_0004fed0:\n        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);\n        if (bVar1 == 0) goto LAB_0004fd90;\n        if ((bVar1 & 2) != 0) {\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }\n        uVar12 = -uVar12;\n        goto LAB_0004fd90;\n      }\n      if (((ulonglong)dVar2 & 0x8000000000000) != 0) {\n        if (9 < local_6c) goto LAB_0005018c;\n        if (local_6c != 0) {\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        iVar11 = *param_3;\n        uVar12 = 0xffffffff;\n        goto LAB_0004fed0;\n      }\n      if (((ulonglong)dVar2 & 0x2000000000000) != 0) {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if (local_6c < 0xc) goto LAB_00050270;\n        if ((local_6c & 1) == 0) goto LAB_0005018c;\n        uVar7 = local_6c - 0xc >> 1;\n        local_5c = uVar7;\n        if (uVar7 + uVar16 <= param_1) {\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        uVar9 = 0x14194;\n        goto LAB_0004fbfc;\n      }\n      if (((ulonglong)dVar2 & 0x10000000000000) == 0) {\n        uVar12 = (uint)(local_6c != 0);\n      }\n      else {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;\n        uVar7 = local_6c - 0xc >> 1;\n        if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }\n      }\nLAB_0004fec4:\n      if (uVar12 != 0) {\nLAB_0004fecc:\n        iVar11 = *param_3;\n        goto LAB_0004fed0;\n      }\nLAB_0004fd10:\n      if ((uint)*(ushort *)(param_3 + 2) == param_4 + 1U) goto LAB_0004fd84;\n      if (local_6c < 0x80) {\nLAB_0004ff38:\n        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];\n      }\n      else {\n        uVar7 = local_6c - 0xc >> 1;\n      }\n      param_4 = param_4 + 1;\n      uVar16 = uVar16 + uVar7;\n      iVar11 = 1;\n      uVar7 = local_6c;\n      while (uVar7 = uVar7 >> 7, uVar7 != 0) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar15 = uVar15 + iVar11;\n      if ((local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16)) goto LAB_0004fd84;\n    } while( true );" (do "do") (compound_statement "{\n      dVar2 = pdVar17[1];\n      pbVar10 = param_2 + uVar15;\n      local_6c = (uint)*pbVar10;\n      if (((ulonglong)dVar2 & 0x24000000000000) != 0) {\n        if (local_6c < 10) {\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    \n                    \n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }\nLAB_0005018c:\n        iVar11 = *param_3;\n        uVar12 = 1;\nLAB_0004fed0:\n        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);\n        if (bVar1 == 0) goto LAB_0004fd90;\n        if ((bVar1 & 2) != 0) {\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }\n        uVar12 = -uVar12;\n        goto LAB_0004fd90;\n      }\n      if (((ulonglong)dVar2 & 0x8000000000000) != 0) {\n        if (9 < local_6c) goto LAB_0005018c;\n        if (local_6c != 0) {\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        iVar11 = *param_3;\n        uVar12 = 0xffffffff;\n        goto LAB_0004fed0;\n      }\n      if (((ulonglong)dVar2 & 0x2000000000000) != 0) {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if (local_6c < 0xc) goto LAB_00050270;\n        if ((local_6c & 1) == 0) goto LAB_0005018c;\n        uVar7 = local_6c - 0xc >> 1;\n        local_5c = uVar7;\n        if (uVar7 + uVar16 <= param_1) {\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        uVar9 = 0x14194;\n        goto LAB_0004fbfc;\n      }\n      if (((ulonglong)dVar2 & 0x10000000000000) == 0) {\n        uVar12 = (uint)(local_6c != 0);\n      }\n      else {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;\n        uVar7 = local_6c - 0xc >> 1;\n        if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }\n      }\nLAB_0004fec4:\n      if (uVar12 != 0) {\nLAB_0004fecc:\n        iVar11 = *param_3;\n        goto LAB_0004fed0;\n      }\nLAB_0004fd10:\n      if ((uint)*(ushort *)(param_3 + 2) == param_4 + 1U) goto LAB_0004fd84;\n      if (local_6c < 0x80) {\nLAB_0004ff38:\n        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];\n      }\n      else {\n        uVar7 = local_6c - 0xc >> 1;\n      }\n      param_4 = param_4 + 1;\n      uVar16 = uVar16 + uVar7;\n      iVar11 = 1;\n      uVar7 = local_6c;\n      while (uVar7 = uVar7 >> 7, uVar7 != 0) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar15 = uVar15 + iVar11;\n      if ((local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16)) goto LAB_0004fd84;\n    }" ({ "{") (expression_statement "dVar2 = pdVar17[1];" (assignment_expression "dVar2 = pdVar17[1]" (identifier "dVar2") (= "=") (subscript_expression "pdVar17[1]" (identifier "pdVar17") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "pbVar10 = param_2 + uVar15;" (assignment_expression "pbVar10 = param_2 + uVar15" (identifier "pbVar10") (= "=") (binary_expression "param_2 + uVar15" (identifier "param_2") (+ "+") (identifier "uVar15"))) (; ";")) (expression_statement "local_6c = (uint)*pbVar10;" (assignment_expression "local_6c = (uint)*pbVar10" (identifier "local_6c") (= "=") (binary_expression "(uint)*pbVar10" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar10"))) (; ";")) (if_statement "if (((ulonglong)dVar2 & 0x24000000000000) != 0) {\n        if (local_6c < 10) {\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    \n                    \n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }\nLAB_0005018c:\n        iVar11 = *param_3;\n        uVar12 = 1;\nLAB_0004fed0:\n        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);\n        if (bVar1 == 0) goto LAB_0004fd90;\n        if ((bVar1 & 2) != 0) {\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }\n        uVar12 = -uVar12;\n        goto LAB_0004fd90;\n      }" (if "if") (parenthesized_expression "(((ulonglong)dVar2 & 0x24000000000000) != 0)" (( "(") (binary_expression "((ulonglong)dVar2 & 0x24000000000000) != 0" (parenthesized_expression "((ulonglong)dVar2 & 0x24000000000000)" (( "(") (binary_expression "(ulonglong)dVar2 & 0x24000000000000" (cast_expression "(ulonglong)dVar2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar2")) (& "&") (number_literal "0x24000000000000")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if (local_6c < 10) {\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    \n                    \n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }\nLAB_0005018c:\n        iVar11 = *param_3;\n        uVar12 = 1;\nLAB_0004fed0:\n        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);\n        if (bVar1 == 0) goto LAB_0004fd90;\n        if ((bVar1 & 2) != 0) {\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }\n        uVar12 = -uVar12;\n        goto LAB_0004fd90;\n      }" ({ "{") (if_statement "if (local_6c < 10) {\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    \n                    \n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }" (if "if") (parenthesized_expression "(local_6c < 10)" (( "(") (binary_expression "local_6c < 10" (identifier "local_6c") (< "<") (number_literal "10")) () ")")) (compound_statement "{\n          if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    \n                    \n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }\n          goto LAB_00050270;\n        }" ({ "{") (if_statement "if (local_6c != 0) {\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    \n                    \n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }" (if "if") (parenthesized_expression "(local_6c != 0)" (( "(") (binary_expression "local_6c != 0" (identifier "local_6c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }\n            if (local_6c < 7) {\n                    \n                    \n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }\n            iVar11 = *(int *)pdVar17;\n            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }\n          }" ({ "{") (if_statement "if (local_6c == 7) {\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }" (if "if") (parenthesized_expression "(local_6c == 7)" (( "(") (binary_expression "local_6c == 7" (identifier "local_6c") (== "==") (number_literal "7")) () ")")) (compound_statement "{\n              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }\n              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }\n              uVar12 = 1;\n              iVar11 = *param_3;\n              goto LAB_0004fed0;\n            }" ({ "{") (expression_statement "(*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);" (call_expression "(*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52c8 + 0x56a8))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f52c8 + 0x56a8)" (* "*") (cast_expression "(code *)(PTR_LAB_000f52c8 + 0x56a8)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f52c8 + 0x56a8)" (( "(") (binary_expression "PTR_LAB_000f52c8 + 0x56a8" (identifier "PTR_LAB_000f52c8") (+ "+") (number_literal "0x56a8")) () ")")))) () ")")) (argument_list "(param_2 + uVar16,7,&local_68)" (( "(") (binary_expression "param_2 + uVar16" (identifier "param_2") (+ "+") (identifier "uVar16")) (, ",") (number_literal "7") (, ",") (pointer_expression "&local_68" (& "&") (identifier "local_68")) () ")"))) (; ";")) (if_statement "if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }" (if "if") (parenthesized_expression "((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8))" (( "(") (binary_expression "(double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)" (cast_expression "(double)CONCAT44(local_68,uStack_64)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (call_expression "CONCAT44(local_68,uStack_64)" (identifier "CONCAT44") (argument_list "(local_68,uStack_64)" (( "(") (identifier "local_68") (, ",") (identifier "uStack_64") () ")")))) (< "<") (pointer_expression "*(double *)(puVar3 + 0x26c8)" (* "*") (cast_expression "(double *)(puVar3 + 0x26c8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 0x26c8)" (( "(") (binary_expression "puVar3 + 0x26c8" (identifier "puVar3") (+ "+") (number_literal "0x26c8")) () ")"))))) () ")")) (compound_statement "{\n                uVar12 = 0xffffffff;\n                goto LAB_0004fecc;\n              }" ({ "{") (expression_statement "uVar12 = 0xffffffff;" (assignment_expression "uVar12 = 0xffffffff" (identifier "uVar12") (= "=") (number_literal "0xffffffff")) (; ";")) (goto_statement "goto LAB_0004fecc;" (goto "goto") (statement_identifier "LAB_0004fecc") (; ";")) (} "}"))) (if_statement "if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }" (if "if") (parenthesized_expression "((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0))" (( "(") (binary_expression "(double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)" (cast_expression "(double)CONCAT44(local_68,uStack_64)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (call_expression "CONCAT44(local_68,uStack_64)" (identifier "CONCAT44") (argument_list "(local_68,uStack_64)" (( "(") (identifier "local_68") (, ",") (identifier "uStack_64") () ")")))) (< "<") (pointer_expression "*(double *)(puVar3 + 0x26d0)" (* "*") (cast_expression "(double *)(puVar3 + 0x26d0)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 0x26d0)" (( "(") (binary_expression "puVar3 + 0x26d0" (identifier "puVar3") (+ "+") (number_literal "0x26d0")) () ")"))))) () ")")) (compound_statement "{\n                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));\n                uVar12 = -iVar11;\n                goto LAB_0004fec4;\n              }" ({ "{") (expression_statement "iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));" (assignment_expression "iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4))" (identifier "iVar11") (= "=") (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x1598))\n                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4))" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x1598))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x1598)" (* "*") (cast_expression "(code *)(PTR_LAB_000f52ec + -0x1598)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f52ec + -0x1598)" (( "(") (binary_expression "PTR_LAB_000f52ec + -0x1598" (identifier "PTR_LAB_000f52ec") (+ "+") (number_literal "-0x1598")) () ")")))) () ")")) (argument_list "(*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4))" (( "(") (pointer_expression "*(undefined4 *)pdVar17" (* "*") (cast_expression "(undefined4 *)pdVar17" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pdVar17"))) (, ",") (pointer_expression "*(undefined4 *)((int)pdVar17 + 4)" (* "*") (cast_expression "(undefined4 *)((int)pdVar17 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pdVar17 + 4)" (( "(") (binary_expression "(int)pdVar17 + 4" (cast_expression "(int)pdVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pdVar17")) (+ "+") (number_literal "4")) () ")")))) () ")")))) (; ";")) (expression_statement "uVar12 = -iVar11;" (assignment_expression "uVar12 = -iVar11" (identifier "uVar12") (= "=") (unary_expression "-iVar11" (- "-") (identifier "iVar11"))) (; ";")) (goto_statement "goto LAB_0004fec4;" (goto "goto") (statement_identifier "LAB_0004fec4") (; ";")) (} "}"))) (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" (identifier "uVar12") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar11 = *param_3;" (assignment_expression "iVar11 = *param_3" (identifier "iVar11") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (goto_statement "goto LAB_0004fed0;" (goto "goto") (statement_identifier "LAB_0004fed0") (; ";")) (} "}"))) (if_statement "if (local_6c < 7) {\n                    \n                    \n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }" (if "if") (parenthesized_expression "(local_6c < 7)" (( "(") (binary_expression "local_6c < 7" (identifier "local_6c") (< "<") (number_literal "7")) () ")")) (compound_statement "{\n                    \n                    \n              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();\n              return uVar15;\n            }" ({ "{") (expression_statement "uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();" (assignment_expression "uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))()" (identifier "uVar15") (= "=") (call_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))" (( "(") (pointer_expression "*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc))" (* "*") (cast_expression "(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc))" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc))" (( "(") (binary_expression "&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)" (pointer_expression "&_gp_1" (& "&") (identifier "_gp_1")) (+ "+") (pointer_expression "*(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)" (* "*") (cast_expression "(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)" (( "(") (binary_expression "PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc" (binary_expression "PTR_DAT_000f52d4 + local_6c * 4" (identifier "PTR_DAT_000f52d4") (+ "+") (binary_expression "local_6c * 4" (identifier "local_6c") (* "*") (number_literal "4"))) (+ "+") (number_literal "-0x31cc")) () ")"))))) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return uVar15;" (return "return") (identifier "uVar15") (; ";")) (} "}"))) (expression_statement "iVar11 = *(int *)pdVar17;" (assignment_expression "iVar11 = *(int *)pdVar17" (identifier "iVar11") (= "=") (pointer_expression "*(int *)pdVar17" (* "*") (cast_expression "(int *)pdVar17" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pdVar17")))) (; ";")) (if_statement "if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }" (if "if") (parenthesized_expression "((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8))))" (( "(") (binary_expression "(iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))" (parenthesized_expression "(iVar11 < 1)" (( "(") (binary_expression "iVar11 < 1" (identifier "iVar11") (< "<") (number_literal "1")) () ")")) (&& "&&") (parenthesized_expression "((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))" (( "(") (parenthesized_expression "(iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8))" (( "(") (binary_expression "iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)" (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) (|| "||") (parenthesized_expression "(*(uint *)((int)pdVar17 + 4) <= local_6c - 8)" (( "(") (binary_expression "*(uint *)((int)pdVar17 + 4) <= local_6c - 8" (pointer_expression "*(uint *)((int)pdVar17 + 4)" (* "*") (cast_expression "(uint *)((int)pdVar17 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pdVar17 + 4)" (( "(") (binary_expression "(int)pdVar17 + 4" (cast_expression "(int)pdVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pdVar17")) (+ "+") (number_literal "4")) () ")")))) (<= "<=") (binary_expression "local_6c - 8" (identifier "local_6c") (- "-") (number_literal "8"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;\n              goto LAB_0004fd10;\n            }" ({ "{") (if_statement "if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))\n              goto LAB_0005018c;" (if "if") (parenthesized_expression "((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))" (( "(") (binary_expression "(iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8)))" (parenthesized_expression "(iVar11 < 0)" (( "(") (binary_expression "iVar11 < 0" (identifier "iVar11") (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8)))" (( "(") (parenthesized_expression "(iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))" (( "(") (binary_expression "iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8)" (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) (&& "&&") (parenthesized_expression "(*(uint *)((int)pdVar17 + 4) < local_6c - 8)" (( "(") (binary_expression "*(uint *)((int)pdVar17 + 4) < local_6c - 8" (pointer_expression "*(uint *)((int)pdVar17 + 4)" (* "*") (cast_expression "(uint *)((int)pdVar17 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pdVar17 + 4)" (( "(") (binary_expression "(int)pdVar17 + 4" (cast_expression "(int)pdVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pdVar17")) (+ "+") (number_literal "4")) () ")")))) (< "<") (binary_expression "local_6c - 8" (identifier "local_6c") (- "-") (number_literal "8"))) () ")"))) () ")")) () ")"))) () ")")) (goto_statement "goto LAB_0005018c;" (goto "goto") (statement_identifier "LAB_0005018c") (; ";"))) (goto_statement "goto LAB_0004fd10;" (goto "goto") (statement_identifier "LAB_0004fd10") (; ";")) (} "}"))) (} "}"))) (goto_statement "goto LAB_00050270;" (goto "goto") (statement_identifier "LAB_00050270") (; ";")) (} "}"))) (labeled_statement "LAB_0005018c:\n        iVar11 = *param_3;" (statement_identifier "LAB_0005018c") (: ":") (expression_statement "iVar11 = *param_3;" (assignment_expression "iVar11 = *param_3" (identifier "iVar11") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";"))) (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" (identifier "uVar12") (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_0004fed0:\n        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);" (statement_identifier "LAB_0004fed0") (: ":") (expression_statement "bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);" (assignment_expression "bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(*(int *)(iVar11 + 0x10) + param_4)" (* "*") (cast_expression "(byte *)(*(int *)(iVar11 + 0x10) + param_4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar11 + 0x10) + param_4)" (( "(") (binary_expression "*(int *)(iVar11 + 0x10) + param_4" (pointer_expression "*(int *)(iVar11 + 0x10)" (* "*") (cast_expression "(int *)(iVar11 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x10)" (( "(") (binary_expression "iVar11 + 0x10" (identifier "iVar11") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (identifier "param_4")) () ")"))))) (; ";"))) (if_statement "if (bVar1 == 0) goto LAB_0004fd90;" (if "if") (parenthesized_expression "(bVar1 == 0)" (( "(") (binary_expression "bVar1 == 0" (identifier "bVar1") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004fd90;" (goto "goto") (statement_identifier "LAB_0004fd90") (; ";"))) (if_statement "if ((bVar1 & 2) != 0) {\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }" (if "if") (parenthesized_expression "((bVar1 & 2) != 0)" (( "(") (binary_expression "(bVar1 & 2) != 0" (parenthesized_expression "(bVar1 & 2)" (( "(") (binary_expression "bVar1 & 2" (identifier "bVar1") (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }\n          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;\n        }" ({ "{") (if_statement "if (local_6c == 0) {\n            bVar8 = 1;\n          }\n          else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            bVar8 = 1;\n          }" ({ "{") (expression_statement "bVar8 = 1;" (assignment_expression "bVar8 = 1" (identifier "bVar8") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }" (else "else") (compound_statement "{\n            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;\n          }" ({ "{") (expression_statement "bVar8 = *(byte *)((int)pdVar17 + 9) & 1;" (assignment_expression "bVar8 = *(byte *)((int)pdVar17 + 9) & 1" (identifier "bVar8") (= "=") (binary_expression "*(byte *)((int)pdVar17 + 9) & 1" (pointer_expression "*(byte *)((int)pdVar17 + 9)" (* "*") (cast_expression "(byte *)((int)pdVar17 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pdVar17 + 9)" (( "(") (binary_expression "(int)pdVar17 + 9" (cast_expression "(int)pdVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pdVar17")) (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "1"))) (; ";")) (} "}")))) (if_statement "if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;" (if "if") (parenthesized_expression "((bVar1 & 1) == bVar8)" (( "(") (binary_expression "(bVar1 & 1) == bVar8" (parenthesized_expression "(bVar1 & 1)" (( "(") (binary_expression "bVar1 & 1" (identifier "bVar1") (& "&") (number_literal "1")) () ")")) (== "==") (identifier "bVar8")) () ")")) (goto_statement "goto LAB_0004fd90;" (goto "goto") (statement_identifier "LAB_0004fd90") (; ";"))) (} "}"))) (expression_statement "uVar12 = -uVar12;" (assignment_expression "uVar12 = -uVar12" (identifier "uVar12") (= "=") (unary_expression "-uVar12" (- "-") (identifier "uVar12"))) (; ";")) (goto_statement "goto LAB_0004fd90;" (goto "goto") (statement_identifier "LAB_0004fd90") (; ";")) (} "}"))) (if_statement "if (((ulonglong)dVar2 & 0x8000000000000) != 0) {\n        if (9 < local_6c) goto LAB_0005018c;\n        if (local_6c != 0) {\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        iVar11 = *param_3;\n        uVar12 = 0xffffffff;\n        goto LAB_0004fed0;\n      }" (if "if") (parenthesized_expression "(((ulonglong)dVar2 & 0x8000000000000) != 0)" (( "(") (binary_expression "((ulonglong)dVar2 & 0x8000000000000) != 0" (parenthesized_expression "((ulonglong)dVar2 & 0x8000000000000)" (( "(") (binary_expression "(ulonglong)dVar2 & 0x8000000000000" (cast_expression "(ulonglong)dVar2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar2")) (& "&") (number_literal "0x8000000000000")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if (9 < local_6c) goto LAB_0005018c;\n        if (local_6c != 0) {\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }\nLAB_00050270:\n        iVar11 = *param_3;\n        uVar12 = 0xffffffff;\n        goto LAB_0004fed0;\n      }" ({ "{") (if_statement "if (9 < local_6c) goto LAB_0005018c;" (if "if") (parenthesized_expression "(9 < local_6c)" (( "(") (binary_expression "9 < local_6c" (number_literal "9") (< "<") (identifier "local_6c")) () ")")) (goto_statement "goto LAB_0005018c;" (goto "goto") (statement_identifier "LAB_0005018c") (; ";"))) (if_statement "if (local_6c != 0) {\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }" (if "if") (parenthesized_expression "(local_6c != 0)" (( "(") (binary_expression "local_6c != 0" (identifier "local_6c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);\n          if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }\n        }" ({ "{") (expression_statement "(*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);" (call_expression "(*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52c8 + 0x56a8))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f52c8 + 0x56a8)" (* "*") (cast_expression "(code *)(PTR_LAB_000f52c8 + 0x56a8)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f52c8 + 0x56a8)" (( "(") (binary_expression "PTR_LAB_000f52c8 + 0x56a8" (identifier "PTR_LAB_000f52c8") (+ "+") (number_literal "0x56a8")) () ")")))) () ")")) (argument_list "(param_2 + uVar16,local_6c,&local_68)" (( "(") (binary_expression "param_2 + uVar16" (identifier "param_2") (+ "+") (identifier "uVar16")) (, ",") (identifier "local_6c") (, ",") (pointer_expression "&local_68" (& "&") (identifier "local_68")) () ")"))) (; ";")) (if_statement "if (local_6c == 7) {\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }\n          else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }" (if "if") (parenthesized_expression "(local_6c == 7)" (( "(") (binary_expression "local_6c == 7" (identifier "local_6c") (== "==") (number_literal "7")) () ")")) (compound_statement "{\n            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }\n          }" ({ "{") (if_statement "if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }" (if "if") (parenthesized_expression "(*pdVar17 <= (double)CONCAT44(local_68,uStack_64))" (( "(") (binary_expression "*pdVar17 <= (double)CONCAT44(local_68,uStack_64)" (pointer_expression "*pdVar17" (* "*") (identifier "pdVar17")) (<= "<=") (cast_expression "(double)CONCAT44(local_68,uStack_64)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (call_expression "CONCAT44(local_68,uStack_64)" (identifier "CONCAT44") (argument_list "(local_68,uStack_64)" (( "(") (identifier "local_68") (, ",") (identifier "uStack_64") () ")"))))) () ")")) (compound_statement "{\n              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;\n              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;\n              goto LAB_0004fd84;\n            }" ({ "{") (if_statement "if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;" (if "if") (parenthesized_expression "(*pdVar17 < (double)CONCAT44(local_68,uStack_64))" (( "(") (binary_expression "*pdVar17 < (double)CONCAT44(local_68,uStack_64)" (pointer_expression "*pdVar17" (* "*") (identifier "pdVar17")) (< "<") (cast_expression "(double)CONCAT44(local_68,uStack_64)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (call_expression "CONCAT44(local_68,uStack_64)" (identifier "CONCAT44") (argument_list "(local_68,uStack_64)" (( "(") (identifier "local_68") (, ",") (identifier "uStack_64") () ")"))))) () ")")) (goto_statement "goto LAB_0005018c;" (goto "goto") (statement_identifier "LAB_0005018c") (; ";"))) (if_statement "if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;" (if "if") (parenthesized_expression "(param_4 + 1U != (uint)*(ushort *)(param_3 + 2))" (( "(") (binary_expression "param_4 + 1U != (uint)*(ushort *)(param_3 + 2)" (binary_expression "param_4 + 1U" (identifier "param_4") (+ "+") (number_literal "1U")) (!= "!=") (binary_expression "(uint)*(ushort *)(param_3 + 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(param_3 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 2)" (( "(") (binary_expression "param_3 + 2" (identifier "param_3") (+ "+") (number_literal "2")) () ")"))))) () ")")) (goto_statement "goto LAB_0004ff38;" (goto "goto") (statement_identifier "LAB_0004ff38") (; ";"))) (goto_statement "goto LAB_0004fd84;" (goto "goto") (statement_identifier "LAB_0004fd84") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }" (else "else") (compound_statement "{\n            if (*pdVar17 < dVar19) goto LAB_0005018c;\n            if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }\n          }" ({ "{") (if_statement "if (*pdVar17 < dVar19) goto LAB_0005018c;" (if "if") (parenthesized_expression "(*pdVar17 < dVar19)" (( "(") (binary_expression "*pdVar17 < dVar19" (pointer_expression "*pdVar17" (* "*") (identifier "pdVar17")) (< "<") (identifier "dVar19")) () ")")) (goto_statement "goto LAB_0005018c;" (goto "goto") (statement_identifier "LAB_0005018c") (; ";"))) (if_statement "if (*pdVar17 < dVar18) {\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }" (if "if") (parenthesized_expression "(*pdVar17 < dVar18)" (( "(") (binary_expression "*pdVar17 < dVar18" (pointer_expression "*pdVar17" (* "*") (identifier "pdVar17")) (< "<") (identifier "dVar18")) () ")")) (compound_statement "{\n              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);\n              goto LAB_0004fec4;\n            }" ({ "{") (expression_statement "uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);" (assignment_expression "uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64)" (identifier "uVar12") (= "=") (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x1598))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x1598)" (* "*") (cast_expression "(code *)(PTR_LAB_000f52ec + -0x1598)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f52ec + -0x1598)" (( "(") (binary_expression "PTR_LAB_000f52ec + -0x1598" (identifier "PTR_LAB_000f52ec") (+ "+") (number_literal "-0x1598")) () ")")))) () ")")) (argument_list "(local_68,uStack_64)" (( "(") (identifier "local_68") (, ",") (identifier "uStack_64") () ")")))) (; ";")) (goto_statement "goto LAB_0004fec4;" (goto "goto") (statement_identifier "LAB_0004fec4") (; ";")) (} "}"))) (} "}")))) (} "}"))) (labeled_statement "LAB_00050270:\n        iVar11 = *param_3;" (statement_identifier "LAB_00050270") (: ":") (expression_statement "iVar11 = *param_3;" (assignment_expression "iVar11 = *param_3" (identifier "iVar11") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";"))) (expression_statement "uVar12 = 0xffffffff;" (assignment_expression "uVar12 = 0xffffffff" (identifier "uVar12") (= "=") (number_literal "0xffffffff")) (; ";")) (goto_statement "goto LAB_0004fed0;" (goto "goto") (statement_identifier "LAB_0004fed0") (; ";")) (} "}"))) (if_statement "if (((ulonglong)dVar2 & 0x2000000000000) != 0) {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if (local_6c < 0xc) goto LAB_00050270;\n        if ((local_6c & 1) == 0) goto LAB_0005018c;\n        uVar7 = local_6c - 0xc >> 1;\n        local_5c = uVar7;\n        if (uVar7 + uVar16 <= param_1) {\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        uVar9 = 0x14194;\n        goto LAB_0004fbfc;\n      }" (if "if") (parenthesized_expression "(((ulonglong)dVar2 & 0x2000000000000) != 0)" (( "(") (binary_expression "((ulonglong)dVar2 & 0x2000000000000) != 0" (parenthesized_expression "((ulonglong)dVar2 & 0x2000000000000)" (( "(") (binary_expression "(ulonglong)dVar2 & 0x2000000000000" (cast_expression "(ulonglong)dVar2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar2")) (& "&") (number_literal "0x2000000000000")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if (local_6c < 0xc) goto LAB_00050270;\n        if ((local_6c & 1) == 0) goto LAB_0005018c;\n        uVar7 = local_6c - 0xc >> 1;\n        local_5c = uVar7;\n        if (uVar7 + uVar16 <= param_1) {\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }\n        uVar9 = 0x14194;\n        goto LAB_0004fbfc;\n      }" ({ "{") (if_statement "if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }" (if "if") (parenthesized_expression "(0x7f < local_6c)" (( "(") (binary_expression "0x7f < local_6c" (number_literal "0x7f") (< "<") (identifier "local_6c")) () ")")) (compound_statement "{\n          (*pcVar5)(pbVar10,&local_6c);\n        }" ({ "{") (expression_statement "(*pcVar5)(pbVar10,&local_6c);" (call_expression "(*pcVar5)(pbVar10,&local_6c)" (parenthesized_expression "(*pcVar5)" (( "(") (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) () ")")) (argument_list "(pbVar10,&local_6c)" (( "(") (identifier "pbVar10") (, ",") (pointer_expression "&local_6c" (& "&") (identifier "local_6c")) () ")"))) (; ";")) (} "}"))) (if_statement "if (local_6c < 0xc) goto LAB_00050270;" (if "if") (parenthesized_expression "(local_6c < 0xc)" (( "(") (binary_expression "local_6c < 0xc" (identifier "local_6c") (< "<") (number_literal "0xc")) () ")")) (goto_statement "goto LAB_00050270;" (goto "goto") (statement_identifier "LAB_00050270") (; ";"))) (if_statement "if ((local_6c & 1) == 0) goto LAB_0005018c;" (if "if") (parenthesized_expression "((local_6c & 1) == 0)" (( "(") (binary_expression "(local_6c & 1) == 0" (parenthesized_expression "(local_6c & 1)" (( "(") (binary_expression "local_6c & 1" (identifier "local_6c") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0005018c;" (goto "goto") (statement_identifier "LAB_0005018c") (; ";"))) (expression_statement "uVar7 = local_6c - 0xc >> 1;" (assignment_expression "uVar7 = local_6c - 0xc >> 1" (identifier "uVar7") (= "=") (binary_expression "local_6c - 0xc >> 1" (binary_expression "local_6c - 0xc" (identifier "local_6c") (- "-") (number_literal "0xc")) (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "local_5c = uVar7;" (assignment_expression "local_5c = uVar7" (identifier "local_5c") (= "=") (identifier "uVar7")) (; ";")) (if_statement "if (uVar7 + uVar16 <= param_1) {\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }" (if "if") (parenthesized_expression "(uVar7 + uVar16 <= param_1)" (( "(") (binary_expression "uVar7 + uVar16 <= param_1" (binary_expression "uVar7 + uVar16" (identifier "uVar7") (+ "+") (identifier "uVar16")) (<= "<=") (identifier "param_1")) () ")")) (compound_statement "{\n          iVar11 = *param_3;\n          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }\n        }" ({ "{") (expression_statement "iVar11 = *param_3;" (assignment_expression "iVar11 = *param_3" (identifier "iVar11") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (if_statement "if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }" (if "if") (parenthesized_expression "(param_4 < (int)(uint)*(ushort *)(iVar11 + 8))" (( "(") (binary_expression "param_4 < (int)(uint)*(ushort *)(iVar11 + 8)" (identifier "param_4") (< "<") (binary_expression "(int)(uint)*(ushort *)(iVar11 + 8)" (cast_expression "(int)(uint)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(ushort *)(iVar11 + 8)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 8)" (( "(") (binary_expression "iVar11 + 8" (identifier "iVar11") (+ "+") (number_literal "8")) () ")"))))) () ")")) (compound_statement "{\n            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);\n            if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }\n            goto LAB_0004fec4;\n          }" ({ "{") (expression_statement "iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);" (assignment_expression "iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(iVar11 + (param_4 + 4) * 4 + 4)" (* "*") (cast_expression "(int *)(iVar11 + (param_4 + 4) * 4 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + (param_4 + 4) * 4 + 4)" (( "(") (binary_expression "iVar11 + (param_4 + 4) * 4 + 4" (binary_expression "iVar11 + (param_4 + 4) * 4" (identifier "iVar11") (+ "+") (binary_expression "(param_4 + 4) * 4" (parenthesized_expression "(param_4 + 4)" (( "(") (binary_expression "param_4 + 4" (identifier "param_4") (+ "+") (number_literal "4")) () ")")) (* "*") (number_literal "4"))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (iVar13 == 0) {\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }\n            else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              uVar14 = *(uint *)((int)pdVar17 + 0xc);\n              uVar12 = uVar14;\n              if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }\n              uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n              if (uVar12 != 0) goto LAB_0004fed0;\n              uVar12 = uVar7 - uVar14;\n            }" ({ "{") (expression_statement "uVar14 = *(uint *)((int)pdVar17 + 0xc);" (assignment_expression "uVar14 = *(uint *)((int)pdVar17 + 0xc)" (identifier "uVar14") (= "=") (pointer_expression "*(uint *)((int)pdVar17 + 0xc)" (* "*") (cast_expression "(uint *)((int)pdVar17 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pdVar17 + 0xc)" (( "(") (binary_expression "(int)pdVar17 + 0xc" (cast_expression "(int)pdVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pdVar17")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "uVar12 = uVar14;" (assignment_expression "uVar12 = uVar14" (identifier "uVar12") (= "=") (identifier "uVar14")) (; ";")) (if_statement "if ((int)uVar7 <= (int)uVar14) {\n                uVar12 = uVar7;\n              }" (if "if") (parenthesized_expression "((int)uVar7 <= (int)uVar14)" (( "(") (binary_expression "(int)uVar7 <= (int)uVar14" (cast_expression "(int)uVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar7")) (<= "<=") (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14"))) () ")")) (compound_statement "{\n                uVar12 = uVar7;\n              }" ({ "{") (expression_statement "uVar12 = uVar7;" (assignment_expression "uVar12 = uVar7" (identifier "uVar12") (= "=") (identifier "uVar7")) (; ";")) (} "}"))) (expression_statement "uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);" (assignment_expression "uVar12 = (*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12)" (identifier "uVar12") (= "=") (call_expression "(*(code *)PTR_memcmp_000f5554)\n                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12)" (parenthesized_expression "(*(code *)PTR_memcmp_000f5554)" (( "(") (pointer_expression "*(code *)PTR_memcmp_000f5554" (* "*") (cast_expression "(code *)PTR_memcmp_000f5554" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcmp_000f5554"))) () ")")) (argument_list "(param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12)" (( "(") (binary_expression "param_2 + uVar16" (identifier "param_2") (+ "+") (identifier "uVar16")) (, ",") (pointer_expression "*(undefined4 *)(pdVar17 + 2)" (* "*") (cast_expression "(undefined4 *)(pdVar17 + 2)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pdVar17 + 2)" (( "(") (binary_expression "pdVar17 + 2" (identifier "pdVar17") (+ "+") (number_literal "2")) () ")")))) (, ",") (identifier "uVar12") () ")")))) (; ";")) (if_statement "if (uVar12 != 0) goto LAB_0004fed0;" (if "if") (parenthesized_expression "(uVar12 != 0)" (( "(") (binary_expression "uVar12 != 0" (identifier "uVar12") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004fed0;" (goto "goto") (statement_identifier "LAB_0004fed0") (; ";"))) (expression_statement "uVar12 = uVar7 - uVar14;" (assignment_expression "uVar12 = uVar7 - uVar14" (identifier "uVar12") (= "=") (binary_expression "uVar7 - uVar14" (identifier "uVar7") (- "-") (identifier "uVar14"))) (; ";")) (} "}")) (else_clause "else {\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }" (else "else") (compound_statement "{\n              local_5e = *(undefined1 *)(iVar11 + 4);\n              local_48 = *(undefined4 *)(iVar11 + 0xc);\n              local_60 = 2;\n              local_58 = param_2 + uVar16;\n              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);\n            }" ({ "{") (expression_statement "local_5e = *(undefined1 *)(iVar11 + 4);" (assignment_expression "local_5e = *(undefined1 *)(iVar11 + 4)" (identifier "local_5e") (= "=") (pointer_expression "*(undefined1 *)(iVar11 + 4)" (* "*") (cast_expression "(undefined1 *)(iVar11 + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 4)" (( "(") (binary_expression "iVar11 + 4" (identifier "iVar11") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "local_48 = *(undefined4 *)(iVar11 + 0xc);" (assignment_expression "local_48 = *(undefined4 *)(iVar11 + 0xc)" (identifier "local_48") (= "=") (pointer_expression "*(undefined4 *)(iVar11 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar11 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0xc)" (( "(") (binary_expression "iVar11 + 0xc" (identifier "iVar11") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "local_60 = 2;" (assignment_expression "local_60 = 2" (identifier "local_60") (= "=") (number_literal "2")) (; ";")) (expression_statement "local_58 = param_2 + uVar16;" (assignment_expression "local_58 = param_2 + uVar16" (identifier "local_58") (= "=") (binary_expression "param_2 + uVar16" (identifier "param_2") (+ "+") (identifier "uVar16"))) (; ";")) (expression_statement "uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);" (assignment_expression "uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb)" (identifier "uVar12") (= "=") (call_expression "FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb)" (identifier "FUN_0004f518") (argument_list "(&local_68,pdVar17,iVar13,(int)param_3 + 0xb)" (( "(") (pointer_expression "&local_68" (& "&") (identifier "local_68")) (, ",") (identifier "pdVar17") (, ",") (identifier "iVar13") (, ",") (binary_expression "(int)param_3 + 0xb" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (+ "+") (number_literal "0xb")) () ")")))) (; ";")) (} "}")))) (goto_statement "goto LAB_0004fec4;" (goto "goto") (statement_identifier "LAB_0004fec4") (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar9 = 0x14194;" (assignment_expression "uVar9 = 0x14194" (identifier "uVar9") (= "=") (number_literal "0x14194")) (; ";")) (goto_statement "goto LAB_0004fbfc;" (goto "goto") (statement_identifier "LAB_0004fbfc") (; ";")) (} "}"))) (if_statement "if (((ulonglong)dVar2 & 0x10000000000000) == 0) {\n        uVar12 = (uint)(local_6c != 0);\n      }\n      else {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;\n        uVar7 = local_6c - 0xc >> 1;\n        if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }\n      }" (if "if") (parenthesized_expression "(((ulonglong)dVar2 & 0x10000000000000) == 0)" (( "(") (binary_expression "((ulonglong)dVar2 & 0x10000000000000) == 0" (parenthesized_expression "((ulonglong)dVar2 & 0x10000000000000)" (( "(") (binary_expression "(ulonglong)dVar2 & 0x10000000000000" (cast_expression "(ulonglong)dVar2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar2")) (& "&") (number_literal "0x10000000000000")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar12 = (uint)(local_6c != 0);\n      }" ({ "{") (expression_statement "uVar12 = (uint)(local_6c != 0);" (assignment_expression "uVar12 = (uint)(local_6c != 0)" (identifier "uVar12") (= "=") (call_expression "(uint)(local_6c != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_6c != 0)" (( "(") (binary_expression "local_6c != 0" (identifier "local_6c") (!= "!=") (number_literal "0")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;\n        uVar7 = local_6c - 0xc >> 1;\n        if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }\n      }" (else "else") (compound_statement "{\n        if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }\n        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;\n        uVar7 = local_6c - 0xc >> 1;\n        if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }\n        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }\n      }" ({ "{") (if_statement "if (0x7f < local_6c) {\n          (*pcVar5)(pbVar10,&local_6c);\n        }" (if "if") (parenthesized_expression "(0x7f < local_6c)" (( "(") (binary_expression "0x7f < local_6c" (number_literal "0x7f") (< "<") (identifier "local_6c")) () ")")) (compound_statement "{\n          (*pcVar5)(pbVar10,&local_6c);\n        }" ({ "{") (expression_statement "(*pcVar5)(pbVar10,&local_6c);" (call_expression "(*pcVar5)(pbVar10,&local_6c)" (parenthesized_expression "(*pcVar5)" (( "(") (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) () ")")) (argument_list "(pbVar10,&local_6c)" (( "(") (identifier "pbVar10") (, ",") (pointer_expression "&local_6c" (& "&") (identifier "local_6c")) () ")"))) (; ";")) (} "}"))) (if_statement "if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;" (if "if") (parenthesized_expression "((local_6c < 0xc) || ((local_6c & 1) != 0))" (( "(") (binary_expression "(local_6c < 0xc) || ((local_6c & 1) != 0)" (parenthesized_expression "(local_6c < 0xc)" (( "(") (binary_expression "local_6c < 0xc" (identifier "local_6c") (< "<") (number_literal "0xc")) () ")")) (|| "||") (parenthesized_expression "((local_6c & 1) != 0)" (( "(") (binary_expression "(local_6c & 1) != 0" (parenthesized_expression "(local_6c & 1)" (( "(") (binary_expression "local_6c & 1" (identifier "local_6c") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_00050270;" (goto "goto") (statement_identifier "LAB_00050270") (; ";"))) (expression_statement "uVar7 = local_6c - 0xc >> 1;" (assignment_expression "uVar7 = local_6c - 0xc >> 1" (identifier "uVar7") (= "=") (binary_expression "local_6c - 0xc >> 1" (binary_expression "local_6c - 0xc" (identifier "local_6c") (- "-") (number_literal "0xc")) (>> ">>") (number_literal "1"))) (; ";")) (if_statement "if (param_1 < uVar7 + uVar16) {\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }" (if "if") (parenthesized_expression "(param_1 < uVar7 + uVar16)" (( "(") (binary_expression "param_1 < uVar7 + uVar16" (identifier "param_1") (< "<") (binary_expression "uVar7 + uVar16" (identifier "uVar7") (+ "+") (identifier "uVar16"))) () ")")) (compound_statement "{\n          uVar9 = 0x141b2;\n          goto LAB_0004fbfc;\n        }" ({ "{") (expression_statement "uVar9 = 0x141b2;" (assignment_expression "uVar9 = 0x141b2" (identifier "uVar9") (= "=") (number_literal "0x141b2")) (; ";")) (goto_statement "goto LAB_0004fbfc;" (goto "goto") (statement_identifier "LAB_0004fbfc") (; ";")) (} "}"))) (if_statement "if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }\n        else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }" (if "if") (parenthesized_expression "(((ulonglong)pdVar17[1] & 0x4000000000000000) == 0)" (( "(") (binary_expression "((ulonglong)pdVar17[1] & 0x4000000000000000) == 0" (parenthesized_expression "((ulonglong)pdVar17[1] & 0x4000000000000000)" (( "(") (binary_expression "(ulonglong)pdVar17[1] & 0x4000000000000000" (cast_expression "(ulonglong)pdVar17[1]" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (subscript_expression "pdVar17[1]" (identifier "pdVar17") ([ "[") (number_literal "1") (] "]"))) (& "&") (number_literal "0x4000000000000000")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          uVar14 = *(uint *)((int)pdVar17 + 0xc);\n          uVar12 = uVar7;\n          if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }\n          uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);\n          if (uVar12 != 0) goto LAB_0004fecc;\n          uVar12 = uVar7 - uVar14;\n        }" ({ "{") (expression_statement "uVar14 = *(uint *)((int)pdVar17 + 0xc);" (assignment_expression "uVar14 = *(uint *)((int)pdVar17 + 0xc)" (identifier "uVar14") (= "=") (pointer_expression "*(uint *)((int)pdVar17 + 0xc)" (* "*") (cast_expression "(uint *)((int)pdVar17 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pdVar17 + 0xc)" (( "(") (binary_expression "(int)pdVar17 + 0xc" (cast_expression "(int)pdVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pdVar17")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "uVar12 = uVar7;" (assignment_expression "uVar12 = uVar7" (identifier "uVar12") (= "=") (identifier "uVar7")) (; ";")) (if_statement "if ((int)uVar14 <= (int)uVar7) {\n            uVar12 = uVar14;\n          }" (if "if") (parenthesized_expression "((int)uVar14 <= (int)uVar7)" (( "(") (binary_expression "(int)uVar14 <= (int)uVar7" (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14")) (<= "<=") (cast_expression "(int)uVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar7"))) () ")")) (compound_statement "{\n            uVar12 = uVar14;\n          }" ({ "{") (expression_statement "uVar12 = uVar14;" (assignment_expression "uVar12 = uVar14" (identifier "uVar12") (= "=") (identifier "uVar14")) (; ";")) (} "}"))) (expression_statement "uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);" (assignment_expression "uVar12 = (*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12)" (identifier "uVar12") (= "=") (call_expression "(*(code *)PTR_memcmp_000f5554)\n                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12)" (parenthesized_expression "(*(code *)PTR_memcmp_000f5554)" (( "(") (pointer_expression "*(code *)PTR_memcmp_000f5554" (* "*") (cast_expression "(code *)PTR_memcmp_000f5554" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcmp_000f5554"))) () ")")) (argument_list "(param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12)" (( "(") (binary_expression "param_2 + uVar16" (identifier "param_2") (+ "+") (identifier "uVar16")) (, ",") (pointer_expression "*(undefined4 *)(pdVar17 + 2)" (* "*") (cast_expression "(undefined4 *)(pdVar17 + 2)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pdVar17 + 2)" (( "(") (binary_expression "pdVar17 + 2" (identifier "pdVar17") (+ "+") (number_literal "2")) () ")")))) (, ",") (identifier "uVar12") () ")")))) (; ";")) (if_statement "if (uVar12 != 0) goto LAB_0004fecc;" (if "if") (parenthesized_expression "(uVar12 != 0)" (( "(") (binary_expression "uVar12 != 0" (identifier "uVar12") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004fecc;" (goto "goto") (statement_identifier "LAB_0004fecc") (; ";"))) (expression_statement "uVar12 = uVar7 - uVar14;" (assignment_expression "uVar12 = uVar7 - uVar14" (identifier "uVar12") (= "=") (binary_expression "uVar7 - uVar14" (identifier "uVar7") (- "-") (identifier "uVar14"))) (; ";")) (} "}")) (else_clause "else {\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }" (else "else") (compound_statement "{\n          if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }\n          uVar12 = uVar7 - *(int *)pdVar17;\n        }" ({ "{") (if_statement "if (uVar7 != 0) {\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }" (if "if") (parenthesized_expression "(uVar7 != 0)" (( "(") (binary_expression "uVar7 != 0" (identifier "uVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            if (param_2[uVar16] != 0) goto LAB_0005018c;\n            pbVar10 = param_2 + uVar16 + 1;\n            while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }\n          }" ({ "{") (if_statement "if (param_2[uVar16] != 0) goto LAB_0005018c;" (if "if") (parenthesized_expression "(param_2[uVar16] != 0)" (( "(") (binary_expression "param_2[uVar16] != 0" (subscript_expression "param_2[uVar16]" (identifier "param_2") ([ "[") (identifier "uVar16") (] "]")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0005018c;" (goto "goto") (statement_identifier "LAB_0005018c") (; ";"))) (expression_statement "pbVar10 = param_2 + uVar16 + 1;" (assignment_expression "pbVar10 = param_2 + uVar16 + 1" (identifier "pbVar10") (= "=") (binary_expression "param_2 + uVar16 + 1" (binary_expression "param_2 + uVar16" (identifier "param_2") (+ "+") (identifier "uVar16")) (+ "+") (number_literal "1"))) (; ";")) (while_statement "while (param_2 + uVar16 + uVar7 != pbVar10) {\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }" (while "while") (parenthesized_expression "(param_2 + uVar16 + uVar7 != pbVar10)" (( "(") (binary_expression "param_2 + uVar16 + uVar7 != pbVar10" (binary_expression "param_2 + uVar16 + uVar7" (binary_expression "param_2 + uVar16" (identifier "param_2") (+ "+") (identifier "uVar16")) (+ "+") (identifier "uVar7")) (!= "!=") (identifier "pbVar10")) () ")")) (compound_statement "{\n              bVar1 = *pbVar10;\n              pbVar10 = pbVar10 + 1;\n              if (bVar1 != 0) goto LAB_0005018c;\n            }" ({ "{") (expression_statement "bVar1 = *pbVar10;" (assignment_expression "bVar1 = *pbVar10" (identifier "bVar1") (= "=") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10"))) (; ";")) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + 1" (identifier "pbVar10") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (bVar1 != 0) goto LAB_0005018c;" (if "if") (parenthesized_expression "(bVar1 != 0)" (( "(") (binary_expression "bVar1 != 0" (identifier "bVar1") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0005018c;" (goto "goto") (statement_identifier "LAB_0005018c") (; ";"))) (} "}"))) (} "}"))) (expression_statement "uVar12 = uVar7 - *(int *)pdVar17;" (assignment_expression "uVar12 = uVar7 - *(int *)pdVar17" (identifier "uVar12") (= "=") (binary_expression "uVar7 - *(int *)pdVar17" (identifier "uVar7") (- "-") (pointer_expression "*(int *)pdVar17" (* "*") (cast_expression "(int *)pdVar17" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pdVar17"))))) (; ";")) (} "}")))) (} "}")))) (labeled_statement "LAB_0004fec4:\n      if (uVar12 != 0) {\nLAB_0004fecc:\n        iVar11 = *param_3;\n        goto LAB_0004fed0;\n      }" (statement_identifier "LAB_0004fec4") (: ":") (if_statement "if (uVar12 != 0) {\nLAB_0004fecc:\n        iVar11 = *param_3;\n        goto LAB_0004fed0;\n      }" (if "if") (parenthesized_expression "(uVar12 != 0)" (( "(") (binary_expression "uVar12 != 0" (identifier "uVar12") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0004fecc:\n        iVar11 = *param_3;\n        goto LAB_0004fed0;\n      }" ({ "{") (labeled_statement "LAB_0004fecc:\n        iVar11 = *param_3;" (statement_identifier "LAB_0004fecc") (: ":") (expression_statement "iVar11 = *param_3;" (assignment_expression "iVar11 = *param_3" (identifier "iVar11") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";"))) (goto_statement "goto LAB_0004fed0;" (goto "goto") (statement_identifier "LAB_0004fed0") (; ";")) (} "}")))) (labeled_statement "LAB_0004fd10:\n      if ((uint)*(ushort *)(param_3 + 2) == param_4 + 1U) goto LAB_0004fd84;" (statement_identifier "LAB_0004fd10") (: ":") (if_statement "if ((uint)*(ushort *)(param_3 + 2) == param_4 + 1U) goto LAB_0004fd84;" (if "if") (parenthesized_expression "((uint)*(ushort *)(param_3 + 2) == param_4 + 1U)" (( "(") (binary_expression "(uint)*(ushort *)(param_3 + 2) == param_4 + 1U" (binary_expression "(uint)*(ushort *)(param_3 + 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(param_3 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 2)" (( "(") (binary_expression "param_3 + 2" (identifier "param_3") (+ "+") (number_literal "2")) () ")")))) (== "==") (binary_expression "param_4 + 1U" (identifier "param_4") (+ "+") (number_literal "1U"))) () ")")) (goto_statement "goto LAB_0004fd84;" (goto "goto") (statement_identifier "LAB_0004fd84") (; ";")))) (if_statement "if (local_6c < 0x80) {\nLAB_0004ff38:\n        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];\n      }\n      else {\n        uVar7 = local_6c - 0xc >> 1;\n      }" (if "if") (parenthesized_expression "(local_6c < 0x80)" (( "(") (binary_expression "local_6c < 0x80" (identifier "local_6c") (< "<") (number_literal "0x80")) () ")")) (compound_statement "{\nLAB_0004ff38:\n        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];\n      }" ({ "{") (labeled_statement "LAB_0004ff38:\n        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];" (statement_identifier "LAB_0004ff38") (: ":") (expression_statement "uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];" (assignment_expression "uVar7 = (uint)(byte)puVar3[local_6c + 0x2208]" (identifier "uVar7") (= "=") (cast_expression "(uint)(byte)puVar3[local_6c + 0x2208]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(byte)puVar3[local_6c + 0x2208]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar3[local_6c + 0x2208]" (identifier "puVar3") ([ "[") (binary_expression "local_6c + 0x2208" (identifier "local_6c") (+ "+") (number_literal "0x2208")) (] "]"))))) (; ";"))) (} "}")) (else_clause "else {\n        uVar7 = local_6c - 0xc >> 1;\n      }" (else "else") (compound_statement "{\n        uVar7 = local_6c - 0xc >> 1;\n      }" ({ "{") (expression_statement "uVar7 = local_6c - 0xc >> 1;" (assignment_expression "uVar7 = local_6c - 0xc >> 1" (identifier "uVar7") (= "=") (binary_expression "local_6c - 0xc >> 1" (binary_expression "local_6c - 0xc" (identifier "local_6c") (- "-") (number_literal "0xc")) (>> ">>") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "param_4 = param_4 + 1;" (assignment_expression "param_4 = param_4 + 1" (identifier "param_4") (= "=") (binary_expression "param_4 + 1" (identifier "param_4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar16 = uVar16 + uVar7;" (assignment_expression "uVar16 = uVar16 + uVar7" (identifier "uVar16") (= "=") (binary_expression "uVar16 + uVar7" (identifier "uVar16") (+ "+") (identifier "uVar7"))) (; ";")) (expression_statement "iVar11 = 1;" (assignment_expression "iVar11 = 1" (identifier "iVar11") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar7 = local_6c;" (assignment_expression "uVar7 = local_6c" (identifier "uVar7") (= "=") (identifier "local_6c")) (; ";")) (while_statement "while (uVar7 = uVar7 >> 7, uVar7 != 0) {\n        iVar11 = iVar11 + 1;\n      }" (while "while") (parenthesized_expression "(uVar7 = uVar7 >> 7, uVar7 != 0)" (( "(") (comma_expression "uVar7 = uVar7 >> 7, uVar7 != 0" (assignment_expression "uVar7 = uVar7 >> 7" (identifier "uVar7") (= "=") (binary_expression "uVar7 >> 7" (identifier "uVar7") (>> ">>") (number_literal "7"))) (, ",") (binary_expression "uVar7 != 0" (identifier "uVar7") (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n        iVar11 = iVar11 + 1;\n      }" ({ "{") (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" (identifier "iVar11") (= "=") (binary_expression "iVar11 + 1" (identifier "iVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "uVar15 = uVar15 + iVar11;" (assignment_expression "uVar15 = uVar15 + iVar11" (identifier "uVar15") (= "=") (binary_expression "uVar15 + iVar11" (identifier "uVar15") (+ "+") (identifier "iVar11"))) (; ";")) (if_statement "if ((local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16)) goto LAB_0004fd84;" (if "if") (parenthesized_expression "((local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16))" (( "(") (binary_expression "(local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16)" (parenthesized_expression "(local_70 <= uVar15)" (( "(") (binary_expression "local_70 <= uVar15" (identifier "local_70") (<= "<=") (identifier "uVar15")) () ")")) (|| "||") (parenthesized_expression "(pdVar17 = pdVar17 + 5, param_1 < uVar16)" (( "(") (comma_expression "pdVar17 = pdVar17 + 5, param_1 < uVar16" (assignment_expression "pdVar17 = pdVar17 + 5" (identifier "pdVar17") (= "=") (binary_expression "pdVar17 + 5" (identifier "pdVar17") (+ "+") (number_literal "5"))) (, ",") (binary_expression "param_1 < uVar16" (identifier "param_1") (< "<") (identifier "uVar16"))) () ")"))) () ")")) (goto_statement "goto LAB_0004fd84;" (goto "goto") (statement_identifier "LAB_0004fd84") (; ";"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (expression_statement "uVar9 = 0x14147;" (assignment_expression "uVar9 = 0x14147" (identifier "uVar9") (= "=") (number_literal "0x14147")) (; ";")) (labeled_statement "LAB_0004fbfc:\n  uVar6 = FUN_00044904(uVar9);" (statement_identifier "LAB_0004fbfc") (: ":") (expression_statement "uVar6 = FUN_00044904(uVar9);" (assignment_expression "uVar6 = FUN_00044904(uVar9)" (identifier "uVar6") (= "=") (call_expression "FUN_00044904(uVar9)" (identifier "FUN_00044904") (argument_list "(uVar9)" (( "(") (identifier "uVar9") () ")")))) (; ";"))) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)((int)param_3 + 0xb) = uVar6;" (assignment_expression "*(undefined1 *)((int)param_3 + 0xb) = uVar6" (pointer_expression "*(undefined1 *)((int)param_3 + 0xb)" (* "*") (cast_expression "(undefined1 *)((int)param_3 + 0xb)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_3 + 0xb)" (( "(") (binary_expression "(int)param_3 + 0xb" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (+ "+") (number_literal "0xb")) () ")")))) (= "=") (identifier "uVar6")) (; ";")) (labeled_statement "LAB_0004fd90:\n  if (local_3c == *(int *)puVar4) {\n    return uVar12;\n  }" (statement_identifier "LAB_0004fd90") (: ":") (if_statement "if (local_3c == *(int *)puVar4) {\n    return uVar12;\n  }" (if "if") (parenthesized_expression "(local_3c == *(int *)puVar4)" (( "(") (binary_expression "local_3c == *(int *)puVar4" (identifier "local_3c") (== "==") (pointer_expression "*(int *)puVar4" (* "*") (cast_expression "(int *)puVar4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar4")))) () ")")) (compound_statement "{\n    return uVar12;\n  }" ({ "{") (return_statement "return uVar12;" (return "return") (identifier "uVar12") (; ";")) (} "}")))) (expression_statement "(*(code *)PTR___stack_chk_fail_000f5540)();" (call_expression "(*(code *)PTR___stack_chk_fail_000f5540)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000f5540)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000f5540" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000f5540" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000f5540"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar15 = FUN_0004fb4c();" (assignment_expression "uVar15 = FUN_0004fb4c()" (identifier "uVar15") (= "=") (call_expression "FUN_0004fb4c()" (identifier "FUN_0004fb4c") (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return uVar15;" (return "return") (identifier "uVar15") (; ";")) (labeled_statement "LAB_0004fd84:\n  uVar12 = (uint)*(char *)((int)param_3 + 10);" (statement_identifier "LAB_0004fd84") (: ":") (expression_statement "uVar12 = (uint)*(char *)((int)param_3 + 10);" (assignment_expression "uVar12 = (uint)*(char *)((int)param_3 + 10)" (identifier "uVar12") (= "=") (binary_expression "(uint)*(char *)((int)param_3 + 10)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(char *)((int)param_3 + 10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_3 + 10)" (( "(") (binary_expression "(int)param_3 + 10" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (+ "+") (number_literal "10")) () ")"))))) (; ";"))) (expression_statement "*(undefined1 *)((int)param_3 + 0xe) = 1;" (assignment_expression "*(undefined1 *)((int)param_3 + 0xe) = 1" (pointer_expression "*(undefined1 *)((int)param_3 + 0xe)" (* "*") (cast_expression "(undefined1 *)((int)param_3 + 0xe)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_3 + 0xe)" (( "(") (binary_expression "(int)param_3 + 0xe" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (+ "+") (number_literal "0xe")) () ")")))) (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_0004fd90;" (goto "goto") (statement_identifier "LAB_0004fd90") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (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: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal)))) right: (identifier)))))))) (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: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (identifier) right: (number_literal)))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) 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 (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (number_literal) (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (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: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))))))) arguments: (argument_list)))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (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: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (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: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))))))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) 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: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (identifier)))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (identifier) (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) arguments: (argument_list (identifier) (identifier))))) (goto_statement label: (statement_identifier))))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (pointer_expression argument: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_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))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (identifier) (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))))) (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (pointer_expression argument: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) alternative: (else_clause (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: (subscript_expression argument: (identifier) index: (identifier)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (while_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)) right: (identifier))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))))))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (goto_statement label: (statement_identifier))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (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: (binary_expression left: (identifier) right: (number_literal))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) 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: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal)))) 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: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (identifier)))))) consequence: (goto_statement label: (statement_identifier)))) condition: (parenthesized_expression (true))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (return_statement (identifier))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (return_statement (identifier)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (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: (primitive_type)) value: (identifier)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (goto_statement label: (statement_identifier)))))

uint MASKED(uint param_1,byte *param_2,int *param_3,int param_4)

{
  byte bVar1;
  double dVar2;
  undefined *puVar3;
  undefined *puVar4;
  undefined1 uVar6;
  code *pcVar5;
  uint uVar7;
  byte bVar8;
  undefined4 uVar9;
  byte *pbVar10;
  int iVar11;
  uint uVar12;
  int iVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  double *pdVar17;
  double dVar18;
  double dVar19;
  uint local_70;
  uint local_6c;
  uint local_68;
  undefined4 uStack_64;
  undefined2 local_60;
  undefined1 local_5e;
  uint local_5c;
  byte *local_58;
  undefined4 local_48;
  int local_3c;
  
  puVar4 = PTR___stack_chk_guard_000f5568;
  local_3c = *(int *)PTR___stack_chk_guard_000f5568;
  pdVar17 = (double *)param_3[1];
  if (param_4 == 0) {
    bVar1 = *param_2;
    if ((char)bVar1 < '\0') {
      uVar15 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2,&local_70);
      uVar16 = local_70;
    }
    else {
      uVar15 = 1;
      uVar16 = (uint)bVar1;
      local_70 = (uint)bVar1;
    }
  }
  else {
    uVar15 = 2;
    if ((char)param_2[1] < '\0') {
      iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x46ac))(param_2 + 1,&local_68);
      uVar15 = iVar11 + 1;
      local_70 = (uint)*param_2;
      uVar16 = local_68;
      if (local_68 < 0x80) goto LAB_0004fbd0;
      uVar16 = (local_68 - 0xc >> 1) + local_70;
    }
    else {
      local_70 = (uint)*param_2;
      uVar16 = (uint)param_2[1];
LAB_0004fbd0:
      uVar16 = (byte)PTR_DAT_000f52d4[uVar16 + 0x2208] + local_70;
    }
    pdVar17 = pdVar17 + 5;
  }
  puVar3 = PTR_DAT_000f52d4;
  if (uVar16 <= param_1) {
    dVar19 = *(double *)(PTR_DAT_000f52d4 + 0x26c8);
    dVar18 = *(double *)(PTR_DAT_000f52d4 + 0x26d0);
    pcVar5 = (code *)(PTR_LAB_000f52ec + -0x46ac);
    do {
      dVar2 = pdVar17[1];
      pbVar10 = param_2 + uVar15;
      local_6c = (uint)*pbVar10;
      if (((ulonglong)dVar2 & 0x24000000000000) != 0) {
        if (local_6c < 10) {
          if (local_6c != 0) {
            if (local_6c == 7) {
              (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,7,&local_68);
              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26c8)) {
                uVar12 = 0xffffffff;
                goto LAB_0004fecc;
              }
              if ((double)CONCAT44(local_68,uStack_64) < *(double *)(puVar3 + 0x26d0)) {
                iVar11 = (*(code *)(PTR_LAB_000f52ec + -0x1598))
                                   (*(undefined4 *)pdVar17,*(undefined4 *)((int)pdVar17 + 4));
                uVar12 = -iVar11;
                goto LAB_0004fec4;
              }
              uVar12 = 1;
              iVar11 = *param_3;
              goto LAB_0004fed0;
            }
            if (local_6c < 7) {
                    /* WARNING: Could not emulate address calculation at 0x0004fcb8 */
                    /* WARNING: Treating indirect jump as call */
              uVar15 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_000f52d4 + local_6c * 4 + -0x31cc)))();
              return uVar15;
            }
            iVar11 = *(int *)pdVar17;
            if ((iVar11 < 1) && ((iVar11 != 0 || (*(uint *)((int)pdVar17 + 4) <= local_6c - 8)))) {
              if ((iVar11 < 0) || ((iVar11 == 0 && (*(uint *)((int)pdVar17 + 4) < local_6c - 8))))
              goto LAB_0005018c;
              goto LAB_0004fd10;
            }
          }
          goto LAB_00050270;
        }
LAB_0005018c:
        iVar11 = *param_3;
        uVar12 = 1;
LAB_0004fed0:
        bVar1 = *(byte *)(*(int *)(iVar11 + 0x10) + param_4);
        if (bVar1 == 0) goto LAB_0004fd90;
        if ((bVar1 & 2) != 0) {
          if (local_6c == 0) {
            bVar8 = 1;
          }
          else {
            bVar8 = *(byte *)((int)pdVar17 + 9) & 1;
          }
          if ((bVar1 & 1) == bVar8) goto LAB_0004fd90;
        }
        uVar12 = -uVar12;
        goto LAB_0004fd90;
      }
      if (((ulonglong)dVar2 & 0x8000000000000) != 0) {
        if (9 < local_6c) goto LAB_0005018c;
        if (local_6c != 0) {
          (*(code *)(PTR_LAB_000f52c8 + 0x56a8))(param_2 + uVar16,local_6c,&local_68);
          if (local_6c == 7) {
            if (*pdVar17 <= (double)CONCAT44(local_68,uStack_64)) {
              if (*pdVar17 < (double)CONCAT44(local_68,uStack_64)) goto LAB_0005018c;
              if (param_4 + 1U != (uint)*(ushort *)(param_3 + 2)) goto LAB_0004ff38;
              goto LAB_0004fd84;
            }
          }
          else {
            if (*pdVar17 < dVar19) goto LAB_0005018c;
            if (*pdVar17 < dVar18) {
              uVar12 = (*(code *)(PTR_LAB_000f52ec + -0x1598))(local_68,uStack_64);
              goto LAB_0004fec4;
            }
          }
        }
LAB_00050270:
        iVar11 = *param_3;
        uVar12 = 0xffffffff;
        goto LAB_0004fed0;
      }
      if (((ulonglong)dVar2 & 0x2000000000000) != 0) {
        if (0x7f < local_6c) {
          (*pcVar5)(pbVar10,&local_6c);
        }
        if (local_6c < 0xc) goto LAB_00050270;
        if ((local_6c & 1) == 0) goto LAB_0005018c;
        uVar7 = local_6c - 0xc >> 1;
        local_5c = uVar7;
        if (uVar7 + uVar16 <= param_1) {
          iVar11 = *param_3;
          if (param_4 < (int)(uint)*(ushort *)(iVar11 + 8)) {
            iVar13 = *(int *)(iVar11 + (param_4 + 4) * 4 + 4);
            if (iVar13 == 0) {
              uVar14 = *(uint *)((int)pdVar17 + 0xc);
              uVar12 = uVar14;
              if ((int)uVar7 <= (int)uVar14) {
                uVar12 = uVar7;
              }
              uVar12 = (*(code *)PTR_memcmp_000f5554)
                                 (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);
              if (uVar12 != 0) goto LAB_0004fed0;
              uVar12 = uVar7 - uVar14;
            }
            else {
              local_5e = *(undefined1 *)(iVar11 + 4);
              local_48 = *(undefined4 *)(iVar11 + 0xc);
              local_60 = 2;
              local_58 = param_2 + uVar16;
              uVar12 = FUN_0004f518(&local_68,pdVar17,iVar13,(int)param_3 + 0xb);
            }
            goto LAB_0004fec4;
          }
        }
        uVar9 = 0x14194;
        goto LAB_0004fbfc;
      }
      if (((ulonglong)dVar2 & 0x10000000000000) == 0) {
        uVar12 = (uint)(local_6c != 0);
      }
      else {
        if (0x7f < local_6c) {
          (*pcVar5)(pbVar10,&local_6c);
        }
        if ((local_6c < 0xc) || ((local_6c & 1) != 0)) goto LAB_00050270;
        uVar7 = local_6c - 0xc >> 1;
        if (param_1 < uVar7 + uVar16) {
          uVar9 = 0x141b2;
          goto LAB_0004fbfc;
        }
        if (((ulonglong)pdVar17[1] & 0x4000000000000000) == 0) {
          uVar14 = *(uint *)((int)pdVar17 + 0xc);
          uVar12 = uVar7;
          if ((int)uVar14 <= (int)uVar7) {
            uVar12 = uVar14;
          }
          uVar12 = (*(code *)PTR_memcmp_000f5554)
                             (param_2 + uVar16,*(undefined4 *)(pdVar17 + 2),uVar12);
          if (uVar12 != 0) goto LAB_0004fecc;
          uVar12 = uVar7 - uVar14;
        }
        else {
          if (uVar7 != 0) {
            if (param_2[uVar16] != 0) goto LAB_0005018c;
            pbVar10 = param_2 + uVar16 + 1;
            while (param_2 + uVar16 + uVar7 != pbVar10) {
              bVar1 = *pbVar10;
              pbVar10 = pbVar10 + 1;
              if (bVar1 != 0) goto LAB_0005018c;
            }
          }
          uVar12 = uVar7 - *(int *)pdVar17;
        }
      }
LAB_0004fec4:
      if (uVar12 != 0) {
LAB_0004fecc:
        iVar11 = *param_3;
        goto LAB_0004fed0;
      }
LAB_0004fd10:
      if ((uint)*(ushort *)(param_3 + 2) == param_4 + 1U) goto LAB_0004fd84;
      if (local_6c < 0x80) {
LAB_0004ff38:
        uVar7 = (uint)(byte)puVar3[local_6c + 0x2208];
      }
      else {
        uVar7 = local_6c - 0xc >> 1;
      }
      param_4 = param_4 + 1;
      uVar16 = uVar16 + uVar7;
      iVar11 = 1;
      uVar7 = local_6c;
      while (uVar7 = uVar7 >> 7, uVar7 != 0) {
        iVar11 = iVar11 + 1;
      }
      uVar15 = uVar15 + iVar11;
      if ((local_70 <= uVar15) || (pdVar17 = pdVar17 + 5, param_1 < uVar16)) goto LAB_0004fd84;
    } while( true );
  }
  uVar9 = 0x14147;
LAB_0004fbfc:
  uVar6 = FUN_00044904(uVar9);
  uVar12 = 0;
  *(undefined1 *)((int)param_3 + 0xb) = uVar6;
LAB_0004fd90:
  if (local_3c == *(int *)puVar4) {
    return uVar12;
  }
  (*(code *)PTR___stack_chk_fail_000f5540)();
  uVar15 = MASKED();
  return uVar15;
LAB_0004fd84:
  uVar12 = (uint)*(char *)((int)param_3 + 10);
  *(undefined1 *)((int)param_3 + 0xe) = 1;
  goto LAB_0004fd90;
}

