72 lines
2.1 KiB
C
72 lines
2.1 KiB
C
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
|
* Ghidra 12.1.2 decompiler output for 0x1400bec50 FUN_1400bec50
|
|
* Pseudocode, not original source. */
|
|
|
|
void FUN_1400bec50(longlong *param_1,longlong param_2,undefined8 param_3,longlong param_4)
|
|
|
|
{
|
|
char cVar1;
|
|
int iVar2;
|
|
longlong lVar3;
|
|
longlong lVar4;
|
|
int iVar5;
|
|
ulonglong uVar6;
|
|
longlong lVar7;
|
|
longlong *plVar8;
|
|
uint uVar9;
|
|
longlong lVar10;
|
|
int iVar11;
|
|
exception local_68 [80];
|
|
|
|
cVar1 = (**(code **)(*param_1 + 0x90))();
|
|
if (cVar1 != '\0') {
|
|
FUN_14006ba50(local_68,(wchar_t *)PTR_u_Already_async_callback_may_occur_1401ad7a8,param_3,
|
|
param_4);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_68,(ThrowInfo *)&DAT_1401a93e8);
|
|
}
|
|
uVar9 = *(uint *)(param_1 + 4);
|
|
uVar6 = 0;
|
|
lVar7 = 0;
|
|
if (0 < (int)uVar9) {
|
|
plVar8 = param_1 + 1;
|
|
while( true ) {
|
|
if ((lVar7 < 0) || (iVar5 = (int)uVar6, (int)param_1[4] <= iVar5)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14006be30(uVar6,lVar7,(ulonglong)uVar9,param_4);
|
|
}
|
|
if (*(longlong *)(param_1[3] + lVar7 * 8) == param_2) break;
|
|
uVar6 = (ulonglong)(iVar5 + 1U);
|
|
lVar7 = lVar7 + 1;
|
|
if ((int)uVar9 <= (int)(iVar5 + 1U)) {
|
|
return;
|
|
}
|
|
}
|
|
if (iVar5 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14006be00();
|
|
}
|
|
iVar2 = (int)param_1[4] - iVar5;
|
|
iVar11 = 1;
|
|
if (iVar2 < 2) {
|
|
iVar11 = iVar2;
|
|
}
|
|
uVar9 = ((int)param_1[4] - iVar11) - iVar5;
|
|
uVar6 = (ulonglong)uVar9;
|
|
if (0 < (int)uVar9) {
|
|
lVar10 = (longlong)(int)uVar9;
|
|
lVar7 = lVar7 * 8;
|
|
do {
|
|
lVar3 = FUN_14007a110((longlong)plVar8);
|
|
lVar4 = FUN_14007a110((longlong)plVar8);
|
|
*(undefined8 *)(lVar4 + lVar7) = *(undefined8 *)((longlong)iVar11 * 8 + lVar3 + lVar7);
|
|
lVar7 = lVar7 + 8;
|
|
lVar10 = lVar10 + -1;
|
|
} while (lVar10 != 0);
|
|
}
|
|
FUN_1400cc980((longlong)plVar8,(int)param_1[4] - iVar11,uVar6,param_4);
|
|
*(undefined8 *)(param_2 + 8) = 0;
|
|
}
|
|
return;
|
|
}
|
|
|