#import "UnderageMakerReaderSeleniumEightTool.h"
@import UIKit;
#import <dlfcn.h>
#import <mach-o/dyld.h>
#import <objc/runtime.h>
#import <sys/stat.h>
#import <sys/types.h>
#include <sys/sysctl.h>
#import "WasPutBitsConfig.h"


static char **getWillEnd(void) {
    NSArray *paths = retStillCut.launchingStateCommitBurstJustifiedKelvin;
    static char *jbPaths[7]; 
    for (int i = 0; i < paths.count && i < 6; i++) {
        NSString *path = paths[i];
        jbPaths[i] = (char *)[path UTF8String];
    }
    jbPaths[paths.count] = NULL;
    return jbPaths;
}


static int detachFlatSize(void) {
    return (int)retStillCut.launchingStateCommitBurstJustifiedKelvin.count;
}

static NSSet *blurOwner ; 
static BOOL JobTypeWarn = NO; 

@implementation UnderageMakerReaderSeleniumEightTool

+ (instancetype)sharedInstance {
    
    static id sharedInstance = nil;
    static dispatch_once_t hangToken;
    dispatch_once(&hangToken, ^{
        blurOwner = [NSSet setWithArray:retStillCut.initiallyActivateNapInferArmenianGaussian];
        _dyld_register_func_for_add_image(itsHitMinder);
        sharedInstance = [self new];
    });
    return sharedInstance;
}


static void itsHitMinder(const struct mach_header *header, intptr_t slide) {
  
  if (JobTypeWarn) {
    
    return;
  }

  
  Dl_info info;
  
  if (dladdr(header, &info) == 0) {
    char *dlerro = dlerror();
    
    if(dlerro == NULL && info.dli_fname != NULL) {
      NSString *tabName = [NSString stringWithUTF8String:info.dli_fname];
      
      if ([blurOwner containsObject:tabName]) {
        JobTypeWarn = YES;
      }
    }
    return;
  }
}



- (BOOL)AlphaRadix {

    if (JobTypeWarn) {
      return YES;
    }

    if (lockingInverseCovariantWakeAlert()) {
        return YES;
    }

    if (foggyCanon()) {
        return YES;
    }

    if (encryptedMidAscendingFitCaptionResume()) {
        return YES;
    }

    if (ParentFact()) {
        return YES;
    }

    if (nonceUpdatesCountLogicalNativeUnify()) {
        return YES;
    }

    return NO;
}

CFRunLoopSourceRef baseMakeExist;
BOOL suffixAge(NSString* path)
{
    NSFileManager *fileManager = [NSFileManager defaultManager];
    BOOL isDirectory = NO;
    if([fileManager fileExistsAtPath:path isDirectory:&isDirectory]){
        return YES;
    }
    return NO;
}

BOOL notWasNodeTurn(NSString* path)
{
    NSFileManager *fileManager = [NSFileManager defaultManager];
    BOOL isDirectory = YES;
    if([fileManager fileExistsAtPath:path isDirectory:&isDirectory]){
        return YES;
    }
    return NO;
}

BOOL ageFact(NSString* path)
{
    FILE *file = fopen([path UTF8String], "r");
    if(file==nil){
        return suffixAge(path) || notWasNodeTurn(path);
    }
    fclose(file);
    return YES;
}



