/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x1400c8de0 FUN_1400c8de0 * Pseudocode, not original source. */ void FUN_1400c8de0(char *param_1,uint param_2) { ulonglong uVar1; undefined8 uVar2; ulonglong uVar3; ulonglong uVar4; void *_Dst; longlong lVar5; longlong lVar6; ulonglong uVar7; ulonglong uVar8; int iVar9; ulonglong uVar10; ulonglong uVar11; float fVar12; float fVar13; if (param_2 == 0) { param_2 = FUN_14009b970((longlong)param_1,*(longlong *)(param_1 + 0x20)); } if (param_2 != *(uint *)(param_1 + 0x28)) { if (*(longlong *)(param_1 + 8) == 0) { lVar5 = 0; *(uint *)(param_1 + 0x28) = param_2; fVar13 = (float)param_2 * *(float *)(param_1 + 0x34); if ((9.223372e+18 < fVar13) && (fVar13 = fVar13 - 9.223372e+18, fVar13 < 9.223372e+18)) { lVar5 = -0x8000000000000000; } fVar12 = (float)param_2 * *(float *)(param_1 + 0x30); lVar6 = 0; *(longlong *)(param_1 + 0x38) = (longlong)fVar13 + lVar5; if ((9.223372e+18 < fVar12) && (fVar12 = fVar12 - 9.223372e+18, fVar12 < 9.223372e+18)) { lVar6 = -0x8000000000000000; } *(longlong *)(param_1 + 0x40) = (longlong)fVar12 + lVar6; if ((ulonglong)((longlong)fVar12 + lVar6) < 0x11) { param_1[0x40] = '\0'; param_1[0x41] = '\0'; param_1[0x42] = '\0'; param_1[0x43] = '\0'; param_1[0x44] = '\0'; param_1[0x45] = '\0'; param_1[0x46] = '\0'; param_1[0x47] = '\0'; return; } } else { _Dst = (void *)FUN_14003e840((ulonglong)param_2 << 3); if (_Dst == (void *)0x0) { /* WARNING: Subroutine does not return */ FUN_1400050d0(0x8007000e); } memset(_Dst,0,(ulonglong)param_2 << 3); uVar7 = 0; uVar4 = *(ulonglong *)(param_1 + 0x10); uVar10 = uVar7; uVar11 = uVar7; while (uVar4 != 0) { uVar1 = *(ulonglong *)(uVar4 + 0x10); uVar3 = (ulonglong)*(uint *)(uVar4 + 0x20) % (ulonglong)param_2; lVar5 = *(longlong *)((longlong)_Dst + uVar3 * 8); iVar9 = (int)uVar10; if (iVar9 == 0) { *(undefined8 *)(uVar4 + 0x18) = 0; *(undefined8 *)(uVar4 + 0x10) = 0; uVar10 = 1; uVar7 = uVar4; uVar11 = uVar4; } else if (lVar5 == 0) { *(undefined8 *)(uVar4 + 0x18) = 0; *(ulonglong *)(uVar4 + 0x10) = uVar7; if (uVar7 != 0) { *(ulonglong *)(uVar7 + 0x18) = uVar4; } uVar10 = (ulonglong)(iVar9 + 1); uVar7 = uVar4; } else { uVar8 = uVar4; if (*(longlong *)(lVar5 + 0x18) != 0) { *(ulonglong *)(*(longlong *)(lVar5 + 0x18) + 0x10) = uVar4; uVar8 = uVar7; } uVar2 = *(undefined8 *)(lVar5 + 0x18); *(longlong *)(uVar4 + 0x10) = lVar5; uVar10 = (ulonglong)(iVar9 + 1); *(undefined8 *)(uVar4 + 0x18) = uVar2; *(ulonglong *)(lVar5 + 0x18) = uVar4; uVar7 = uVar8; } *(ulonglong *)((longlong)_Dst + uVar3 * 8) = uVar4; uVar4 = uVar1; } FUN_14003e8b0(*(LPVOID *)(param_1 + 8)); *(void **)(param_1 + 8) = _Dst; *(uint *)(param_1 + 0x28) = param_2; *(ulonglong *)(param_1 + 0x10) = uVar7; *(ulonglong *)(param_1 + 0x18) = uVar11; FUN_1400c8cb0(param_1); lVar5 = 0; fVar13 = (float)*(uint *)(param_1 + 0x28) * *(float *)(param_1 + 0x34); if ((9.223372e+18 < fVar13) && (fVar13 = fVar13 - 9.223372e+18, fVar13 < 9.223372e+18)) { lVar5 = -0x8000000000000000; } fVar12 = (float)*(uint *)(param_1 + 0x28) * *(float *)(param_1 + 0x30); lVar6 = 0; *(longlong *)(param_1 + 0x38) = (longlong)fVar13 + lVar5; if ((9.223372e+18 < fVar12) && (fVar12 = fVar12 - 9.223372e+18, fVar12 < 9.223372e+18)) { lVar6 = -0x8000000000000000; } *(longlong *)(param_1 + 0x40) = (longlong)fVar12 + lVar6; if ((ulonglong)((longlong)fVar12 + lVar6) < 0x11) { param_1[0x40] = '\0'; param_1[0x41] = '\0'; param_1[0x42] = '\0'; param_1[0x43] = '\0'; param_1[0x44] = '\0'; param_1[0x45] = '\0'; param_1[0x46] = '\0'; param_1[0x47] = '\0'; } } } return; }