add agent manager release decomp
This commit is contained in:
parent
31ff800b2a
commit
fac6117145
7019 changed files with 254032 additions and 5 deletions
271
decomp/AgentManager_Release_x64/full/functions/0x14005de50.c
Normal file
271
decomp/AgentManager_Release_x64/full/functions/0x14005de50.c
Normal file
|
|
@ -0,0 +1,271 @@
|
|||
/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
|
||||
* Ghidra 12.1.2 decompiler output for 0x14005de50 FUN_14005de50
|
||||
* Pseudocode, not original source. */
|
||||
|
||||
/* WARNING: Removing unreachable block (ram,0x00014005e433) */
|
||||
/* WARNING: Removing unreachable block (ram,0x00014005e43b) */
|
||||
/* WARNING: Removing unreachable block (ram,0x00014005e43f) */
|
||||
/* WARNING: Removing unreachable block (ram,0x00014005e449) */
|
||||
|
||||
void FUN_14005de50(longlong param_1,int param_2,int param_3)
|
||||
|
||||
{
|
||||
int *piVar1;
|
||||
int iVar2;
|
||||
int iVar3;
|
||||
undefined4 uVar4;
|
||||
longlong *plVar5;
|
||||
void *pvVar6;
|
||||
ulonglong uVar7;
|
||||
int iVar8;
|
||||
longlong lVar9;
|
||||
ulonglong uVar10;
|
||||
int iVar11;
|
||||
longlong lVar12;
|
||||
longlong lVar13;
|
||||
int iVar14;
|
||||
int local_res10 [2];
|
||||
int local_res18 [2];
|
||||
char *local_res20;
|
||||
longlong *local_128;
|
||||
void *local_120;
|
||||
ulonglong local_118;
|
||||
longlong local_110;
|
||||
longlong local_108;
|
||||
longlong *local_f8;
|
||||
undefined **local_f0 [3];
|
||||
undefined **local_d8 [3];
|
||||
undefined **local_c0 [3];
|
||||
undefined8 local_a8;
|
||||
undefined **local_a0 [3];
|
||||
undefined **local_88 [3];
|
||||
undefined8 local_70 [3];
|
||||
undefined8 local_58 [4];
|
||||
|
||||
local_a8 = 0xfffffffffffffffe;
|
||||
if (1 < param_2 - param_3) {
|
||||
std::_Container_base12::_Container_base12((_Container_base12 *)&local_128);
|
||||
local_128 = operator_new(0x10);
|
||||
if (local_128 == (longlong *)0x0) {
|
||||
local_f8 = local_128;
|
||||
std::exception::exception((exception *)local_d8,(char **)&local_f8);
|
||||
local_d8[0] = std::bad_alloc::vftable;
|
||||
/* WARNING: Subroutine does not return */
|
||||
_CxxThrowException(local_d8,(ThrowInfo *)&DAT_14016c158);
|
||||
}
|
||||
*local_128 = 0;
|
||||
local_128[1] = 0;
|
||||
*local_128 = (longlong)&local_128;
|
||||
local_120 = (void *)0x0;
|
||||
local_118 = 0;
|
||||
local_110 = 0;
|
||||
local_108 = 0;
|
||||
local_res18[0] = param_2 + -1;
|
||||
local_res10[0] = param_3;
|
||||
FUN_140051a40((_Container_base12 *)&local_128,local_res10);
|
||||
FUN_140051a40((_Container_base12 *)&local_128,local_res18);
|
||||
lVar9 = local_108;
|
||||
while (lVar13 = 0, uVar7 = local_118, lVar9 != 0) {
|
||||
plVar5 = FUN_14004ea90(&local_128,local_70);
|
||||
plVar5 = FUN_140051b30(plVar5,local_58,1);
|
||||
lVar12 = lVar13;
|
||||
if ((longlong *)*plVar5 != (longlong *)0x0) {
|
||||
lVar12 = *(longlong *)*plVar5;
|
||||
}
|
||||
uVar7 = (ulonglong)plVar5[2] >> 2;
|
||||
if (*(ulonglong *)(lVar12 + 0x10) <= uVar7) {
|
||||
uVar7 = uVar7 - *(ulonglong *)(lVar12 + 0x10);
|
||||
}
|
||||
iVar14 = *(int *)(*(longlong *)(*(longlong *)(lVar12 + 8) + uVar7 * 8) +
|
||||
(ulonglong)((uint)plVar5[2] & 3) * 4);
|
||||
if ((lVar9 != 0) && (lVar9 = lVar9 + -1, local_108 = lVar9, lVar9 == 0)) {
|
||||
local_110 = lVar13;
|
||||
}
|
||||
local_res10[0] = iVar14;
|
||||
plVar5 = FUN_14004ea90(&local_128,local_58);
|
||||
plVar5 = FUN_140051b30(plVar5,local_70,1);
|
||||
lVar12 = lVar13;
|
||||
if ((longlong *)*plVar5 != (longlong *)0x0) {
|
||||
lVar12 = *(longlong *)*plVar5;
|
||||
}
|
||||
uVar7 = (ulonglong)plVar5[2] >> 2;
|
||||
if (*(ulonglong *)(lVar12 + 0x10) <= uVar7) {
|
||||
uVar7 = uVar7 - *(ulonglong *)(lVar12 + 0x10);
|
||||
}
|
||||
iVar2 = *(int *)(*(longlong *)(*(longlong *)(lVar12 + 8) + uVar7 * 8) +
|
||||
(ulonglong)((uint)plVar5[2] & 3) * 4);
|
||||
lVar12 = (longlong)iVar2;
|
||||
if ((lVar9 != 0) && (lVar9 = lVar9 + -1, local_108 = lVar9, lVar9 == 0)) {
|
||||
local_110 = lVar13;
|
||||
}
|
||||
iVar11 = iVar2 + 1;
|
||||
iVar3 = *(int *)(param_1 + lVar12 * 4);
|
||||
if (iVar11 <= iVar14) {
|
||||
iVar8 = iVar14;
|
||||
if ((iVar11 < iVar14) && (lVar9 = local_108, iVar11 <= iVar14)) {
|
||||
LAB_14005e017:
|
||||
do {
|
||||
if (iVar3 < *(int *)(param_1 + (longlong)iVar11 * 4)) {
|
||||
if (iVar8 < iVar11) break;
|
||||
do {
|
||||
if (*(int *)(param_1 + (longlong)iVar8 * 4) < iVar3) {
|
||||
if (iVar8 < iVar11) goto LAB_14005e065;
|
||||
uVar4 = *(undefined4 *)(param_1 + (longlong)iVar11 * 4);
|
||||
*(undefined4 *)(param_1 + (longlong)iVar11 * 4) =
|
||||
*(undefined4 *)(param_1 + (longlong)iVar8 * 4);
|
||||
*(undefined4 *)(param_1 + (longlong)iVar8 * 4) = uVar4;
|
||||
break;
|
||||
}
|
||||
iVar8 = iVar8 + -1;
|
||||
} while (iVar11 <= iVar8);
|
||||
}
|
||||
else {
|
||||
iVar11 = iVar11 + 1;
|
||||
if (iVar11 <= iVar8) goto LAB_14005e017;
|
||||
}
|
||||
} while (iVar11 < iVar8);
|
||||
}
|
||||
LAB_14005e065:
|
||||
if (iVar2 <= iVar8) {
|
||||
iVar3 = *(int *)(param_1 + (longlong)iVar8 * 4);
|
||||
if (iVar3 < *(int *)(param_1 + lVar12 * 4)) {
|
||||
uVar4 = *(undefined4 *)(param_1 + lVar12 * 4);
|
||||
*(int *)(param_1 + lVar12 * 4) = iVar3;
|
||||
*(undefined4 *)(param_1 + (longlong)iVar8 * 4) = uVar4;
|
||||
lVar9 = local_108;
|
||||
}
|
||||
if (iVar2 < iVar8) {
|
||||
std::_Container_base12::_Orphan_all((_Container_base12 *)&local_128);
|
||||
if ((((int)local_110 + (int)local_108 & 3U) == 0) && (local_118 <= local_108 + 4U >> 2))
|
||||
{
|
||||
FUN_14004eab0((longlong)&local_128,1);
|
||||
}
|
||||
uVar7 = local_108 + local_110;
|
||||
uVar10 = uVar7 >> 2;
|
||||
if (local_118 <= uVar10) {
|
||||
uVar10 = uVar10 - local_118;
|
||||
}
|
||||
if (*(longlong *)((longlong)local_120 + uVar10 * 8) == 0) {
|
||||
pvVar6 = operator_new(0x10);
|
||||
if (pvVar6 == (void *)0x0) {
|
||||
local_res20 = (char *)0x0;
|
||||
std::exception::exception((exception *)local_a0,&local_res20);
|
||||
local_a0[0] = std::bad_alloc::vftable;
|
||||
/* WARNING: Subroutine does not return */
|
||||
_CxxThrowException(local_a0,(ThrowInfo *)&DAT_14016c158);
|
||||
}
|
||||
*(void **)((longlong)local_120 + uVar10 * 8) = pvVar6;
|
||||
}
|
||||
piVar1 = (int *)(*(longlong *)((longlong)local_120 + uVar10 * 8) +
|
||||
(ulonglong)((uint)uVar7 & 3) * 4);
|
||||
if (piVar1 != (int *)0x0) {
|
||||
*piVar1 = iVar2;
|
||||
}
|
||||
local_108 = local_108 + 1;
|
||||
std::_Container_base12::_Orphan_all((_Container_base12 *)&local_128);
|
||||
if ((((char)local_108 + (char)local_110 & 3U) == 0) &&
|
||||
(local_118 <= local_108 + 4U >> 2)) {
|
||||
FUN_14004eab0((longlong)&local_128,1);
|
||||
}
|
||||
uVar7 = local_108 + local_110;
|
||||
uVar10 = uVar7 >> 2;
|
||||
if (local_118 <= uVar10) {
|
||||
uVar10 = uVar10 - local_118;
|
||||
}
|
||||
if (*(longlong *)((longlong)local_120 + uVar10 * 8) == 0) {
|
||||
local_res20 = operator_new(0x10);
|
||||
if (local_res20 == (char *)0x0) {
|
||||
std::exception::exception((exception *)local_c0,&local_res20);
|
||||
local_c0[0] = std::bad_alloc::vftable;
|
||||
/* WARNING: Subroutine does not return */
|
||||
_CxxThrowException(local_c0,(ThrowInfo *)&DAT_14016c158);
|
||||
}
|
||||
*(char **)((longlong)local_120 + uVar10 * 8) = local_res20;
|
||||
}
|
||||
piVar1 = (int *)(*(longlong *)((longlong)local_120 + uVar10 * 8) +
|
||||
(ulonglong)((uint)uVar7 & 3) * 4);
|
||||
if (piVar1 != (int *)0x0) {
|
||||
*piVar1 = iVar8 + -1;
|
||||
}
|
||||
lVar9 = local_108 + 1;
|
||||
iVar14 = local_res10[0];
|
||||
local_108 = lVar9;
|
||||
}
|
||||
}
|
||||
if (iVar8 < iVar14) {
|
||||
std::_Container_base12::_Orphan_all((_Container_base12 *)&local_128);
|
||||
if ((((int)local_110 + (int)local_108 & 3U) == 0) && (local_118 <= local_108 + 4U >> 2)) {
|
||||
FUN_14004eab0((longlong)&local_128,1);
|
||||
}
|
||||
uVar7 = local_108 + local_110;
|
||||
uVar10 = uVar7 >> 2;
|
||||
if (local_118 <= uVar10) {
|
||||
uVar10 = uVar10 - local_118;
|
||||
}
|
||||
if (*(longlong *)((longlong)local_120 + uVar10 * 8) == 0) {
|
||||
pvVar6 = operator_new(0x10);
|
||||
if (pvVar6 == (void *)0x0) {
|
||||
local_res20 = (char *)0x0;
|
||||
std::exception::exception((exception *)local_f0,&local_res20);
|
||||
local_f0[0] = std::bad_alloc::vftable;
|
||||
/* WARNING: Subroutine does not return */
|
||||
_CxxThrowException(local_f0,(ThrowInfo *)&DAT_14016c158);
|
||||
}
|
||||
*(void **)((longlong)local_120 + uVar10 * 8) = pvVar6;
|
||||
}
|
||||
piVar1 = (int *)(*(longlong *)((longlong)local_120 + uVar10 * 8) +
|
||||
(ulonglong)((uint)uVar7 & 3) * 4);
|
||||
if (piVar1 != (int *)0x0) {
|
||||
*piVar1 = iVar8 + 1;
|
||||
}
|
||||
local_108 = local_108 + 1;
|
||||
std::_Container_base12::_Orphan_all((_Container_base12 *)&local_128);
|
||||
if ((((char)local_108 + (char)local_110 & 3U) == 0) && (local_118 <= local_108 + 4U >> 2))
|
||||
{
|
||||
FUN_14004eab0((longlong)&local_128,1);
|
||||
}
|
||||
uVar7 = local_108 + local_110;
|
||||
uVar10 = uVar7 >> 2;
|
||||
if (local_118 <= uVar10) {
|
||||
uVar10 = uVar10 - local_118;
|
||||
}
|
||||
if (*(longlong *)((longlong)local_120 + uVar10 * 8) == 0) {
|
||||
pvVar6 = operator_new(0x10);
|
||||
if (pvVar6 == (void *)0x0) {
|
||||
local_res20 = (char *)0x0;
|
||||
std::exception::exception((exception *)local_88,&local_res20);
|
||||
local_88[0] = std::bad_alloc::vftable;
|
||||
/* WARNING: Subroutine does not return */
|
||||
_CxxThrowException(local_88,(ThrowInfo *)&DAT_14016c158);
|
||||
}
|
||||
*(void **)((longlong)local_120 + uVar10 * 8) = pvVar6;
|
||||
}
|
||||
piVar1 = (int *)(*(longlong *)((longlong)local_120 + uVar10 * 8) +
|
||||
(ulonglong)((uint)uVar7 & 3) * 4);
|
||||
if (piVar1 != (int *)0x0) {
|
||||
*piVar1 = iVar14;
|
||||
}
|
||||
lVar9 = local_108 + 1;
|
||||
local_108 = lVar9;
|
||||
}
|
||||
}
|
||||
}
|
||||
while (uVar7 != 0) {
|
||||
uVar7 = uVar7 - 1;
|
||||
if (*(longlong *)((longlong)local_120 + uVar7 * 8) != 0) {
|
||||
operator_delete(*(void **)((longlong)local_120 + uVar7 * 8));
|
||||
}
|
||||
}
|
||||
if (local_120 != (void *)0x0) {
|
||||
operator_delete(local_120);
|
||||
}
|
||||
local_118 = 0;
|
||||
local_120 = (void *)0x0;
|
||||
std::_Container_base12::_Orphan_all((_Container_base12 *)&local_128);
|
||||
operator_delete(local_128);
|
||||
local_128 = (longlong *)0x0;
|
||||
std::_Container_base12::~_Container_base12((_Container_base12 *)&local_128);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue