75 lines
1.9 KiB
C
75 lines
1.9 KiB
C
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
|
* Ghidra 12.1.2 decompiler output for 0x140108b50 FUN_140108b50
|
|
* Pseudocode, not original source. */
|
|
|
|
ulonglong FUN_140108b50(char *param_1,uint *param_2,int param_3,undefined4 param_4,
|
|
undefined8 param_5)
|
|
|
|
{
|
|
int iVar1;
|
|
void *_Memory;
|
|
ulonglong uVar2;
|
|
undefined8 *puVar3;
|
|
uint uVar4;
|
|
ulonglong uVar5;
|
|
undefined8 *puVar6;
|
|
undefined8 uVar7;
|
|
bool bVar8;
|
|
|
|
if ((param_1 == (char *)0x0) || (param_2 == (uint *)0x0)) {
|
|
return 0x10;
|
|
}
|
|
uVar5 = 0;
|
|
uVar4 = 0;
|
|
uVar2 = uVar5;
|
|
if (param_3 != 0) {
|
|
puVar3 = ¶m_5;
|
|
bVar8 = param_3 == 0;
|
|
iVar1 = param_3;
|
|
do {
|
|
if ((bVar8 || iVar1 < 0) || ((0xb < iVar1 && (2 < iVar1 - 0xdU)))) {
|
|
return 0x10;
|
|
}
|
|
iVar1 = *(int *)(puVar3 + 1);
|
|
uVar2 = (ulonglong)((int)uVar2 + 1);
|
|
puVar3 = puVar3 + 3;
|
|
bVar8 = iVar1 == 0;
|
|
} while (!bVar8);
|
|
}
|
|
if ((int)uVar2 == 0) {
|
|
return 2;
|
|
}
|
|
_Memory = calloc(0x38,uVar2);
|
|
if (_Memory == (void *)0x0) {
|
|
return 0xd;
|
|
}
|
|
puVar3 = ¶m_5;
|
|
bVar8 = param_3 == 0;
|
|
if (!bVar8) {
|
|
puVar6 = (undefined8 *)((longlong)_Memory + 8);
|
|
uVar7 = param_5;
|
|
do {
|
|
if ((bVar8 || param_3 < 0) || ((0xb < param_3 && (2 < param_3 - 0xdU)))) {
|
|
uVar2 = 0x10;
|
|
goto LAB_140108c7f;
|
|
}
|
|
*(int *)(puVar6 + -1) = param_3;
|
|
*(undefined4 *)(puVar6 + 1) = param_4;
|
|
*puVar6 = uVar7;
|
|
param_3 = *(int *)(puVar3 + 1);
|
|
param_4 = *(undefined4 *)(puVar3 + 2);
|
|
uVar7 = puVar3[3];
|
|
puVar3 = puVar3 + 3;
|
|
uVar4 = (int)uVar5 + 1;
|
|
uVar5 = (ulonglong)uVar4;
|
|
puVar6 = puVar6 + 7;
|
|
bVar8 = param_3 == 0;
|
|
} while (!bVar8);
|
|
}
|
|
uVar2 = FUN_14010ef40((longlong)_Memory,uVar4,param_1,param_2,0xd);
|
|
uVar2 = uVar2 & 0xffffffff;
|
|
LAB_140108c7f:
|
|
free(_Memory);
|
|
return uVar2;
|
|
}
|
|
|