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

193 lines
5.8 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400fcbd0 FUN_1400fcbd0
* Pseudocode, not original source. */
longlong * FUN_1400fcbd0(longlong *param_1,longlong param_2,undefined8 param_3,undefined8 param_4)
{
undefined8 *puVar1;
char *pcVar2;
char *pcVar3;
undefined8 *puVar4;
ulonglong uVar5;
longlong *plVar6;
char **ppcVar7;
undefined8 **ppuVar8;
longlong *plVar9;
longlong *plVar10;
char *local_res10;
undefined8 *local_res18;
undefined8 *local_res20;
*param_1 = (longlong)Proud::CSendSpeedMeasurer::vftable;
param_1[1] = (longlong)Proud::CSendSpeedMeasurer::vftable;
param_1[2] = (longlong)Proud::CSendSpeedMeasurer::vftable;
plVar9 = (longlong *)0x0;
param_1[3] = 0;
param_1[4] = 0;
param_1[0x61] = 0;
uVar5 = FUN_140079250();
plVar10 = (longlong *)CONCAT71((int7)((ulonglong)param_3 >> 8),1);
FUN_14006b270((undefined4 *)(param_1 + 0x62),uVar5 & 0xffffffff,plVar10,param_4);
param_1[0x69] = 0;
FUN_140076e70((undefined2 *)(param_1 + 0x71));
local_res10 = operator_new(0xa8);
plVar6 = plVar9;
if (local_res10 != (char *)0x0) {
plVar10 = (longlong *)CONCAT71((int7)((ulonglong)plVar10 >> 8),1);
plVar6 = (longlong *)FUN_1400761a0(local_res10,param_1 + 1,plVar10,param_4);
}
param_1[0x61] = (longlong)plVar6;
*(undefined1 *)(param_1 + 9) = 0;
param_1[0x76] = param_2;
*(undefined1 *)(param_1 + 0x70) = 1;
*(undefined1 *)(param_1 + 0x58) = 0;
*(undefined1 *)(param_1 + 0x60) = 0;
local_res10 = (char *)FUN_14006cbf0(0x400);
plVar6 = plVar9;
if (local_res10 != (char *)0x0) {
plVar10 = param_1;
plVar6 = FUN_1400724c0((undefined8 *)local_res10,1,param_1,param_4);
}
if (plVar6 == (longlong *)0x0) {
local_res10 = (char *)0x0;
}
else {
local_res10 = (char *)FUN_14006cbf0(0x10);
local_res10[8] = '\x01';
local_res10[9] = '\0';
local_res10[10] = '\0';
local_res10[0xb] = '\0';
local_res10[0xc] = '\0';
local_res10[0xd] = '\0';
local_res10[0xe] = '\0';
local_res10[0xf] = '\0';
*(longlong **)local_res10 = plVar6;
}
pcVar2 = local_res10;
ppcVar7 = &local_res10;
FUN_14006e8a0(param_1 + 3,(longlong *)ppcVar7);
pcVar3 = local_res10;
if (pcVar2 != (char *)0x0) {
plVar6 = (longlong *)(pcVar2 + 8);
*plVar6 = *plVar6 + -1;
if (*plVar6 == 0) {
plVar6 = *(longlong **)local_res10;
if (plVar6 != (longlong *)0x0) {
FUN_140072370(plVar6,ppcVar7,plVar10,param_4);
FUN_14006cc60(plVar6);
}
FUN_14006cc60(pcVar3);
}
}
plVar6 = plVar9;
if ((undefined8 *)param_1[3] != (undefined8 *)0x0) {
plVar6 = *(longlong **)param_1[3];
}
FUN_140074040((longlong)plVar6,ppcVar7,plVar10,param_4);
plVar6 = plVar9;
if ((undefined8 *)param_1[3] != (undefined8 *)0x0) {
plVar6 = *(longlong **)param_1[3];
}
FUN_140073510((longlong)plVar6,0);
plVar6 = plVar9;
if ((undefined8 *)param_1[3] != (undefined8 *)0x0) {
plVar6 = *(longlong **)param_1[3];
}
FUN_1400737c0((longlong)plVar6,4);
local_res18 = (undefined8 *)FUN_14006cbf0(0x400);
plVar6 = plVar9;
if (local_res18 != (undefined8 *)0x0) {
plVar10 = param_1;
plVar6 = FUN_1400724c0(local_res18,2,param_1,param_4);
}
if (plVar6 == (longlong *)0x0) {
local_res18 = (undefined8 *)0x0;
}
else {
local_res18 = (undefined8 *)FUN_14006cbf0(0x10);
local_res18[1] = 1;
*local_res18 = plVar6;
}
puVar1 = local_res18;
ppuVar8 = &local_res18;
FUN_14006e8a0(param_1 + 4,(longlong *)ppuVar8);
puVar4 = local_res18;
if (puVar1 != (undefined8 *)0x0) {
plVar6 = puVar1 + 1;
*plVar6 = *plVar6 + -1;
if (*plVar6 == 0) {
plVar6 = (longlong *)*local_res18;
if (plVar6 != (longlong *)0x0) {
FUN_140072370(plVar6,ppuVar8,plVar10,param_4);
FUN_14006cc60(plVar6);
}
FUN_14006cc60(puVar4);
}
}
plVar6 = plVar9;
if ((undefined8 *)param_1[4] != (undefined8 *)0x0) {
plVar6 = *(longlong **)param_1[4];
}
FUN_140074040((longlong)plVar6,ppuVar8,plVar10,param_4);
plVar6 = plVar9;
if ((undefined8 *)param_1[3] != (undefined8 *)0x0) {
plVar6 = *(longlong **)param_1[3];
}
FUN_1400716c0((longlong)plVar6,param_1 + 2,plVar10,param_4);
plVar6 = plVar9;
if ((undefined8 *)param_1[3] != (undefined8 *)0x0) {
plVar6 = *(longlong **)param_1[3];
}
FUN_1400765b0(param_1[0x61],plVar6,plVar10,param_4);
plVar6 = plVar9;
if ((undefined8 *)param_1[4] != (undefined8 *)0x0) {
plVar6 = *(longlong **)param_1[4];
}
FUN_1400716c0((longlong)plVar6,param_1 + 2,plVar10,param_4);
plVar6 = plVar9;
if ((undefined8 *)param_1[4] != (undefined8 *)0x0) {
plVar6 = *(longlong **)param_1[4];
}
FUN_1400765b0(param_1[0x61],plVar6,plVar10,param_4);
param_1[5] = 0;
*(undefined1 *)(param_1 + 6) = 0;
param_1[8] = 0;
FUN_140076ec0((char *)(param_1 + 0x71));
local_res20 = operator_new(0x28);
plVar6 = plVar9;
if (local_res20 != (undefined8 *)0x0) {
plVar10 = param_1;
plVar6 = FUN_140074090(local_res20,FUN_1400fcba0,param_1);
}
if (plVar6 == (longlong *)0x0) {
local_res20 = (undefined8 *)0x0;
}
else {
local_res20 = (undefined8 *)FUN_14006cbf0(0x10);
local_res20[1] = 1;
*local_res20 = plVar6;
}
puVar1 = local_res20;
ppuVar8 = &local_res20;
FUN_1400c2980(param_1 + 0x69,(longlong *)ppuVar8);
puVar4 = local_res20;
if (puVar1 != (undefined8 *)0x0) {
plVar6 = puVar1 + 1;
*plVar6 = *plVar6 + -1;
if (*plVar6 == 0) {
puVar1 = (undefined8 *)*local_res20;
if (puVar1 != (undefined8 *)0x0) {
FUN_1400741a0(puVar1);
operator_delete(puVar1);
}
FUN_14006cc60(puVar4);
}
}
if ((undefined8 *)param_1[0x69] != (undefined8 *)0x0) {
plVar9 = *(longlong **)param_1[0x69];
}
FUN_140074290(plVar9,ppuVar8,plVar10,param_4);
return param_1;
}