345 lines
13 KiB
C
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);
|
|
}
|
|
|