add agent manager release decomp
This commit is contained in:
parent
31ff800b2a
commit
fac6117145
7019 changed files with 254032 additions and 5 deletions
98
decomp/AgentManager_Release_x64/full/functions/0x1400a7010.c
Normal file
98
decomp/AgentManager_Release_x64/full/functions/0x1400a7010.c
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
|
||||
* Ghidra 12.1.2 decompiler output for 0x1400a7010 FUN_1400a7010
|
||||
* Pseudocode, not original source. */
|
||||
|
||||
ulonglong FUN_1400a7010(longlong param_1,undefined8 param_2,undefined **param_3,undefined8 param_4)
|
||||
|
||||
{
|
||||
int iVar1;
|
||||
longlong *plVar2;
|
||||
ulonglong in_RAX;
|
||||
undefined8 *puVar3;
|
||||
longlong lVar4;
|
||||
undefined8 uVar5;
|
||||
ulonglong uVar6;
|
||||
longlong *plVar7;
|
||||
longlong lVar8;
|
||||
undefined ***pppuVar9;
|
||||
longlong lVar10;
|
||||
longlong *local_res10;
|
||||
longlong local_res18 [2];
|
||||
undefined **local_38;
|
||||
int local_30;
|
||||
undefined2 local_2c;
|
||||
|
||||
if (*(char *)(param_1 + 0x1528) == '\0') {
|
||||
plVar7 = *(longlong **)(param_1 + 0x1520);
|
||||
if ((plVar7 == (longlong *)0x0) || (*plVar7 == 0)) {
|
||||
local_res10 = operator_new(0x1c0);
|
||||
if (local_res10 == (longlong *)0x0) {
|
||||
puVar3 = (undefined8 *)0x0;
|
||||
}
|
||||
else {
|
||||
param_3 = (undefined **)0x0;
|
||||
puVar3 = FUN_1400d32e0(local_res10,param_1,0,param_4);
|
||||
}
|
||||
lVar10 = 0;
|
||||
if ((puVar3 == (undefined8 *)0x0) || (puVar3 + 8 == (undefined8 *)0x0)) {
|
||||
local_res10 = (longlong *)0x0;
|
||||
}
|
||||
else {
|
||||
local_res10 = (longlong *)FUN_14003e840(0x10);
|
||||
local_res10[1] = 1;
|
||||
*local_res10 = (longlong)(puVar3 + 8);
|
||||
}
|
||||
plVar7 = local_res10;
|
||||
FUN_14009d860((longlong *)(param_1 + 0x1520),(longlong *)&local_res10);
|
||||
plVar2 = local_res10;
|
||||
if (plVar7 != (longlong *)0x0) {
|
||||
plVar7 = plVar7 + 1;
|
||||
*plVar7 = *plVar7 + -1;
|
||||
if (*plVar7 == 0) {
|
||||
puVar3 = (undefined8 *)*local_res10;
|
||||
if (puVar3 != (undefined8 *)0x0) {
|
||||
(**(code **)*puVar3)(puVar3,1);
|
||||
}
|
||||
FUN_14003e8b0(plVar2);
|
||||
}
|
||||
}
|
||||
lVar4 = lVar10;
|
||||
if ((*(longlong **)(param_1 + 0x15d8) != (longlong *)0x0) &&
|
||||
(lVar8 = **(longlong **)(param_1 + 0x15d8), lVar8 != 0)) {
|
||||
lVar4 = lVar8 + -0x40;
|
||||
}
|
||||
iVar1 = *(int *)(lVar4 + 0x118);
|
||||
if ((iVar1 == 0) || (iVar1 == -1)) {
|
||||
FUN_14003e110(
|
||||
L"UDP 소켓을 생성하기 전에 TCP 연결이 이미 되어있는 상태이어야 하는데!"
|
||||
);
|
||||
}
|
||||
local_38 = Proud::AddrPort::vftable;
|
||||
local_2c = 0;
|
||||
if ((*(longlong **)(param_1 + 0x1520) == (longlong *)0x0) ||
|
||||
(lVar4 = **(longlong **)(param_1 + 0x1520), lVar8 = lVar4 + -0x40, lVar4 == 0)) {
|
||||
lVar8 = lVar10;
|
||||
}
|
||||
pppuVar9 = &local_38;
|
||||
local_30 = iVar1;
|
||||
uVar5 = FUN_1400d36c0(lVar8,(longlong)pppuVar9,(longlong *)param_3,param_4);
|
||||
if ((char)uVar5 == '\0') {
|
||||
local_res18[0] = 0;
|
||||
uVar6 = FUN_14009d860((longlong *)(param_1 + 0x1520),local_res18);
|
||||
*(undefined1 *)(param_1 + 0x1528) = 1;
|
||||
return uVar6 & 0xffffffffffffff00;
|
||||
}
|
||||
if ((*(longlong **)(param_1 + 0x1520) != (longlong *)0x0) &&
|
||||
(lVar4 = **(longlong **)(param_1 + 0x1520), lVar4 != 0)) {
|
||||
lVar10 = lVar4 + -0x40;
|
||||
}
|
||||
plVar7 = (longlong *)FUN_1400d2cc0(lVar10,pppuVar9,param_3,param_4);
|
||||
}
|
||||
uVar6 = CONCAT71((int7)((ulonglong)plVar7 >> 8),1);
|
||||
}
|
||||
else {
|
||||
uVar6 = in_RAX & 0xffffffffffffff00;
|
||||
}
|
||||
return uVar6;
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue