/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x14008ab60 FUN_14008ab60 * Pseudocode, not original source. */ void FUN_14008ab60(uint *param_1,uint *param_2,undefined8 param_3,ulonglong param_4) { longlong lVar1; uint *puVar2; undefined8 uVar3; uint *puVar4; undefined *puVar5; int *piVar6; uint *puVar7; uint *puVar8; uint *puVar9; uint *puVar10; uint *puVar11; ulonglong uVar12; ulonglong uVar13; uint uVar14; param_2[0xc] = param_1[0x1be]; uVar14 = param_1[0x1c5]; param_2[6] = param_1[0x1c4]; *(short *)(param_2 + 7) = (short)uVar14; uVar12 = *(ulonglong *)(param_1 + 0x1d2); param_2[2] = *(uint *)(uVar12 + 0x130); *(undefined2 *)(param_2 + 3) = *(undefined2 *)(uVar12 + 0x134); param_2[10] = param_1[0x1c8]; *(short *)(param_2 + 0xb) = (short)param_1[0x1c9]; *(undefined8 *)(param_2 + 0x28) = *(undefined8 *)(param_1 + 0x72); param_2[0x2a] = param_1[0x7a]; *(char *)((longlong)param_2 + 0x91) = (char)param_1[0x1c0]; puVar11 = (uint *)0x0; puVar2 = param_1; puVar9 = param_2; puVar10 = puVar11; if (*(longlong *)(param_1 + 0x1a) != 0) { puVar10 = *(uint **)(param_1 + 0x16); } for (; puVar10 != (uint *)0x0; puVar10 = *(uint **)(puVar10 + 4)) { uVar12 = (ulonglong)param_2[0x18]; uVar14 = *puVar10; param_4 = (ulonglong)uVar14; lVar1 = *(longlong *)(param_2 + 0x10); if (lVar1 != 0) { puVar2 = *(uint **)(lVar1 + (param_4 % uVar12) * 8); while ((puVar2 != (uint *)0x0 && (puVar9 = (uint *)((ulonglong)puVar2[6] % uVar12), (int)(param_4 % uVar12) == (int)puVar9))) { if (*puVar2 == uVar14) goto LAB_14008acb1; puVar2 = *(uint **)(puVar2 + 2); } } uVar13 = param_4 % uVar12; if (lVar1 != 0) { puVar2 = *(uint **)(lVar1 + uVar13 * 8); while ((puVar2 != (uint *)0x0 && (puVar9 = (uint *)((ulonglong)puVar2[6] % uVar12), (uint)uVar13 == (uint)puVar9))) { if (*puVar2 == uVar14) goto LAB_14008acad; puVar2 = *(uint **)(puVar2 + 2); } } puVar9 = puVar10; puVar2 = FUN_140051450((char *)(param_2 + 0xe),puVar10,(uint)uVar13,uVar14); uVar12 = uVar13; LAB_14008acad: *(char *)(puVar2 + 1) = '\0'; LAB_14008acb1: } puVar10 = puVar11; if (0 < (int)param_1[0x96]) { do { if (((longlong)puVar11 < 0) || ((int)param_1[0x96] <= (int)puVar10)) { /* WARNING: Subroutine does not return */ FUN_14003def0(puVar2,puVar9,uVar12,param_4); } puVar8 = (uint *)(*(longlong *)(param_1 + 0x94) + (longlong)puVar11 * 4); puVar7 = param_2 + 0xe; uVar14 = *puVar8; param_4 = (ulonglong)param_2[0x18]; uVar12 = (ulonglong)uVar14 % param_4; lVar1 = *(longlong *)(param_2 + 0x10); if (lVar1 != 0) { puVar2 = *(uint **)(lVar1 + uVar12 * 8); while ((puVar2 != (uint *)0x0 && (puVar9 = (uint *)((ulonglong)puVar2[6] % param_4), (int)uVar12 == (int)puVar9))) { if (*puVar2 == uVar14) goto LAB_14008adae; puVar2 = *(uint **)(puVar2 + 2); } } uVar13 = (ulonglong)uVar14 % param_4; if (lVar1 == 0) { LAB_14008ad6f: uVar3 = FUN_14004c640((longlong)puVar7,param_2[0x18],'\x01'); if ((char)uVar3 == '\0') { /* WARNING: Subroutine does not return */ FUN_1400050d0(0x8007000e); } } else { puVar4 = *(uint **)(lVar1 + uVar13 * 8); while ((puVar4 != (uint *)0x0 && ((uint)uVar13 == (uint)(uint *)((ulonglong)puVar4[6] % param_4)))) { puVar9 = (uint *)((ulonglong)puVar4[6] % param_4); if (*puVar4 == uVar14) goto LAB_14008ada5; puVar4 = *(uint **)(puVar4 + 2); } if (lVar1 == 0) goto LAB_14008ad6f; } FUN_140083c80((char *)puVar7); param_4 = (ulonglong)uVar14; puVar4 = FUN_14004e500((char *)puVar7,puVar8,(uint)uVar13,uVar14); FUN_140083c80((char *)puVar7); puVar2 = puVar7; puVar9 = puVar8; uVar12 = uVar13; LAB_14008ada5: *(undefined1 *)(puVar4 + 1) = 0; LAB_14008adae: uVar14 = (int)puVar10 + 1; puVar10 = (uint *)(ulonglong)uVar14; puVar11 = (uint *)((longlong)puVar11 + 1); } while ((int)uVar14 < (int)param_1[0x96]); } *(undefined1 *)(param_2 + 0xd) = 0; *(bool *)(param_2 + 0x24) = param_1[0x1c4] != param_1[0x1c8]; puVar5 = *(undefined **)(param_2 + 0x26); if (*(undefined **)(param_2 + 0x26) == (undefined *)0x0) { puVar5 = PTR_DAT_14016f010; } *(undefined **)(param_2 + 0x26) = puVar5; if (*(undefined **)(param_1 + 0x7c) != puVar5) { piVar6 = (int *)FUN_14003e7c0(puVar2,puVar9,uVar12,param_4); FUN_14003d040(piVar6); FUN_140002190((longlong *)(param_2 + 0x26),puVar9,uVar12,param_4); puVar5 = *(undefined **)(param_1 + 0x7c); *(undefined **)(param_2 + 0x26) = puVar5; if (((puVar5 != PTR_DAT_14016f010) && (puVar5 != (undefined *)0x0)) && (puVar5 != (undefined *)0x8)) { *(int *)(puVar5 + -4) = *(int *)(puVar5 + -4) + 1; } FUN_14003d0d0((longlong)piVar6); } *(undefined8 *)(param_2 + 0x2c) = *(undefined8 *)(param_1 + 0xc); *(undefined8 *)(param_2 + 0x2e) = *(undefined8 *)(param_1 + 0x78); uVar14 = (**(code **)(**(longlong **)(*(longlong *)(param_1 + 0x8e) + 0x478) + 0x18)) (*(longlong **)(*(longlong *)(param_1 + 0x8e) + 0x478),param_1[0x1be]); param_2[0x32] = uVar14; param_2[0x30] = param_1[0x76]; param_2[0x31] = param_1[0x77]; return; }