add agent manager release decomp
This commit is contained in:
parent
31ff800b2a
commit
fac6117145
7019 changed files with 254032 additions and 5 deletions
377
decomp/AgentManager_Release_x64/full/functions/0x1400c7080.c
Normal file
377
decomp/AgentManager_Release_x64/full/functions/0x1400c7080.c
Normal file
|
|
@ -0,0 +1,377 @@
|
|||
/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
|
||||
* Ghidra 12.1.2 decompiler output for 0x1400c7080 FUN_1400c7080
|
||||
* Pseudocode, not original source. */
|
||||
|
||||
void FUN_1400c7080(IMAGE_DOS_HEADER *param_1,longlong param_2,undefined **param_3,
|
||||
undefined ***param_4)
|
||||
|
||||
{
|
||||
undefined **ppuVar1;
|
||||
longlong *plVar2;
|
||||
int iVar3;
|
||||
int iVar4;
|
||||
int iVar5;
|
||||
longlong lVar6;
|
||||
longlong lVar7;
|
||||
longlong *plVar8;
|
||||
char cVar9;
|
||||
uint uVar10;
|
||||
uint uVar12;
|
||||
longlong lVar13;
|
||||
uint uVar11;
|
||||
int *piVar14;
|
||||
uint *puVar15;
|
||||
int *piVar16;
|
||||
undefined8 *puVar17;
|
||||
longlong lVar18;
|
||||
longlong *plVar19;
|
||||
ulonglong uVar20;
|
||||
undefined **ppuVar21;
|
||||
longlong lVar22;
|
||||
undefined ***pppuVar23;
|
||||
int iVar24;
|
||||
ulonglong uVar25;
|
||||
uint uVar26;
|
||||
undefined8 uVar27;
|
||||
longlong **pplVar28;
|
||||
uint uVar29;
|
||||
undefined8 uVar30;
|
||||
undefined8 uVar31;
|
||||
undefined **local_res8;
|
||||
undefined **local_res10;
|
||||
longlong *local_res18;
|
||||
undefined **local_50;
|
||||
undefined8 local_48;
|
||||
longlong local_40;
|
||||
undefined8 local_38;
|
||||
undefined4 local_30;
|
||||
undefined4 local_2c;
|
||||
|
||||
lVar22 = param_2;
|
||||
(**(code **)(*(longlong *)(*(longlong *)¶m_1[2].e_cparhdr + 0x78) + 0x10))();
|
||||
lVar18._0_2_ = param_1[2].e_cparhdr;
|
||||
lVar18._2_2_ = param_1[2].e_minalloc;
|
||||
lVar18._4_2_ = param_1[2].e_maxalloc;
|
||||
lVar18._6_2_ = param_1[2].e_ss;
|
||||
lVar13 = FUN_14009c0f0(lVar18);
|
||||
*(undefined1 *)(lVar13 + 0xc0) = 0;
|
||||
if (*(int *)(param_2 + 8) < 1) {
|
||||
FUN_14003e7c0(lVar18,lVar22,param_3,param_4);
|
||||
local_res10 = (undefined **)PTR_DAT_14016f010;
|
||||
FUN_140029b80((longlong *)&local_res10,L"compeltedlength < 0 recvcomplete errorcode:%d",
|
||||
(ulonglong)*(uint *)(param_2 + 0xc),param_4);
|
||||
param_4 = &local_res10;
|
||||
lVar22 = 0xb;
|
||||
param_3 = (undefined **)0x3;
|
||||
plVar19 = *(longlong **)¶m_1[2].e_cparhdr;
|
||||
FUN_1400b4a80(plVar19,0xb,(undefined *)0x3,(longlong **)param_4);
|
||||
iVar24._0_1_ = param_1[2].e_magic[0];
|
||||
iVar24._1_1_ = param_1[2].e_magic[1];
|
||||
iVar24._2_2_ = param_1[2].e_cblp;
|
||||
if (iVar24 < 4) {
|
||||
param_1->e_program[0] = 0;
|
||||
param_1->e_program[1] = 0;
|
||||
param_1->e_program[2] = 0;
|
||||
param_1->e_program[3] = 0;
|
||||
param_1[2].e_magic[0] = '\x04';
|
||||
param_1[2].e_magic[1] = '\0';
|
||||
param_1[2].e_cblp = 0;
|
||||
plVar19 = (longlong *)(*(longlong *)¶m_1[2].e_cparhdr + 0x70);
|
||||
uVar30 = (**(code **)(*plVar19 + 0x1c0))();
|
||||
param_1[1].e_magic[0] = (char)uVar30;
|
||||
param_1[1].e_magic[1] = (char)((ulonglong)uVar30 >> 8);
|
||||
param_1[1].e_cblp = (short)((ulonglong)uVar30 >> 0x10);
|
||||
param_1[1].e_cp = (short)((ulonglong)uVar30 >> 0x20);
|
||||
param_1[1].e_crlc = (short)((ulonglong)uVar30 >> 0x30);
|
||||
param_1[1].e_program[0] = 0;
|
||||
}
|
||||
ppuVar21 = local_res10;
|
||||
if (((local_res10 != (undefined **)0x0) && (local_res10 != (undefined **)PTR_DAT_14016f010)) &&
|
||||
(ppuVar1 = local_res10 + -1, ppuVar1 != (undefined **)0x0)) {
|
||||
piVar14 = (int *)FUN_14003e7c0(plVar19,lVar22,param_3,param_4);
|
||||
FUN_14003d040(piVar14);
|
||||
piVar16 = (int *)((longlong)ppuVar21 + -4);
|
||||
*piVar16 = *piVar16 + -1;
|
||||
if (*piVar16 == 0) {
|
||||
FUN_14003e8b0(ppuVar1);
|
||||
}
|
||||
FUN_14003d0d0((longlong)piVar14);
|
||||
}
|
||||
local_res10 = (undefined **)PTR_DAT_14016f010;
|
||||
goto LAB_1400c7597;
|
||||
}
|
||||
lVar13._0_2_ = param_1[2].e_cparhdr;
|
||||
lVar13._2_2_ = param_1[2].e_minalloc;
|
||||
lVar13._4_2_ = param_1[2].e_maxalloc;
|
||||
lVar13._6_2_ = param_1[2].e_ss;
|
||||
lVar18 = FUN_14009c0f0(lVar13);
|
||||
uVar25 = 0;
|
||||
uVar12 = 0;
|
||||
uVar20 = uVar25;
|
||||
if (*(ulonglong **)(lVar18 + 0x128) != (ulonglong *)0x0) {
|
||||
uVar20 = **(ulonglong **)(lVar18 + 0x128);
|
||||
}
|
||||
cVar9 = FUN_140043cf0(uVar20);
|
||||
uVar26 = 0;
|
||||
if (cVar9 == '\0') {
|
||||
uVar30 = (**(code **)(*(longlong *)(*(longlong *)¶m_1[2].e_cparhdr + 0x70) + 0x1c0))();
|
||||
*(undefined8 *)(*(longlong *)¶m_1[2].e_cparhdr + 0x18c0) = uVar30;
|
||||
lVar22._0_2_ = param_1[2].e_cparhdr;
|
||||
lVar22._2_2_ = param_1[2].e_minalloc;
|
||||
lVar22._4_2_ = param_1[2].e_maxalloc;
|
||||
lVar22._6_2_ = param_1[2].e_ss;
|
||||
lVar18 = FUN_14009c0f0(lVar22);
|
||||
uVar20 = uVar25;
|
||||
if (*(ulonglong **)(lVar18 + 0x128) != (ulonglong *)0x0) {
|
||||
uVar20 = **(ulonglong **)(lVar18 + 0x128);
|
||||
}
|
||||
puVar17 = (undefined8 *)FUN_140043cd0(uVar20);
|
||||
lVar6._0_2_ = param_1[2].e_cparhdr;
|
||||
lVar6._2_2_ = param_1[2].e_minalloc;
|
||||
lVar6._4_2_ = param_1[2].e_maxalloc;
|
||||
lVar6._6_2_ = param_1[2].e_ss;
|
||||
lVar18 = FUN_14009c0f0(lVar6);
|
||||
param_3 = (undefined **)(ulonglong)*(uint *)(param_2 + 8);
|
||||
FUN_14009ab30((longlong *)(lVar18 + 0x130),puVar17,(SIZE_T)param_3);
|
||||
plVar19 = (longlong *)(*(longlong *)¶m_1[2].e_cparhdr + 0x658);
|
||||
*plVar19 = *plVar19 + (longlong)*(int *)(param_2 + 8);
|
||||
local_48 = 0;
|
||||
local_40 = 0;
|
||||
local_38 = 0;
|
||||
local_50 = Proud::CReceivedMessageList::vftable;
|
||||
local_30 = 1000;
|
||||
local_2c = 1;
|
||||
pppuVar23 = &local_50;
|
||||
plVar19 = *(longlong **)¶m_1[2].e_cparhdr;
|
||||
FUN_1400ab500(plVar19,(longlong)pppuVar23,param_3,param_4);
|
||||
while (iVar24 = (int)uVar25, iVar24 != (int)local_38) {
|
||||
if ((iVar24 < 0) || ((int)local_38 <= iVar24)) {
|
||||
/* WARNING: Subroutine does not return */
|
||||
FUN_14003def0(plVar19,pppuVar23,param_3,param_4);
|
||||
}
|
||||
pppuVar23 = (undefined ***)(local_40 + (longlong)iVar24 * 0x48);
|
||||
lVar18 = *(longlong *)¶m_1[2].e_cparhdr;
|
||||
param_4 = (undefined ***)0x0;
|
||||
param_3 = *(undefined ***)(lVar18 + 0x6f0);
|
||||
puVar17 = FUN_1400c2180((longlong *)(lVar18 + 0x6e0),(undefined4 *)pppuVar23,param_3,0);
|
||||
plVar19 = *(longlong **)(lVar18 + 0x6f0);
|
||||
if (plVar19 == (longlong *)0x0) {
|
||||
*(undefined8 **)(lVar18 + 0x6e8) = puVar17;
|
||||
}
|
||||
else {
|
||||
*plVar19 = (longlong)puVar17;
|
||||
}
|
||||
*(undefined8 **)(lVar18 + 0x6f0) = puVar17;
|
||||
if ((int)local_38 <= iVar24) {
|
||||
/* WARNING: Subroutine does not return */
|
||||
FUN_14003def0(plVar19,pppuVar23,param_3,param_4);
|
||||
}
|
||||
uVar25 = (ulonglong)(iVar24 + 1);
|
||||
}
|
||||
lVar22 = 0;
|
||||
FUN_1400c6920(param_1,(IMAGE_DOS_HEADER *)0x0,param_3,param_4);
|
||||
FUN_14007e8f0(&local_50);
|
||||
goto LAB_1400c7597;
|
||||
}
|
||||
iVar3._0_1_ = param_1[2].e_magic[0];
|
||||
iVar3._1_1_ = param_1[2].e_magic[1];
|
||||
iVar3._2_2_ = param_1[2].e_cblp;
|
||||
if (3 < iVar3) goto LAB_1400c7597;
|
||||
FUN_14003e7c0(uVar20,lVar22,param_3,param_4);
|
||||
local_res8 = (undefined **)PTR_DAT_14016f010;
|
||||
uVar10 = FUN_14003e620(L"close socket completion");
|
||||
if ((local_res8 != (undefined **)0x0) &&
|
||||
(uVar25 = 0, local_res8 != (undefined **)PTR_DAT_14016f010)) {
|
||||
uVar25 = (ulonglong)*(uint *)(local_res8 + -1);
|
||||
}
|
||||
uVar11 = uVar10;
|
||||
if ((((int)uVar10 <= (int)uVar25) && (uVar11 = uVar26, local_res8 != (undefined **)0x0)) &&
|
||||
(local_res8 != (undefined **)PTR_DAT_14016f010)) {
|
||||
uVar11 = *(uint *)(local_res8 + -1);
|
||||
}
|
||||
uVar29 = 1;
|
||||
if (1 < (int)uVar11) {
|
||||
uVar29 = uVar11;
|
||||
}
|
||||
uVar11 = uVar26;
|
||||
if ((local_res8 != (undefined **)0x0) && (local_res8 != (undefined **)PTR_DAT_14016f010)) {
|
||||
uVar11 = *(uint *)(local_res8 + -1);
|
||||
}
|
||||
if ((int)uVar11 < (int)uVar29) {
|
||||
if (local_res8 == (undefined **)0x0) {
|
||||
local_res8 = (undefined **)PTR_DAT_14016f010;
|
||||
}
|
||||
if ((int)uVar29 < 0) {
|
||||
/* WARNING: Subroutine does not return */
|
||||
FUN_14003dec0();
|
||||
}
|
||||
if (uVar29 == 0) {
|
||||
FUN_140002190((longlong *)&local_res8,PTR_DAT_14016f010,uVar25,param_4);
|
||||
}
|
||||
else {
|
||||
uVar11 = uVar26;
|
||||
if ((local_res8 != (undefined **)0x0) && (local_res8 != (undefined **)PTR_DAT_14016f010)) {
|
||||
uVar11 = *(uint *)(local_res8 + -1);
|
||||
}
|
||||
if (uVar29 != uVar11) {
|
||||
puVar15 = (uint *)FUN_14003e840((longlong)(int)uVar29 * 2 + 10);
|
||||
if (puVar15 != (uint *)0x0) {
|
||||
*puVar15 = 0;
|
||||
puVar15[1] = 1;
|
||||
}
|
||||
*puVar15 = uVar29;
|
||||
uVar11 = uVar26;
|
||||
if ((local_res8 != (undefined **)0x0) && (local_res8 != (undefined **)PTR_DAT_14016f010)) {
|
||||
uVar11 = *(uint *)(local_res8 + -1);
|
||||
}
|
||||
ppuVar21 = (undefined **)PTR_DAT_14016f010;
|
||||
if ((int)uVar29 < (int)uVar11) {
|
||||
LAB_1400c72ec:
|
||||
if (local_res8 != (undefined **)0x0) {
|
||||
ppuVar21 = local_res8;
|
||||
}
|
||||
}
|
||||
else {
|
||||
uVar29 = uVar26;
|
||||
if (local_res8 != (undefined **)0x0) {
|
||||
if (local_res8 != (undefined **)PTR_DAT_14016f010) {
|
||||
uVar29 = *(uint *)(local_res8 + -1);
|
||||
}
|
||||
goto LAB_1400c72ec;
|
||||
}
|
||||
}
|
||||
uVar20 = (ulonglong)uVar29;
|
||||
FUN_14003e650(puVar15 + 2,ppuVar21,uVar29);
|
||||
FUN_140002190((longlong *)&local_res8,ppuVar21,uVar20,param_4);
|
||||
local_res8 = (undefined **)(puVar15 + 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
FUN_140001df0((longlong *)&local_res8);
|
||||
ppuVar21 = local_res8;
|
||||
if (local_res8 == (undefined **)0x0) {
|
||||
ppuVar21 = (undefined **)PTR_DAT_14016f010;
|
||||
}
|
||||
FUN_14003e650(ppuVar21,L"close socket completion",uVar10);
|
||||
ppuVar21 = local_res8;
|
||||
if (local_res8 == (undefined **)0x0) {
|
||||
ppuVar21 = (undefined **)PTR_DAT_14016f010;
|
||||
}
|
||||
uVar10 = FUN_14003e620((short *)ppuVar21);
|
||||
uVar26 = uVar12;
|
||||
if (0 < (int)uVar10) {
|
||||
uVar26 = uVar10;
|
||||
}
|
||||
uVar10 = uVar12;
|
||||
if ((local_res8 != (undefined **)0x0) && (local_res8 != (undefined **)PTR_DAT_14016f010)) {
|
||||
uVar10 = *(uint *)(local_res8 + -1);
|
||||
}
|
||||
if (((int)uVar26 < (int)uVar10) || (uVar26 = uVar12, local_res8 == (undefined **)0x0)) {
|
||||
LAB_1400c737f:
|
||||
if (((local_res8 != (undefined **)PTR_DAT_14016f010) && (local_res8 != (undefined **)0x0)) &&
|
||||
(local_res8 + -1 != (undefined **)0x0)) {
|
||||
*(uint *)(local_res8 + -1) = uVar26;
|
||||
*(undefined2 *)((longlong)local_res8 + (longlong)(int)uVar26 * 2) = 0;
|
||||
}
|
||||
}
|
||||
else if (local_res8 != (undefined **)PTR_DAT_14016f010) {
|
||||
uVar26 = *(uint *)(local_res8 + -1);
|
||||
goto LAB_1400c737f;
|
||||
}
|
||||
param_4 = &local_res8;
|
||||
lVar22 = 0xb;
|
||||
param_3 = (undefined **)0x3;
|
||||
plVar19 = *(longlong **)¶m_1[2].e_cparhdr;
|
||||
FUN_1400b4a80(plVar19,0xb,(undefined *)0x3,(longlong **)param_4);
|
||||
ppuVar21 = local_res8;
|
||||
if (((local_res8 != (undefined **)0x0) && (local_res8 != (undefined **)PTR_DAT_14016f010)) &&
|
||||
(ppuVar1 = local_res8 + -1, ppuVar1 != (undefined **)0x0)) {
|
||||
piVar16 = (int *)FUN_14003e7c0(plVar19,lVar22,param_3,param_4);
|
||||
FUN_14003d040(piVar16);
|
||||
puVar15 = (uint *)((longlong)ppuVar21 + -4);
|
||||
*puVar15 = *puVar15 - 1;
|
||||
if (*puVar15 == 0) {
|
||||
FUN_14003e8b0(ppuVar1);
|
||||
}
|
||||
FUN_14003d0d0((longlong)piVar16);
|
||||
}
|
||||
local_res8 = (undefined **)PTR_DAT_14016f010;
|
||||
iVar4._0_1_ = param_1[2].e_magic[0];
|
||||
iVar4._1_1_ = param_1[2].e_magic[1];
|
||||
iVar4._2_2_ = param_1[2].e_cblp;
|
||||
if (iVar4 < 4) {
|
||||
param_1->e_program[0] = 0;
|
||||
param_1->e_program[1] = 0;
|
||||
param_1->e_program[2] = 0;
|
||||
param_1->e_program[3] = 0;
|
||||
param_1[2].e_magic[0] = '\x04';
|
||||
param_1[2].e_magic[1] = '\0';
|
||||
param_1[2].e_cblp = 0;
|
||||
uVar30 = (**(code **)(*(longlong *)(*(longlong *)¶m_1[2].e_cparhdr + 0x70) + 0x1c0))();
|
||||
param_1[1].e_magic[0] = (char)uVar30;
|
||||
param_1[1].e_magic[1] = (char)((ulonglong)uVar30 >> 8);
|
||||
param_1[1].e_cblp = (short)((ulonglong)uVar30 >> 0x10);
|
||||
param_1[1].e_cp = (short)((ulonglong)uVar30 >> 0x20);
|
||||
param_1[1].e_crlc = (short)((ulonglong)uVar30 >> 0x30);
|
||||
param_1[1].e_program[0] = 0;
|
||||
}
|
||||
LAB_1400c7597:
|
||||
lVar18 = 0;
|
||||
plVar19 = *(longlong **)(*(longlong *)¶m_1[2].e_cparhdr + 0x5d0);
|
||||
if (plVar19 != (longlong *)0x0) {
|
||||
lVar18 = *plVar19;
|
||||
}
|
||||
if (*(int *)(lVar18 + 0x100) < 4) {
|
||||
lVar7._0_2_ = param_1[2].e_cparhdr;
|
||||
lVar7._2_2_ = param_1[2].e_minalloc;
|
||||
lVar7._4_2_ = param_1[2].e_maxalloc;
|
||||
lVar7._6_2_ = param_1[2].e_ss;
|
||||
lVar18 = FUN_14009c0f0(lVar7);
|
||||
uVar12 = FUN_1400ce810(lVar18,lVar22,param_3,param_4);
|
||||
if (uVar12 != 0) {
|
||||
FUN_14003e7c0(lVar18,lVar22,param_3,param_4);
|
||||
local_res18 = (longlong *)PTR_DAT_14016f010;
|
||||
FUN_140029b80((longlong *)&local_res18,L"%d Tcp issueRecv Failed SocketErrorCode",
|
||||
(ulonglong)uVar12,param_4);
|
||||
pplVar28 = &local_res18;
|
||||
uVar30 = 3;
|
||||
uVar27 = 1;
|
||||
plVar19 = *(longlong **)¶m_1[2].e_cparhdr;
|
||||
FUN_1400b4a80(plVar19,3,(undefined *)0x1,pplVar28);
|
||||
iVar5._0_1_ = param_1[2].e_magic[0];
|
||||
iVar5._1_1_ = param_1[2].e_magic[1];
|
||||
iVar5._2_2_ = param_1[2].e_cblp;
|
||||
if (iVar5 < 4) {
|
||||
param_1->e_program[0] = 0;
|
||||
param_1->e_program[1] = 0;
|
||||
param_1->e_program[2] = 0;
|
||||
param_1->e_program[3] = 0;
|
||||
param_1[2].e_magic[0] = '\x04';
|
||||
param_1[2].e_magic[1] = '\0';
|
||||
param_1[2].e_cblp = 0;
|
||||
plVar19 = (longlong *)(*(longlong *)¶m_1[2].e_cparhdr + 0x70);
|
||||
uVar31 = (**(code **)(*plVar19 + 0x1c0))();
|
||||
param_1[1].e_magic[0] = (char)uVar31;
|
||||
param_1[1].e_magic[1] = (char)((ulonglong)uVar31 >> 8);
|
||||
param_1[1].e_cblp = (short)((ulonglong)uVar31 >> 0x10);
|
||||
param_1[1].e_cp = (short)((ulonglong)uVar31 >> 0x20);
|
||||
param_1[1].e_crlc = (short)((ulonglong)uVar31 >> 0x30);
|
||||
param_1[1].e_program[0] = 0;
|
||||
}
|
||||
plVar8 = local_res18;
|
||||
if (((local_res18 != (longlong *)0x0) && (local_res18 != (longlong *)PTR_DAT_14016f010)) &&
|
||||
(plVar2 = local_res18 + -1, plVar2 != (longlong *)0x0)) {
|
||||
piVar14 = (int *)FUN_14003e7c0(plVar19,uVar30,uVar27,pplVar28);
|
||||
FUN_14003d040(piVar14);
|
||||
piVar16 = (int *)((longlong)plVar8 + -4);
|
||||
*piVar16 = *piVar16 + -1;
|
||||
if (*piVar16 == 0) {
|
||||
FUN_14003e8b0(plVar2);
|
||||
}
|
||||
FUN_14003d0d0((longlong)piVar14);
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue