172 lines
6 KiB
C
172 lines
6 KiB
C
/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
|
|
* Ghidra 12.1.2 decompiler output for 0x14006f540 FUN_14006f540
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
/* WARNING: Removing unreachable block (ram,0x00014006f8c1) */
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
void FUN_14006f540(longlong param_1,longlong *param_2,undefined8 *param_3,undefined8 param_4)
|
|
|
|
{
|
|
double dVar1;
|
|
uint uVar2;
|
|
longlong lVar3;
|
|
longlong lVar4;
|
|
undefined8 uVar5;
|
|
longlong lVar6;
|
|
longlong lVar7;
|
|
double dVar8;
|
|
undefined1 auStack_d98 [32];
|
|
int local_d78 [2];
|
|
longlong local_d70;
|
|
longlong local_d68;
|
|
uint local_d60;
|
|
int local_d5c;
|
|
undefined4 local_d50 [2];
|
|
undefined8 local_d48;
|
|
undefined1 local_d40;
|
|
undefined4 local_d3c;
|
|
undefined1 local_d38;
|
|
undefined1 local_d37;
|
|
longlong local_d30;
|
|
uint uStack_d28;
|
|
undefined4 uStack_d24;
|
|
longlong *local_d20;
|
|
undefined8 local_d18;
|
|
exception local_d10 [72];
|
|
longlong local_cc8;
|
|
undefined8 uStack_cc0;
|
|
longlong *local_48;
|
|
undefined4 local_40;
|
|
int local_3c;
|
|
ulonglong local_38;
|
|
|
|
local_d18 = 0xfffffffffffffffe;
|
|
local_38 = DAT_1401555a0 ^ (ulonglong)auStack_d98;
|
|
(**(code **)(*(longlong *)(param_1 + 0x78) + 0x10))();
|
|
lVar7 = 0;
|
|
lVar3 = lVar7;
|
|
if (*(longlong *)(param_1 + 0x1670) != 0) {
|
|
lVar3 = *(longlong *)(param_1 + 0x1660);
|
|
}
|
|
do {
|
|
lVar6 = lVar3;
|
|
if (lVar6 == 0) {
|
|
return;
|
|
}
|
|
if ((((*(longlong **)(lVar6 + 8) != (longlong *)0x0) &&
|
|
(lVar3 = **(longlong **)(lVar6 + 8), lVar3 != 0)) && (*(char *)(lVar3 + 0x684) == '\0')) &&
|
|
(*(int *)(lVar3 + 0x56c) != 1)) {
|
|
lVar4 = lVar7;
|
|
if (*(longlong *)(param_1 + 0x5d8) != 0) {
|
|
lVar4 = *(longlong *)(*(longlong *)(param_1 + 0x5d8) + 0x38);
|
|
}
|
|
dVar8 = *(double *)(lVar3 + 0x148) - *(double *)(lVar4 + 0x100);
|
|
*(double *)(lVar3 + 0x148) = dVar8;
|
|
if (dVar8 <= 0.0) {
|
|
*(undefined8 *)(lVar3 + 0x148) = DAT_1401550f0;
|
|
uVar5 = (**(code **)(*(longlong *)(param_1 + 0x70) + 0x1c0))(param_1 + 0x70);
|
|
*(undefined8 *)(lVar3 + 0x80) = uVar5;
|
|
if (*(char *)(lVar3 + 0x608) == '\0') {
|
|
FUN_1400806d0(local_d78);
|
|
FUN_1400801a0((longlong)local_d78,param_2,(SIZE_T)param_3,param_4);
|
|
FUN_140080830(local_d78,0x800,(SIZE_T)param_3,param_4);
|
|
uVar5 = 0;
|
|
FUN_140080830(local_d78,0,(SIZE_T)param_3,param_4);
|
|
uVar5 = CONCAT71((int7)((ulonglong)uVar5 >> 8),0x20);
|
|
FUN_14001ba80((longlong)local_d78,uVar5,(SIZE_T)param_3,param_4);
|
|
dVar8 = FUN_14003a420((char *)(param_1 + 0x1620));
|
|
FUN_1400220c0((longlong)local_d78,dVar8,(SIZE_T)param_3,param_4);
|
|
local_3c = 200;
|
|
local_40 = 0;
|
|
local_48 = &local_cc8;
|
|
if (local_d70 == 0) {
|
|
uVar2 = local_d60;
|
|
if (local_d68 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_140095370(0,uVar5,param_3,param_4);
|
|
}
|
|
}
|
|
else {
|
|
uVar2 = *(uint *)(local_d70 + 0x18);
|
|
}
|
|
lVar4 = local_d68;
|
|
if (local_d68 == 0) {
|
|
if (local_d70 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_140095370(0,(ulonglong)uVar2,param_3,param_4);
|
|
}
|
|
lVar4 = lVar7;
|
|
if (*(int *)(local_d70 + 0x18) != 0) {
|
|
lVar4 = *(longlong *)(local_d70 + 0x10);
|
|
}
|
|
}
|
|
local_40 = 1;
|
|
uStack_cc0 = CONCAT44(uStack_d24,uVar2);
|
|
local_d50[0] = 0;
|
|
local_d48 = 0;
|
|
local_d40 = 1;
|
|
local_d3c = 0xffffffff;
|
|
local_d38 = 1;
|
|
local_d37 = DAT_1401551cc;
|
|
param_3 = (undefined8 *)local_d50;
|
|
param_2 = &local_cc8;
|
|
local_d30 = lVar4;
|
|
uStack_d28 = uVar2;
|
|
local_cc8 = lVar4;
|
|
FUN_1400b34c0((longlong *)(lVar3 + 0x668),(longlong)param_2,param_3);
|
|
if (local_48 == (longlong *)0x0) {
|
|
FUN_14002f1e0(local_d10,(wchar_t *)PTR_u_ArrayWithExternalBuffer_is_unini_1401569a0,
|
|
param_3,param_4);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_d10,(ThrowInfo *)&DAT_140151b88);
|
|
}
|
|
if (local_3c < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14002f590();
|
|
}
|
|
local_40 = 0;
|
|
local_d20 = &local_d70;
|
|
FUN_140095270(&local_d70);
|
|
if (local_d68 != 0) {
|
|
if (local_d5c < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14002f590();
|
|
}
|
|
local_d60 = 0;
|
|
}
|
|
}
|
|
else {
|
|
dVar8 = (double)(**(code **)(*(longlong *)(param_1 + 0x70) + 0x1c0))(param_1 + 0x70);
|
|
dVar8 = dVar8 - *(double *)(lVar3 + 0xc0);
|
|
if (0.0 < dVar8) {
|
|
*(double *)(lVar3 + 0x140) = dVar8;
|
|
}
|
|
uVar5 = (**(code **)(*(longlong *)(param_1 + 0x70) + 0x1c0))(param_1 + 0x70);
|
|
*(undefined8 *)(lVar3 + 0xc0) = uVar5;
|
|
*(int *)(lVar3 + 0x100) = *(int *)(lVar3 + 0x100) + 1;
|
|
*(undefined8 *)(lVar3 + 0x150) = 0;
|
|
dVar8 = *(double *)(param_1 + 0x4f8) + *(double *)(lVar3 + 0x60);
|
|
*(double *)(lVar3 + 0x158) = dVar8;
|
|
if (*(char *)(lVar3 + 0x618) != '\0') {
|
|
*(undefined8 *)(lVar3 + 0x50) = 0;
|
|
*(undefined1 *)(lVar3 + 0x618) = 0;
|
|
}
|
|
dVar1 = *(double *)(lVar3 + 0x50);
|
|
if (dVar1 <= 0.0) {
|
|
*(undefined8 *)(lVar3 + 0x50) = *(undefined8 *)(lVar3 + 0x158);
|
|
}
|
|
else {
|
|
*(double *)(lVar3 + 0x50) = (dVar8 - dVar1) * _DAT_140155108 + dVar1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
lVar3 = lVar7;
|
|
if (lVar6 != 0) {
|
|
lVar3 = *(longlong *)(lVar6 + 0x10);
|
|
}
|
|
} while( true );
|
|
}
|
|
|