server-re/decomp/MessageServer_Release_x64/full/functions/0x1400cef50.c

90 lines
2.5 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400cef50 FUN_1400cef50
* Pseudocode, not original source. */
/* WARNING: Removing unreachable block (ram,0x0001400cf055) */
/* WARNING: Removing unreachable block (ram,0x0001400cf063) */
/* WARNING: Removing unreachable block (ram,0x0001400cf05b) */
/* WARNING: Removing unreachable block (ram,0x0001400cf06a) */
void FUN_1400cef50(undefined8 *param_1,int param_2,byte *param_3,longlong param_4,uint *param_5)
{
byte *pbVar1;
byte *pbVar2;
byte *pbVar3;
longlong lVar4;
uint uVar5;
SIZE_T SVar6;
SIZE_T SVar7;
byte *pbVar8;
undefined **local_50;
undefined8 local_48;
byte *local_40;
undefined8 local_38;
undefined8 local_30;
SVar7 = (SIZE_T)param_2;
pbVar8 = (byte *)0x0;
local_48 = 0;
local_40 = (byte *)0x0;
local_38 = 0;
local_30 = 0;
local_50 = Proud::ByteArray::vftable;
pbVar3 = (byte *)(param_4 + 4);
FUN_1400146f0((longlong)&local_50,1,(SIZE_T)param_3);
pbVar1 = local_40;
if ((int)local_38 == 0) {
pbVar1 = pbVar8;
}
SVar6 = 1;
FUN_140006500((undefined8 *)pbVar1,(undefined8 *)pbVar3,1);
lVar4 = (longlong)(int)local_38;
FUN_1400146f0((longlong)&local_50,(int)local_38 + 4,SVar6);
pbVar1 = local_40;
if ((int)local_38 == 0) {
pbVar1 = pbVar8;
}
SVar6 = 4;
FUN_140006500((undefined8 *)(pbVar1 + lVar4),(undefined8 *)(param_4 + 0xc),4);
if (param_2 < 0) {
/* WARNING: Subroutine does not return */
FUN_14006be00();
}
if (param_2 != 0) {
lVar4 = (longlong)(int)local_38;
FUN_1400146f0((longlong)&local_50,(int)local_38 + param_2,SVar6);
pbVar1 = local_40;
if ((int)local_38 == 0) {
pbVar1 = pbVar8;
}
FUN_140006500((undefined8 *)(pbVar1 + lVar4),param_1,SVar7);
SVar6 = SVar7;
}
pbVar1 = pbVar8;
if (*pbVar3 != 0) {
do {
lVar4 = (longlong)(int)local_38;
if ((int)local_38 < 0) {
/* WARNING: Subroutine does not return */
FUN_14006be00();
}
FUN_1400146f0((longlong)&local_50,(int)local_38 + 1,SVar6);
pbVar2 = local_40;
if ((int)local_38 == 0) {
pbVar2 = pbVar8;
}
pbVar2[lVar4] = 0;
uVar5 = (int)pbVar1 + 1;
pbVar1 = (byte *)(ulonglong)uVar5;
} while ((int)uVar5 < (int)(uint)*pbVar3);
}
pbVar3 = local_40;
if ((int)local_38 == 0) {
pbVar3 = pbVar8;
}
FUN_1400ce590(param_5,pbVar3,param_3,(longlong)(int)local_38,0);
FUN_140078360(&local_50);
return;
}