__int64 __library_initializer() { char *v0; // x0 char *v1; // x0 char *v2; // x0 char *v3; // x0 char *v4; // x0 char *v5; // x0 char *v6; // x0 char *v7; // x0 char *v8; // x0 char *v9; // x0 char *v10; // x0 char *v11; // x0 char *v12; // x0 char *v13; // x0 char *v14; // x0 char *v15; // x0 char *v16; // x0 char *v17; // x0 char *v18; // x0 char *v19; // x0 char *v20; // x0 int v21; // w0 __int64 v22; // x8 char *v23; // x0 char *v24; // x0 char *v25; // x0 char *v26; // x0 char *v27; // x0 char *v28; // x0 char *v29; // x0 char *v30; // x0 char *v31; // x0 char *v32; // x0 const char *v33; // x19 char *v34; // x0 char *v35; // x0 char *v36; // x0 char *v37; // x0 char *v38; // x0 const char *v39; // x20 size_t v40; // x0 size_t v41; // x0 char *v42; // x0 const char *v43; // x20 size_t v44; // x0 size_t v45; // x0 char *v46; // x0 char *v47; // x0 char *v48; // x0 char *v49; // x0 char *v50; // x0 char *v51; // x0 int v52; // w0 char *v53; // x0 int v54; // w0 int v55; // w0 uint64_t v56; // x0 __int64 vars8; // [xsp+68h] [xbp+8h] dylibInitializationStartTime = mach_absolute_time(); v0 = getenv("PERFC_MEASURE_PERFORMANCE"); if ( v0 ) envMeasurePerformance = atoi(v0) == 1; v1 = getenv("PERFC_DONT_SWIZZLE"); if ( v1 ) envDontSwizzleAnything = atoi(v1) == 1; v2 = getenv("PERFC_RPAC_DEBUG"); if ( v2 ) envRPACDebug = atoi(v2) == 1; v3 = getenv("PERFC_SUPPRESS_SYSTEM_REPORTS"); if ( v3 ) envIgnoreCallersFromSlashSystem = atoi(v3) == 1; v4 = getenv("PERFC_RESET_INSERT_LIBRARIES"); if ( v4 ) envRemoveDylibFromDyldInsertLibraries = atoi(v4) == 1; v5 = getenv("PERFC_WAIT_THRESHOLD"); if ( v5 ) envGlobalWaitThreshold = atoi(v5); v6 = getenv("PERFC_MEASUREMENT_MODE"); if ( v6 ) envMeasurementMode = atoi(v6) == 1; v7 = getenv("PERFC_EFFECTIVE_TIMEOUT_THRESHOLD"); if ( v7 ) envTimeoutThreshold = atoi(v7); v8 = getenv("PERFC_HANG_RISK_THRESHOLD"); if ( v8 ) envHangRiskThreshold = atoi(v8); v9 = getenv("PERFC_SEVERE_HANG_RISK_THRESHOLD"); if ( v9 ) envSevereHangRiskThreshold = atoi(v9); v10 = getenv("PERFC_AGGRESSIVE_DETERMINISTIC_FLAGGING"); if ( v10 ) envAggressiveDeterministicFlagging = atoi(v10) == 1; v11 = getenv("PERFC_PRINT_STATS"); if ( v11 ) envPrintStats = atoi(v11) == 1; v12 = getenv("PERFC_DISABLE_TIME_CHECKS"); if ( v12 ) envDisableTimeChecks = atoi(v12) == 1; v13 = getenv("PERFC_DISABLE_AVCAPTURE_CHECKS"); if ( v13 ) envDisableAVCaptureChecks = atoi(v13) == 1; v14 = getenv("PERFC_DISABLE_CONFORMANCE_CHECKS"); if ( v14 ) envDisableConformanceChecks = atoi(v14) == 1; v15 = getenv("PERFC_DISABLE_NSCONDITION_CHECKS"); if ( v15 ) envDisableNSConditionChecks = atoi(v15) == 1; v16 = getenv("PERFC_EXTRA_TIME_INFO"); if ( v16 ) envExtraTimeInfo = atoi(v16) == 1; v17 = getenv("PERFC_ENABLE_IO_ON_MAIN_THREAD"); if ( v17 ) envEnableIOOnMainThread = atoi(v17) == 1; v18 = getenv("PERFC_DISABLE_PRIORITY_INVERSIONS"); if ( v18 ) envDisablePriorityInversions = atoi(v18) == 1; v19 = getenv("PERFC_DISABLE_BACKTRACE"); if ( v19 ) envDisableBacktrace = atoi(v19) == 1; v20 = getenv("PERFC_MAX_ANTIPATTERN_DISTANCE"); if ( v20 ) { v21 = atoi(v20); v22 = (unsigned int)v21; if ( v21 <= 0 ) v22 = envMaxAntipatternDistance; envMaxAntipatternDistance = v22; } v23 = getenv("PERFC_FLAG_CALLERS_FROM_BUILT_BUNDLE_ONLY"); if ( v23 ) envFlagCallersFromBuiltBundleOnly = atoi(v23) == 1; v24 = getenv("PERFC_SUPPRESSION_FILE"); if ( v24 ) parseUserSuppressionFile(v24); v25 = getenv("PERFC_LOG_BACKTRACE_TO_STDERR"); if ( v25 ) { envLogBacktraceToStderr = atoi(v25) == 1; envDisableBacktraceOverride = 0; } v26 = getenv("PERFC_LOG_REPORTS_TO_STDERR"); if ( v26 ) envLogReportsToStderr = atoi(v26) == 1; v27 = getenv("PERFC_LOG_REPORTS_TO_OSLOG"); if ( v27 ) envLogReportsToOsLog = atoi(v27) == 1; v28 = getenv("PERFC_LOG_AGPC_REPORTS_TO_STDERR"); if ( v28 ) envLogAGPCReportsToStderr = atoi(v28) == 1; v29 = getenv("PERFC_ENABLE_PROFILE_MODE"); if ( v29 ) envProfileModeEnabled = atoi(v29) == 1; v30 = getenv("PERFC_ENABLE_AGPC_CHECKS"); if ( v30 ) { envEnableAGPCChecks = atoi(v30) == 1; if ( !getenv("PERFC_ENABLE_DUPLICATE_DETECTION") ) envEnableDuplicateDetection = 1; } v31 = getenv("PERFC_ENABLE_AGPC_DISKWRITES_CHECKS"); if ( v31 ) envEnableAGPCDiskwritesChecks = atoi(v31) == 1; v32 = getenv("PERFC_ENABLE_AGPC_DISKWRITES_LAUNCH_CHECKS"); if ( v32 ) { v33 = v32; envEnableAGPCDiskwritesChecks = atoi(v32) == 1; envEnableAGPCDiskwritesLaunchChecks = atoi(v33) == 1; } v34 = getenv("PERFC_ENABLE_SQLITE_WRITE_STATEMENT_INSPECTION"); if ( v34 ) envEnableSQLiteWriteStmtInspection = atoi(v34) == 1; v35 = getenv("PERFC_ENABLE_SQLITE_DB_STATUS_INSPECTION"); if ( v35 ) envEnableSQLiteDBStatusInspection = atoi(v35) == 1; v36 = getenv("PERFC_ENABLE_SQLITE_IGNORE_INMEMORY_DATABASE_CHECK"); if ( v36 ) envEnableSQLiteIgnoreInMemoryDatabaseCheck = atoi(v36) == 1; v37 = getenv("PERFC_ENABLE_OVERRIDE_ALL_SUPPRESSABLE_ISSUES"); if ( v37 ) envOverrideAllSuppressableIssues = atoi(v37) == 1; v38 = getenv("PERFC_AGPC_SKIP_CLASS_STRING"); if ( v38 ) { v39 = v38; envEnableAGPCClassSkip = 1; v40 = strlen(v38); agpcSuppressionClassString = (__int64)malloc_type_malloc(v40 + 1, 0x100004077774924uLL); v41 = strlen(v39); strncpy((char *)agpcSuppressionClassString, v39, v41 + 1); } v42 = getenv("PERFC_AGPC_SKIP_METHOD_STRING"); if ( v42 ) { v43 = v42; envEnableAGPCMethodSkip = 1; v44 = strlen(v42); agpcSuppressionMethodString = (__int64)malloc_type_malloc(v44, 0x100004077774924uLL); v45 = strlen(v43); strncpy((char *)agpcSuppressionMethodString, v43, v45 + 1); } v46 = getenv("PERFC_ENABLE_EXTENDED_DIAGNOSTIC_FORMAT"); if ( v46 ) envEnableExtendedDiagnosticFormat = atoi(v46) == 1; v47 = getenv("PERFC_ENABLE_DIAGNOSTIC_MESSAGE_BREAKDOWN"); if ( v47 ) envEnableDiagnosticMessageBreakdown = atoi(v47) == 1; v48 = getenv("PERFC_ENABLE_TRAMPOLINE_DEBUG"); if ( v48 ) envRPACTrampolineSwizzleDebug = atoi(v48) == 1; v49 = getenv("PERFC_ENABLE_DUPLICATE_DETECTION"); if ( v49 ) envEnableDuplicateDetection = atoi(v49) == 1; v50 = getenv("PERFC_ENABLE_AGPC_AUDIO_VIDEO_CHECKS"); if ( v50 ) envEnableAGPCAudioVideoChecks = atoi(v50) == 1; v51 = getenv("PERFC_OVERRIDE_STARTUP_THRESHOLD"); if ( v51 ) { v52 = atoi(v51); if ( v52 >= 1 ) envOverrideStartupThresholdValue = (unsigned int)v52; } v53 = getenv("PERFC_OVERRIDE_CLEANUP_THRESHOLD"); if ( v53 ) { v54 = atoi(v53); if ( v54 >= 1 ) envOverrideCleanupThresholdValue = (unsigned int)v54; } if ( envRemoveDylibFromDyldInsertLibraries == 1 ) resetDyldInsertLibraries(); MyOwnMachHeader = dyld_image_header_containing_address(__library_initializer); mach_timebase_info((mach_timebase_info_t)&info); if ( envMeasurementMode == 1 ) fwrite("API,Duration(ns)\n", 0x11u, 1u, __stderrp); v55 = pthread_key_create((pthread_key_t *)&ThreadLocalDataKey, (void (__cdecl *)(void *))&_free); if ( v55 ) fprintf(__stderrp, "libRPAC.dylib: pthread_key_create failed: %d\n", v55); if ( (envDontSwizzleAnything & 1) == 0 ) { initializeSwizzlers(); if ( envEnableAGPCChecks == 1 && (envProfileModeEnabled & 1) == 0 ) initializeTrampolineBasedSwizzling(0); } if ( envMeasurePerformance == 1 ) { v56 = mach_absolute_time(); if ( !dword_2E4D44 ) __library_initializer_cold_1(v56); fprintf( __stderrp, "Startup took %.3llu nano seconds.\n", (v56 - dylibInitializationStartTime) * (unsigned int)info / (unsigned int)dword_2E4D44); } if ( ((vars8 ^ (2 * vars8)) & 0x4000000000000000LL) != 0 ) __break(0xC471u); return atexit_b(&__block_literal_global_0); }