113 lines
3.6 KiB
C
113 lines
3.6 KiB
C
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
|
* Ghidra 12.1.2 decompiler output for 0x1400c7b40 FUN_1400c7b40
|
|
* Pseudocode, not original source. */
|
|
|
|
void FUN_1400c7b40(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)
|
|
|
|
{
|
|
wchar_t *pwVar1;
|
|
undefined *puVar2;
|
|
undefined *puVar3;
|
|
longlong *plVar4;
|
|
wchar_t *pwVar5;
|
|
int *piVar6;
|
|
wchar_t *pwVar7;
|
|
wchar_t **ppwVar8;
|
|
int *piVar9;
|
|
undefined8 uVar10;
|
|
undefined **ppuVar11;
|
|
wchar_t *local_res8;
|
|
undefined *local_78;
|
|
wchar_t *local_70;
|
|
undefined1 local_68;
|
|
undefined8 local_60;
|
|
wchar_t *local_58;
|
|
undefined1 local_50;
|
|
undefined **local_48;
|
|
undefined8 local_40;
|
|
undefined8 local_38;
|
|
undefined8 local_30;
|
|
undefined8 local_28;
|
|
|
|
local_60 = 0xfffffffffffffffe;
|
|
if ((*(longlong *)(param_1 + 0x148) != 0) &&
|
|
(*(longlong *)(*(longlong *)(param_1 + 0x148) + 0x758) != 0)) {
|
|
FUN_14006cb70(param_1,param_2,param_3,param_4);
|
|
local_78 = PTR_DAT_1401ac010;
|
|
FUN_140053d20((longlong *)&local_78,L"(%s): unexpected thread exit with (%s)",param_2,param_3);
|
|
piVar9 = (int *)0x0;
|
|
local_40 = 0;
|
|
local_38 = 0;
|
|
local_30 = 0;
|
|
local_28 = 0;
|
|
local_48 = Proud::ByteArray::vftable;
|
|
ppuVar11 = &local_78;
|
|
uVar10 = 1;
|
|
FUN_140078c10((longlong *)&local_res8,1,1,(longlong *)ppuVar11,(longlong)&local_48);
|
|
FUN_140078360(&local_48);
|
|
local_70 = (wchar_t *)0x0;
|
|
FUN_140078ae0((ulonglong *)&local_70,(ulonglong *)&local_res8,uVar10,ppuVar11);
|
|
pwVar5 = *(wchar_t **)(param_1 + 0x148);
|
|
ppwVar8 = &local_70;
|
|
(**(code **)(*(longlong *)pwVar5 + 0x38))();
|
|
if ((char)param_4 != '\0') {
|
|
if (local_res8 != (wchar_t *)0x0) {
|
|
piVar9 = *(int **)(local_res8 + 0x1c);
|
|
}
|
|
ppwVar8 = &local_70;
|
|
plVar4 = FUN_140078d30(piVar9,(longlong *)ppwVar8,uVar10,ppuVar11);
|
|
pwVar5 = (wchar_t *)*plVar4;
|
|
if ((wchar_t *)*plVar4 == (wchar_t *)0x0) {
|
|
pwVar5 = (wchar_t *)PTR_DAT_1401ac010;
|
|
}
|
|
FUN_14006c280(pwVar5);
|
|
pwVar7 = local_70;
|
|
if (((local_70 != (wchar_t *)0x0) && (local_70 != (wchar_t *)PTR_DAT_1401ac010)) &&
|
|
(pwVar1 = local_70 + -4, pwVar1 != (wchar_t *)0x0)) {
|
|
pwVar5 = (wchar_t *)FUN_14006cb70(pwVar5,ppwVar8,uVar10,ppuVar11);
|
|
local_58 = pwVar5;
|
|
FUN_14006b350((int *)pwVar5);
|
|
local_50 = 1;
|
|
pwVar7 = pwVar7 + -2;
|
|
*(int *)pwVar7 = *(int *)pwVar7 + -1;
|
|
if (*(int *)pwVar7 == 0) {
|
|
FUN_14006cc60(pwVar1);
|
|
}
|
|
FUN_14006b3e0((longlong)pwVar5);
|
|
}
|
|
}
|
|
pwVar7 = local_res8;
|
|
if (local_res8 != (wchar_t *)0x0) {
|
|
local_70 = local_res8;
|
|
FUN_14006b350((int *)local_res8);
|
|
local_68 = 1;
|
|
*(longlong *)(local_res8 + 0x20) = *(longlong *)(local_res8 + 0x20) + -1;
|
|
if (*(longlong *)(local_res8 + 0x20) == 0) {
|
|
FUN_14006b3e0((longlong)pwVar7);
|
|
local_68 = 0;
|
|
FUN_1400640e0((undefined4 *)local_res8,ppwVar8,uVar10,ppuVar11);
|
|
pwVar5 = local_res8;
|
|
}
|
|
else {
|
|
FUN_14006b3e0((longlong)pwVar7);
|
|
pwVar5 = pwVar7;
|
|
}
|
|
}
|
|
puVar3 = local_78;
|
|
if (((local_78 != (undefined *)0x0) && (local_78 != PTR_DAT_1401ac010)) &&
|
|
(puVar2 = local_78 + -8, puVar2 != (undefined *)0x0)) {
|
|
piVar6 = (int *)FUN_14006cb70(pwVar5,ppwVar8,uVar10,ppuVar11);
|
|
local_58 = (wchar_t *)piVar6;
|
|
FUN_14006b350(piVar6);
|
|
local_50 = 1;
|
|
piVar9 = (int *)(puVar3 + -4);
|
|
*piVar9 = *piVar9 + -1;
|
|
if (*piVar9 == 0) {
|
|
FUN_14006cc60(puVar2);
|
|
}
|
|
FUN_14006b3e0((longlong)piVar6);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|