__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);
}