server-re/decomp/Agent_Release_x64/full/functions/0x14005c2d0.c
2026-10-14 16:45:19 -04:00

345 lines
13 KiB
C

/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
* Ghidra 12.1.2 decompiler output for 0x14005c2d0 FUN_14005c2d0
* Pseudocode, not original source. */
undefined8
FUN_14005c2d0(ulonglong param_1,uint param_2,undefined8 param_3,uint *param_4,uint *param_5,
uint *param_6,char *param_7)
{
longlong lVar1;
LPVOID pvVar2;
undefined4 uVar3;
undefined2 uVar4;
longlong lVar5;
int iVar6;
undefined8 uVar7;
ulonglong uVar8;
undefined **ppuVar9;
undefined8 *puVar10;
undefined8 *puVar11;
undefined8 *puVar12;
undefined8 *puVar13;
longlong **pplVar14;
longlong **pplVar15;
longlong *plVar16;
longlong lVar17;
uint uVar18;
uint uVar19;
undefined **ppuVar20;
uint *puVar21;
longlong **pplVar22;
double dVar23;
ulonglong local_res8;
uint local_res10 [2];
longlong *local_188;
undefined1 local_180;
undefined1 local_17f;
undefined1 local_17e [6];
longlong *local_178;
longlong local_170;
longlong local_168 [2];
int *local_158;
undefined1 local_150;
longlong local_148 [2];
undefined4 local_138;
undefined **local_130;
undefined4 local_128;
undefined2 local_124;
undefined **local_120;
undefined4 local_118;
undefined2 local_114;
undefined1 local_110;
undefined4 local_108;
undefined **local_100;
undefined4 local_f8;
undefined2 local_f4;
undefined **local_f0;
undefined4 local_e8;
undefined2 local_e4;
undefined1 local_e0;
undefined4 local_d8;
undefined **local_d0;
undefined4 local_c8;
undefined2 local_c4;
undefined **local_c0;
undefined4 local_b8;
undefined2 local_b4;
undefined1 local_b0;
undefined8 local_a8;
undefined8 local_a0 [2];
undefined8 local_90 [2];
undefined8 local_80 [2];
undefined8 local_70 [2];
undefined8 local_60 [2];
undefined8 local_50 [3];
local_a8 = 0xfffffffffffffffe;
local_res8 = param_1;
local_res10[0] = param_2;
local_158 = (int *)(**(code **)(**(longlong **)(param_1 + 0x20) + 0x58))();
FUN_14002e6e0(local_158);
local_150 = 1;
if (DAT_14015bfcf != '\0') {
(**(code **)(**(longlong **)(param_1 + 0x20) + 200))
(*(longlong **)(param_1 + 0x20),
L"Proud::CNetServerImpl::C2SStub::P2PGroup_MemberJoin_Ack");
}
FUN_140057180(*(longlong *)(param_1 + 0x20),(longlong *)&local_178,*param_4);
pplVar22 = (longlong **)0x0;
if (((local_178 != (longlong *)0x0) && (*local_178 != 0)) &&
(uVar7 = FUN_1400a1820(*local_178 + 200,local_res10[0],(ulonglong)*param_5,*param_6),
(char)uVar7 == '\x01')) {
pplVar15 = pplVar22;
if (local_178 != (longlong *)0x0) {
pplVar15 = (longlong **)*local_178;
}
uVar8 = FUN_1400a1730((longlong)(pplVar15 + 0x19),*param_5,(ulonglong)*param_6);
if ((char)uVar8 == '\0') {
FUN_14005bc30(*(longlong *)(param_1 + 0x20),(ulonglong)*param_4,(ulonglong)*param_5,0);
}
}
puVar21 = (uint *)(ulonglong)*param_5;
uVar8 = (ulonglong)local_res10[0];
pplVar15 = &local_188;
FUN_14004ffa0(*(longlong *)(param_1 + 0x20) + 0x2d8,(longlong *)pplVar15,local_res10[0],*param_5);
if (local_188 != (longlong *)0x0) {
ppuVar20 = (undefined **)*local_188;
uVar8 = 0;
if (ppuVar20 != (undefined **)0x0) {
if (*(char *)(ppuVar20 + 0x34) != '\0') {
ppuVar9 = ppuVar20 + 2;
pplVar15 = pplVar22;
pplVar14 = pplVar22;
do {
if (*(uint *)ppuVar9 == local_res10[0]) {
*(undefined1 *)(ppuVar20 + (longlong)(int)pplVar14 * 6 + 7) = 1;
break;
}
pplVar14 = (longlong **)(ulonglong)((int)pplVar14 + 1);
pplVar15 = (longlong **)((longlong)pplVar15 + 1);
ppuVar9 = ppuVar9 + 6;
} while ((longlong)pplVar15 < 2);
uVar8 = (ulonglong)local_res10[0];
pplVar15 = pplVar22;
if (local_188 != (longlong *)0x0) {
pplVar15 = (longlong **)*local_188;
}
dVar23 = 0.0;
if (((double)pplVar15[0x32] != 0.0) && (*param_7 != '\0')) {
pplVar15 = pplVar22;
if (local_188 != (longlong *)0x0) {
pplVar15 = (longlong **)*local_188;
}
FUN_14003deb0((longlong)pplVar15,local_res10[0]);
uVar8 = (ulonglong)local_res10[0];
}
pplVar15 = pplVar22;
if (local_188 != (longlong *)0x0) {
pplVar15 = (longlong **)*local_188;
}
pplVar15 = pplVar15 + 7;
lVar17 = 2;
pplVar14 = pplVar22;
do {
if (*(char *)pplVar15 != '\0') {
pplVar14 = (longlong **)(ulonglong)((int)pplVar14 + 1);
}
pplVar15 = pplVar15 + 6;
lVar17 = lVar17 + -1;
} while (lVar17 != 0);
pplVar15 = (longlong **)0x0;
if ((int)pplVar14 == 2) {
pplVar15 = pplVar22;
if (local_188 != (longlong *)0x0) {
pplVar15 = (longlong **)*local_188;
}
if ((double)pplVar15[0x32] == dVar23) {
LAB_14005c6c5:
local_res8 = local_res8 & 0xffffffffffffff00;
plVar16 = (longlong *)(*(longlong *)(param_1 + 0x20) + 0x4a8);
(**(code **)(*plVar16 + 0x50))
(plVar16,uVar8 & 0xffffffff,&DAT_14015de10,param_5,&local_res8,
&PTR_vftable_1401553c8,&PTR_vftable_1401553c8,&PTR_vftable_1401553c8,
&PTR_vftable_1401553c8);
local_17f = 0;
plVar16 = (longlong *)(*(longlong *)(param_1 + 0x20) + 0x4a8);
puVar21 = local_res10;
(**(code **)(*plVar16 + 0x50))
(plVar16,*param_5,&DAT_14015de10,puVar21,&local_17f,&PTR_vftable_1401553c8,
&PTR_vftable_1401553c8,&PTR_vftable_1401553c8,&PTR_vftable_1401553c8);
uVar4 = DAT_1401553d4;
uVar3 = DAT_1401553d0;
pplVar15 = pplVar22;
if (local_188 != (longlong *)0x0) {
pplVar15 = (longlong **)*local_188;
}
ppuVar20 = Proud::AddrPort::vftable;
if (*(char *)(pplVar15 + 1) != '\x01') {
*(undefined4 *)(pplVar15 + 2) = 0;
*(undefined4 *)(pplVar15 + 4) = uVar3;
*(undefined2 *)((longlong)pplVar15 + 0x24) = uVar4;
*(undefined4 *)(pplVar15 + 6) = uVar3;
*(undefined2 *)((longlong)pplVar15 + 0x34) = uVar4;
*(undefined1 *)(pplVar15 + 7) = 0;
uVar4 = DAT_1401553d4;
uVar3 = DAT_1401553d0;
local_d0 = Proud::AddrPort::vftable;
local_c0 = Proud::AddrPort::vftable;
local_d8 = 0;
local_b0 = 0;
local_c8 = DAT_1401553d0;
local_c4 = DAT_1401553d4;
local_b8 = DAT_1401553d0;
local_b4 = DAT_1401553d4;
*(undefined4 *)(pplVar15 + 8) = 0;
*(undefined4 *)(pplVar15 + 10) = uVar3;
*(undefined2 *)((longlong)pplVar15 + 0x54) = uVar4;
*(undefined4 *)(pplVar15 + 0xc) = uVar3;
*(undefined2 *)((longlong)pplVar15 + 100) = uVar4;
*(undefined1 *)(pplVar15 + 0xd) = 0;
*(undefined1 *)(pplVar15 + 1) = 1;
}
uVar4 = DAT_1401553d4;
uVar3 = DAT_1401553d0;
pplVar15 = pplVar22;
if (local_188 != (longlong *)0x0) {
pplVar15 = (longlong **)*local_188;
}
local_100 = Proud::AddrPort::vftable;
local_f0 = Proud::AddrPort::vftable;
local_108 = 0;
local_e0 = 0;
local_f8 = DAT_1401553d0;
local_f4 = DAT_1401553d4;
local_e8 = DAT_1401553d0;
local_e4 = DAT_1401553d4;
*(undefined4 *)(pplVar15 + 2) = 0;
*(undefined4 *)(pplVar15 + 4) = uVar3;
*(undefined2 *)((longlong)pplVar15 + 0x24) = uVar4;
*(undefined4 *)(pplVar15 + 6) = uVar3;
*(undefined2 *)((longlong)pplVar15 + 0x34) = uVar4;
*(undefined1 *)(pplVar15 + 7) = 0;
uVar4 = DAT_1401553d4;
uVar3 = DAT_1401553d0;
local_130 = Proud::AddrPort::vftable;
local_120 = Proud::AddrPort::vftable;
local_138 = 0;
local_110 = 0;
local_128 = DAT_1401553d0;
local_124 = DAT_1401553d4;
local_118 = DAT_1401553d0;
local_114 = DAT_1401553d4;
*(undefined4 *)(pplVar15 + 8) = 0;
*(undefined4 *)(pplVar15 + 10) = uVar3;
*(undefined2 *)((longlong)pplVar15 + 0x54) = uVar4;
*(undefined4 *)(pplVar15 + 0xc) = uVar3;
*(undefined2 *)((longlong)pplVar15 + 100) = uVar4;
*(undefined1 *)(pplVar15 + 0xd) = 0;
pplVar14 = pplVar22;
if (local_188 != (longlong *)0x0) {
pplVar14 = (longlong **)*local_188;
}
pplVar14[0x33] = (longlong *)0x0;
}
else {
pplVar15 = pplVar22;
if (local_188 != (longlong *)0x0) {
pplVar15 = (longlong **)*local_188;
}
plVar16 = local_188;
iVar6 = FUN_14003ccb0((longlong)pplVar15);
if (iVar6 != 2) goto LAB_14005c6c5;
local_180 = 1;
if (plVar16 == (longlong *)0x0) {
local_148[0] = 0;
}
else {
local_148[0] = *plVar16;
}
uVar19 = *param_5;
lVar17 = *(longlong *)(param_1 + 0x20);
lVar1 = *(longlong *)(lVar17 + 0x4a8);
uVar18 = local_res10[0];
local_170 = local_148[0];
local_168[0] = local_148[0];
puVar10 = FUN_14003d020(local_148[0],local_50,local_res10[0]);
puVar11 = FUN_14003cfa0(local_148[0],local_90,uVar18);
puVar12 = FUN_14003cc30(local_170,local_148,uVar19);
puVar13 = FUN_14003cb30(local_168[0],local_70,uVar19);
(**(code **)(lVar1 + 0x50))
(lVar17 + 0x4a8,local_res10[0],&DAT_14015de10,param_5,&local_180,puVar13,
puVar12,puVar11,puVar10);
local_17e[0] = 1;
if (local_188 == (longlong *)0x0) {
local_168[0] = 0;
}
else {
local_168[0] = *local_188;
}
lVar5 = local_168[0];
uVar19 = *param_5;
lVar17 = *(longlong *)(local_res8 + 0x20);
lVar1 = *(longlong *)(lVar17 + 0x4a8);
uVar18 = uVar19;
local_170 = local_168[0];
puVar10 = FUN_14003d020(local_168[0],local_a0,uVar19);
puVar11 = FUN_14003cfa0(lVar5,local_80,uVar18);
uVar18 = local_res10[0];
puVar12 = FUN_14003cc30(local_168[0],local_60,local_res10[0]);
puVar13 = FUN_14003cb30(local_170,local_168,uVar18);
puVar21 = local_res10;
ppuVar20 = (undefined **)&DAT_14015de10;
pplVar15 = (longlong **)(ulonglong)uVar19;
(**(code **)(lVar1 + 0x50))
(lVar17 + 0x4a8,pplVar15,&DAT_14015de10,puVar21,local_17e,puVar13,puVar12,
puVar11,puVar10);
pplVar14 = pplVar22;
if (local_188 != (longlong *)0x0) {
pplVar14 = (longlong **)*local_188;
}
if (*(char *)(pplVar14 + 1) != '\0') {
*(undefined1 *)(pplVar14 + 1) = 0;
}
}
pplVar14 = pplVar22;
if (local_188 != (longlong *)0x0) {
pplVar14 = (longlong **)*local_188;
}
pplVar14[0x32] = (longlong *)0x0;
if (local_188 != (longlong *)0x0) {
pplVar22 = (longlong **)*local_188;
}
*(undefined1 *)(pplVar22 + 0x34) = 0;
}
}
if ((local_188 != (longlong *)0x0) && (local_188[1] = local_188[1] + -1, local_188[1] == 0)) {
FUN_140041080(local_188);
}
if ((local_178 != (longlong *)0x0) && (local_178[1] = local_178[1] + -1, local_178[1] == 0)) {
pvVar2 = (LPVOID)*local_178;
if (pvVar2 != (LPVOID)0x0) {
FUN_1400443d0((longlong)pvVar2,pplVar15,ppuVar20,puVar21);
FUN_1400302f0(pvVar2);
}
FUN_1400302f0(local_178);
}
goto LAB_14005c986;
}
}
if ((local_188 != (longlong *)0x0) && (local_188[1] = local_188[1] + -1, local_188[1] == 0)) {
FUN_140041080(local_188);
}
if ((local_178 != (longlong *)0x0) && (local_178[1] = local_178[1] + -1, local_178[1] == 0)) {
pvVar2 = (LPVOID)*local_178;
if (pvVar2 != (LPVOID)0x0) {
FUN_1400443d0((longlong)pvVar2,pplVar15,uVar8,puVar21);
FUN_1400302f0(pvVar2);
}
FUN_1400302f0(local_178);
}
LAB_14005c986:
uVar7 = FUN_14002e770((longlong)local_158);
return CONCAT71((int7)((ulonglong)uVar7 >> 8),1);
}