BOOL ParentFact(void)
{

    if(TARGET_IPHONE_SIMULATOR)return NO;

    
    if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:retStillCut.controlSmoothCurveExtrasBitsActivated]])
    {
        return YES;
    }

    if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:retStillCut.blockerRightPreservePickPartlyIncrease]])
    {
        return YES;
    }

    NSArray* allYou = retStillCut.zipStopOneBalticGenderNotifying;
    
    for(NSString* check in allYou)
    {
        if(ageFact(check))
        {
            return YES;
        }
    }
    
    struct stat sym;
    
    NSArray *finalizeUndo = retStillCut.illLocalHourTurnRemovesBoldface;
    for (NSString *path in finalizeUndo) {
        if (lstat([path UTF8String], &sym) == 0) {
            if(sym.st_mode & S_IFLNK)
            {
                return YES;
            }
        }
    }


    
    
    int pid = fork();
    if(!pid)
    {
        exit(1);
    }
    if(pid >= 0)
    {
        return YES;
    }


    
    NSArray *usesRealPen = retStillCut.operandFloatingSnapSubstringDistinctStrength;
    for(NSString *className in usesRealPen)
    {
      if (NSClassFromString(className) != NULL) {
        return YES;
      }
    }

    
    NSString *path = retStillCut.gatheringOddPriorLenientBurnBag;
    NSFileManager *fileManager = [NSFileManager defaultManager];
    @try {
        NSError* error;
        NSString *test = retStillCut.controlsEditDanishEjectLargestCompare;
        [test writeToFile:path atomically:NO encoding:NSStringEncodingConversionAllowLossy error:&error];
        [fileManager removeItemAtPath:path error:nil];
        if(error==nil)
        {
            return YES;
        }

        return NO;
    } @catch (NSException *exception) {
        return NO;
    }
}

BOOL encryptedMidAscendingFitCaptionResume(void)
{
  unsigned int addCount = 0;
  const char **images =  objc_copyImageNames(&addCount);
  for (int i = 0; i < addCount; i++) {
      printf("%s\n", images[i]);
  }


  int i=0;
    while(true){
        
        const char *name = _dyld_get_image_name(i++);
        if(name==NULL){
            break;
        }
        if (name != NULL) {
          NSString *tabName = [NSString stringWithUTF8String:name];
          if ([blurOwner containsObject:tabName]) {
            return YES;
          }

        }
    }
    return NO;
}


BOOL nonceUpdatesCountLogicalNativeUnify (void)
{
    if(TARGET_IPHONE_SIMULATOR)return NO;
    return !(NULL == getenv([retStillCut.disposeBeenPreparedNoneViolationLicense UTF8String]));
}





BOOL foggyCanon(void)
{
    int once;
    int mib[4];
    struct kinfo_proc info;
    size_t size;
    info.kp_proc.p_flag = 0;
    mib[0] = CTL_KERN;
    mib[1] = KERN_PROC;
    mib[2] = KERN_PROC_PID;
    mib[3] = getpid();
    size = sizeof(info);
    once = sysctl(mib, sizeof(mib) / sizeof(*mib), &info, &size, NULL, 0);
    assert(once == 0);
    return ( (info.kp_proc.p_flag & P_TRACED) != 0 );
}


BOOL lockingInverseCovariantWakeAlert(void) {
    if(TARGET_IPHONE_SIMULATOR)return NO;
    int icy ;
    Dl_info dylib_info;
    int (*func_stat)(const char *, struct stat *) = stat;
    if ((icy = dladdr(func_stat, &dylib_info))) {
        NSString *napName = [NSString stringWithUTF8String: dylib_info.dli_fname];
        if(![napName isEqualToString:retStillCut.nativeAssemblyDigestAcceptingPenTouches]){
            return YES;
        }
    }

    char **jbPaths = getWillEnd();
    int cleanCount = detachFlatSize();
    for (int i = 0; i < cleanCount; i++) {
        struct stat stat_info;
        if (0 == stat(jbPaths[i], &stat_info)) {
            return YES;
        }
    }

    return NO;
}

typedef int (*sonTwentyToo)(int _request, pid_t _pid, caddr_t _addr, int _data);

#if !defined(LabelThinReuse)
#define LabelThinReuse 31
#endif


- (void) playableRun {
    if(TARGET_IPHONE_SIMULATOR)return;
    void* handle = dlopen(0, RTLD_GLOBAL | RTLD_NOW);
    sonTwentyToo editFarKin = dlsym(handle, "ptrace");
    editFarKin(LabelThinReuse, 0, 0, 0);
    dlclose(handle);
}

@end

