/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x1400a4ae0 FUN_1400a4ae0 * Pseudocode, not original source. */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_1400a4ae0(longlong param_1,uint *param_2) { double dVar1; undefined8 *puVar2; undefined8 uVar3; int *piVar4; longlong *plVar5; longlong lVar6; double dVar7; double dVar8; longlong *local_res18; double local_res20; undefined **local_20; uint local_18; undefined2 local_14; uVar3 = FUN_140080600(param_2,&local_res20,8); if ((char)uVar3 != '\0') { piVar4 = (int *)(**(code **)(**(longlong **)(param_1 + 0x108) + 0x58))(); FUN_14002e6e0(piVar4); local_20 = Proud::AddrPort::vftable; local_18 = param_2[0xe]; local_14 = (undefined2)param_2[0xf]; plVar5 = FUN_14006ee80(*(longlong *)(param_1 + 0x108),&local_res18,(longlong)&local_20); lVar6 = 0; if ((longlong *)*plVar5 != (longlong *)0x0) { lVar6 = *(longlong *)*plVar5; } if ((local_res18 != (longlong *)0x0) && (local_res18[1] = local_res18[1] + -1, local_res18[1] == 0)) { puVar2 = (undefined8 *)*local_res18; if (puVar2 != (undefined8 *)0x0) { (**(code **)*puVar2)(puVar2,1); } FUN_1400302f0(local_res18); } if ((lVar6 != 0) && (*(int *)(lVar6 + 0x56c) != 1)) { dVar7 = FUN_14003a420((char *)(*(longlong *)(param_1 + 0x108) + 0x1620)); dVar8 = (dVar7 - local_res20) * 0.5; *(double *)(lVar6 + 0x158) = dVar8; dVar1 = *(double *)(lVar6 + 0x50); if (0.0 < dVar1) { dVar8 = (dVar8 - dVar1) * _DAT_140155108 + dVar1; } *(double *)(lVar6 + 0x50) = dVar8; if (0.0 < dVar7) { *(double *)(lVar6 + 0xc0) = dVar7; *(int *)(lVar6 + 0x100) = *(int *)(lVar6 + 0x100) + 1; } } FUN_14002e770((longlong)piVar4); } return; }