mirror of
https://github.com/Karmaz95/Snake_Apple.git
synced 2026-03-30 14:00:16 +02:00
395 lines
11 KiB
C
395 lines
11 KiB
C
__int64 __fastcall _LSLaunch(
|
|
LSContext *a1,
|
|
__int64 a2,
|
|
void *a3,
|
|
unsigned int a4,
|
|
void *a5,
|
|
__int64 a6,
|
|
__int64 a7,
|
|
__int64 a8,
|
|
__int64 a9,
|
|
void *a10,
|
|
__int64 a11,
|
|
__int64 a12,
|
|
_QWORD *a13,
|
|
__int64 a14)
|
|
{
|
|
// [COLLAPSED LOCAL DECLARATIONS. PRESS NUMPAD "+" TO EXPAND]
|
|
|
|
v78 = a2;
|
|
v21 = objc_retain(a3);
|
|
v22 = objc_retain(a5);
|
|
v23 = objc_retain(a10);
|
|
v77 = 0LL;
|
|
if ( !v22 )
|
|
v22 = objc_retainAutoreleasedReturnValue(+[_LSOpen2Options defaultOptions](&OBJC_CLASS____LSOpen2Options, "defaultOptions"));
|
|
v74 = a6;
|
|
v75 = a7;
|
|
v76 = a8;
|
|
v24 = objc_retain(v21);
|
|
v25 = v24;
|
|
if ( !a1 || !a2 )
|
|
{
|
|
objc_release(v24);
|
|
LABEL_19:
|
|
v37 = _LSLaunchWithRunningboard(a1, v25, a4, v74, v75, v76, a9, v23, a11, a2, a12, v22, &v77, a14);
|
|
goto LABEL_38;
|
|
}
|
|
v26 = _LSBundleGet(a1->db, a2);
|
|
if ( !v26 )
|
|
{
|
|
v38 = objc_retainAutoreleasedReturnValue(_LSOpenLog());
|
|
if ( j__os_log_type_enabled_3(v38, OS_LOG_TYPE_INFO) )
|
|
{
|
|
*v84 = 134349312;
|
|
*&v84[4] = a1;
|
|
*&v84[12] = 1026;
|
|
*&v84[14] = a2;
|
|
v39 = "LAUNCH: Bundle data is NULL so it must be re-registered before attempting launch, %{public}p %{public}d";
|
|
LABEL_24:
|
|
j___os_log_impl_1(&dword_180981000, v38, OS_LOG_TYPE_INFO, v39, v84, 0x12u);
|
|
}
|
|
LABEL_25:
|
|
objc_release(v38);
|
|
objc_release(v25);
|
|
goto LABEL_32;
|
|
}
|
|
if ( !_LSBundleMeetsMinimumVersionRequirement(a1->db, a2, v26) )
|
|
{
|
|
v38 = objc_retainAutoreleasedReturnValue(_LSOpenLog());
|
|
if ( j__os_log_type_enabled_3(v38, OS_LOG_TYPE_INFO) )
|
|
{
|
|
*v84 = 134349312;
|
|
*&v84[4] = a1;
|
|
*&v84[12] = 1026;
|
|
*&v84[14] = a2;
|
|
v39 = "LAUNCH: Bundle needs to be re-registered before attempting launch to meet minimum version requirements, %{pu"
|
|
"blic}p %{public}d";
|
|
goto LABEL_24;
|
|
}
|
|
goto LABEL_25;
|
|
}
|
|
v82 = 0LL;
|
|
v83 = 0.0;
|
|
v27 = objc_msgSend(v25, "getContentModificationDate:error:", &v83, &v82);
|
|
v28 = objc_retain(v82);
|
|
if ( !v27 )
|
|
{
|
|
v40 = objc_retainAutoreleasedReturnValue(_LSOpenLog());
|
|
if ( j__os_log_type_enabled_3(v40, OS_LOG_TYPE_ERROR) )
|
|
{
|
|
v41 = objc_retainAutoreleasedReturnValue(objc_msgSend(v25, "URL"));
|
|
*v84 = 134349827;
|
|
*&v84[4] = a1;
|
|
*&v84[12] = 1026;
|
|
*&v84[14] = a2;
|
|
v85 = 2113;
|
|
v86 = v41;
|
|
v87 = 2114;
|
|
v88[0] = v28;
|
|
j___os_log_impl_1(
|
|
&dword_180981000,
|
|
v40,
|
|
OS_LOG_TYPE_ERROR,
|
|
"LAUNCH: Unable to validate executable mod date inside bundle %{public}p %{public}d %{private}@, error=%{public}@",
|
|
v84,
|
|
0x26u);
|
|
v42 = v41;
|
|
LABEL_30:
|
|
objc_release(v42);
|
|
}
|
|
LABEL_31:
|
|
objc_release(v40);
|
|
objc_release(v28);
|
|
objc_release(v25);
|
|
goto LABEL_32;
|
|
}
|
|
v29 = v83;
|
|
if ( _LSBundleDataGetModTime(v26) != v29 )
|
|
{
|
|
v40 = objc_retainAutoreleasedReturnValue(_LSOpenLog());
|
|
if ( j__os_log_type_enabled_3(v40, OS_LOG_TYPE_INFO) )
|
|
{
|
|
v73 = objc_retainAutoreleasedReturnValue(objc_msgSend(v25, "URL"));
|
|
v43 = v83;
|
|
ModTime = _LSBundleDataGetModTime(v26);
|
|
*v84 = 134350083;
|
|
*&v84[4] = a1;
|
|
*&v84[12] = 1026;
|
|
*&v84[14] = a2;
|
|
v85 = 2113;
|
|
v86 = v73;
|
|
v87 = 1026;
|
|
LODWORD(v88[0]) = v43;
|
|
WORD2(v88[0]) = 1026;
|
|
*(v88 + 6) = ModTime;
|
|
j___os_log_impl_1(
|
|
&dword_180981000,
|
|
v40,
|
|
OS_LOG_TYPE_INFO,
|
|
"LAUNCH: Forcing re-registration of bundle %{public}p %{public}d %{private}@ because the bundle mod date is chang"
|
|
"ed, %{public}d vs %{public}d",
|
|
v84,
|
|
0x28u);
|
|
v42 = v73;
|
|
goto LABEL_30;
|
|
}
|
|
goto LABEL_31;
|
|
}
|
|
objc_release(v28);
|
|
if ( (*(v26 + 158) & 0x80) != 0 )
|
|
{
|
|
objc_release(v25);
|
|
goto LABEL_19;
|
|
}
|
|
v81 = 0LL;
|
|
v30 = objc_retainAutoreleasedReturnValue(objc_msgSend(v25, "pathWithError:", &v81));
|
|
v31 = objc_retain(v81);
|
|
v72 = v30;
|
|
if ( v30 )
|
|
{
|
|
v32 = objc_retainAutoreleasedReturnValue(constructExecutablePathFromBundleData(a1, a2, v26, v30, 0));
|
|
if ( !v32 )
|
|
{
|
|
v36 = 0;
|
|
goto LABEL_64;
|
|
}
|
|
v70 = v32;
|
|
v80 = v31;
|
|
v69 = -[FSNode initWithPath:flags:error:](
|
|
objc_alloc(&OBJC_CLASS___FSNode),
|
|
"initWithPath:flags:error:",
|
|
v32,
|
|
1LL,
|
|
&v80);
|
|
v68 = objc_retain(v80);
|
|
objc_release(v31);
|
|
v33 = v69;
|
|
if ( v69 )
|
|
{
|
|
if ( -[FSNode isExecutableModeFile](v69, "isExecutableModeFile") )
|
|
{
|
|
if ( _LSBundleDataGetExecutableModTime(v26) >= 1 )
|
|
{
|
|
v83 = 0.0;
|
|
v79 = v68;
|
|
v67 = -[FSNode getContentModificationDate:error:](v69, "getContentModificationDate:error:", &v83, &v79);
|
|
v34 = objc_retain(v79);
|
|
objc_release(v68);
|
|
if ( v67 )
|
|
{
|
|
v35 = v83;
|
|
if ( _LSBundleDataGetExecutableModTime(v26) == v35 )
|
|
{
|
|
v36 = 0;
|
|
LABEL_73:
|
|
v59 = v34;
|
|
v33 = v69;
|
|
goto LABEL_63;
|
|
}
|
|
v60 = objc_retainAutoreleasedReturnValue(_LSOpenLog());
|
|
if ( j__os_log_type_enabled_3(v60, OS_LOG_TYPE_INFO) )
|
|
{
|
|
v65 = v83;
|
|
ExecutableModTime = _LSBundleDataGetExecutableModTime(v26);
|
|
*v84 = 134350083;
|
|
*&v84[4] = a1;
|
|
*&v84[12] = 1026;
|
|
*&v84[14] = a2;
|
|
v85 = 2113;
|
|
v86 = v70;
|
|
v87 = 1026;
|
|
LODWORD(v88[0]) = v65;
|
|
WORD2(v88[0]) = 1026;
|
|
*(v88 + 6) = ExecutableModTime;
|
|
v61 = "LAUNCH: Forcing re-registration of bundle %{public}p %{public}d %{private}@ because the executable m"
|
|
"od date is changed, %{public}d vs %{public}d";
|
|
v62 = v60;
|
|
v63 = OS_LOG_TYPE_INFO;
|
|
v64 = 40;
|
|
goto LABEL_71;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
v60 = objc_retainAutoreleasedReturnValue(_LSOpenLog());
|
|
if ( j__os_log_type_enabled_3(v60, OS_LOG_TYPE_ERROR) )
|
|
{
|
|
*v84 = 134349827;
|
|
*&v84[4] = a1;
|
|
*&v84[12] = 1026;
|
|
*&v84[14] = a2;
|
|
v85 = 2113;
|
|
v86 = v70;
|
|
v87 = 2114;
|
|
v88[0] = v34;
|
|
v61 = "LAUNCH: Unable to validate executable mod date inside bundle %{public}p %{public}d %{private}@, error=%{public}@";
|
|
v62 = v60;
|
|
v63 = OS_LOG_TYPE_ERROR;
|
|
v64 = 38;
|
|
LABEL_71:
|
|
j___os_log_impl_1(&dword_180981000, v62, v63, v61, v84, v64);
|
|
}
|
|
}
|
|
objc_release(v60);
|
|
v36 = 1;
|
|
goto LABEL_73;
|
|
}
|
|
v36 = 0;
|
|
LABEL_62:
|
|
v59 = v68;
|
|
LABEL_63:
|
|
objc_release(v33);
|
|
v31 = v59;
|
|
v32 = v70;
|
|
goto LABEL_64;
|
|
}
|
|
v54 = objc_retainAutoreleasedReturnValue(_LSOpenLog());
|
|
if ( j__os_log_type_enabled_3(v54, OS_LOG_TYPE_INFO) )
|
|
{
|
|
*v84 = 134349571;
|
|
*&v84[4] = a1;
|
|
*&v84[12] = 1026;
|
|
*&v84[14] = a2;
|
|
v85 = 2113;
|
|
v86 = v70;
|
|
v55 = "LAUNCH: Forcing re-registration of bundle %{public}p %{public}d %{private}@ because the executable is not +x";
|
|
v56 = v54;
|
|
v57 = OS_LOG_TYPE_INFO;
|
|
v58 = 28;
|
|
goto LABEL_60;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
v54 = objc_retainAutoreleasedReturnValue(_LSOpenLog());
|
|
if ( j__os_log_type_enabled_3(v54, OS_LOG_TYPE_ERROR) )
|
|
{
|
|
*v84 = 134349827;
|
|
*&v84[4] = a1;
|
|
*&v84[12] = 1026;
|
|
*&v84[14] = a2;
|
|
v85 = 2113;
|
|
v86 = v70;
|
|
v87 = 2114;
|
|
v88[0] = v68;
|
|
v55 = "LAUNCH: Unable to make node to executable inside bundle %{public}p %{public}d %{private}@, error=%{public}@";
|
|
v56 = v54;
|
|
v57 = OS_LOG_TYPE_ERROR;
|
|
v58 = 38;
|
|
LABEL_60:
|
|
j___os_log_impl_1(&dword_180981000, v56, v57, v55, v84, v58);
|
|
}
|
|
}
|
|
objc_release(v54);
|
|
v36 = 1;
|
|
goto LABEL_62;
|
|
}
|
|
v36 = 1;
|
|
v52 = objc_retainAutoreleasedReturnValue(_LSOpenLog());
|
|
if ( j__os_log_type_enabled_3(v52, OS_LOG_TYPE_INFO) )
|
|
{
|
|
v53 = objc_retainAutoreleasedReturnValue(objc_msgSend(v25, "URL"));
|
|
*v84 = 134349571;
|
|
*&v84[4] = a1;
|
|
*&v84[12] = 1026;
|
|
*&v84[14] = a2;
|
|
v85 = 2113;
|
|
v86 = v53;
|
|
v71 = v53;
|
|
v36 = 1;
|
|
j___os_log_impl_1(
|
|
&dword_180981000,
|
|
v52,
|
|
OS_LOG_TYPE_INFO,
|
|
"LAUNCH: Forcing re-registration of bundle %{public}p %{public}d %{private}@ because the node path cannot be created.",
|
|
v84,
|
|
0x1Cu);
|
|
objc_release(v71);
|
|
}
|
|
v32 = v52;
|
|
LABEL_64:
|
|
objc_release(v32);
|
|
objc_release(v72);
|
|
objc_release(v31);
|
|
objc_release(v25);
|
|
if ( !v36 )
|
|
goto LABEL_19;
|
|
LABEL_32:
|
|
*v84 = 0LL;
|
|
if ( _LSContextInit(v84) )
|
|
{
|
|
v37 = 0LL;
|
|
}
|
|
else
|
|
{
|
|
v83 = 0.0;
|
|
v37 = _LSFindOrRegisterBundleNode(v84, v25, 0LL, 33554433LL, 0LL, &v78, &v83);
|
|
if ( !v37 )
|
|
v37 = _LSLaunchWithRunningboard(v84, v25, a4, v74, v75, v76, a9, v23, a11, v78, a12, v22, &v77, a14);
|
|
_LSContextDestroy(v84);
|
|
}
|
|
objc_release(*v84);
|
|
LABEL_38:
|
|
if ( a13 )
|
|
*a13 = v77;
|
|
if ( v37 == -10652 )
|
|
{
|
|
v45 = objc_retainAutoreleasedReturnValue(_LSOpenLog());
|
|
if ( j__os_log_type_enabled_3(v45, OS_LOG_TYPE_INFO) )
|
|
{
|
|
*v84 = 138478339;
|
|
*&v84[4] = v25;
|
|
*&v84[12] = 1026;
|
|
*&v84[14] = v77;
|
|
v85 = 1026;
|
|
LODWORD(v86) = HIDWORD(v77);
|
|
v46 = "LAUNCH: Launch of %{private}@ matched already running application, 0x%{public}x-0x%{public}x";
|
|
goto LABEL_46;
|
|
}
|
|
}
|
|
else if ( v37 )
|
|
{
|
|
v45 = objc_retainAutoreleasedReturnValue(_LSOpenLog());
|
|
if ( j__os_log_type_enabled_3(v45, OS_LOG_TYPE_ERROR) )
|
|
{
|
|
MacOSStatusErrorString = GetMacOSStatusErrorString(v37);
|
|
*v84 = 67240707;
|
|
*&v84[4] = v37;
|
|
*&v84[8] = 2082;
|
|
*&v84[10] = MacOSStatusErrorString;
|
|
v85 = 2113;
|
|
v86 = v25;
|
|
v46 = "LAUNCH: Launch failure with %{public}d/%{public}s %{private}@";
|
|
v47 = v45;
|
|
v48 = OS_LOG_TYPE_ERROR;
|
|
v49 = 28;
|
|
goto LABEL_49;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
v45 = objc_retainAutoreleasedReturnValue(_LSOpenLog());
|
|
if ( j__os_log_type_enabled_3(v45, OS_LOG_TYPE_INFO) )
|
|
{
|
|
*v84 = 138478339;
|
|
*&v84[4] = v25;
|
|
*&v84[12] = 1026;
|
|
*&v84[14] = v77;
|
|
v85 = 1026;
|
|
LODWORD(v86) = HIDWORD(v77);
|
|
v46 = "LAUNCH: Launch of %{private}@ launched successfully, 0x%{public}x-0x%{public}x";
|
|
LABEL_46:
|
|
v47 = v45;
|
|
v48 = OS_LOG_TYPE_INFO;
|
|
v49 = 24;
|
|
LABEL_49:
|
|
j___os_log_impl_1(&dword_180981000, v47, v48, v46, v84, v49);
|
|
}
|
|
}
|
|
objc_release(v45);
|
|
objc_release(v23);
|
|
objc_release(v22);
|
|
objc_release(v25);
|
|
return v37;
|
|
} |