/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x1400c6650 FUN_1400c6650 * Pseudocode, not original source. */ void FUN_1400c6650(longlong *param_1,undefined1 *param_2,int param_3,int param_4) { ushort uVar1; undefined1 uVar2; int iVar3; int iVar4; undefined8 uVar5; uint uVar6; uint uVar7; undefined *puVar8; longlong *plVar9; longlong lVar10; uVar1 = (ushort)param_4; iVar3 = 0; if (*(int *)((longlong)param_1 + 0xac) < 1) { uVar7 = param_3 + 5; LAB_1400c66e3: uVar6 = uVar7; uVar7 = uVar6; } else { lVar10 = *param_1; if (*(int *)(lVar10 + 0x48) == 2) { uVar5 = FUN_1400c5890((longlong)param_1); *(int *)(lVar10 + 0x48) = (int)uVar5; } FUN_1400c60c0((longlong)param_1,param_1 + 0x168); FUN_1400c60c0((longlong)param_1,param_1 + 0x16b); iVar3 = FUN_1400c6310((longlong)param_1); uVar6 = (int)param_1[0x2e0] + 10U >> 3; uVar7 = *(int *)((longlong)param_1 + 0x1704) + 10U >> 3; if (uVar7 <= uVar6) goto LAB_1400c66e3; } if ((uVar6 < param_3 + 4U) || (param_2 == (undefined1 *)0x0)) { if (((int)param_1[0x16] == 4) || (uVar7 == uVar6)) { iVar3 = *(int *)((longlong)param_1 + 0x1714); if (iVar3 < 0xe) { *(ushort *)(param_1 + 0x2e2) = *(ushort *)(param_1 + 0x2e2) | uVar1 + 2 << ((byte)iVar3 & 0x1f); iVar3 = iVar3 + 3; } else { *(ushort *)(param_1 + 0x2e2) = *(ushort *)(param_1 + 0x2e2) | uVar1 + 2 << ((byte)iVar3 & 0x1f); *(char *)((ulonglong)*(uint *)(param_1 + 5) + param_1[2]) = (char)param_1[0x2e2]; *(int *)(param_1 + 5) = (int)param_1[5] + 1; *(undefined1 *)((ulonglong)*(uint *)(param_1 + 5) + param_1[2]) = *(undefined1 *)((longlong)param_1 + 0x1711); *(int *)(param_1 + 5) = (int)param_1[5] + 1; iVar3 = *(int *)((longlong)param_1 + 0x1714) + -0xd; *(ushort *)(param_1 + 0x2e2) = (ushort)(uVar1 + 2) >> (0x10U - (char)*(int *)((longlong)param_1 + 0x1714) & 0x1f); } *(int *)((longlong)param_1 + 0x1714) = iVar3; plVar9 = (longlong *)&DAT_140111df0; puVar8 = &DAT_140111970; } else { iVar4 = *(int *)((longlong)param_1 + 0x1714); if (iVar4 < 0xe) { *(ushort *)(param_1 + 0x2e2) = *(ushort *)(param_1 + 0x2e2) | uVar1 + 4 << ((byte)iVar4 & 0x1f); iVar4 = iVar4 + 3; } else { *(ushort *)(param_1 + 0x2e2) = *(ushort *)(param_1 + 0x2e2) | uVar1 + 4 << ((byte)iVar4 & 0x1f); *(char *)((ulonglong)*(uint *)(param_1 + 5) + param_1[2]) = (char)param_1[0x2e2]; *(int *)(param_1 + 5) = (int)param_1[5] + 1; *(undefined1 *)((ulonglong)*(uint *)(param_1 + 5) + param_1[2]) = *(undefined1 *)((longlong)param_1 + 0x1711); *(int *)(param_1 + 5) = (int)param_1[5] + 1; iVar4 = *(int *)((longlong)param_1 + 0x1714) + -0xd; *(ushort *)(param_1 + 0x2e2) = (ushort)(uVar1 + 4) >> (0x10U - (char)*(int *)((longlong)param_1 + 0x1714) & 0x1f); } *(int *)((longlong)param_1 + 0x1714) = iVar4; FUN_1400c51b0((longlong)param_1,(int)param_1[0x169] + 1,(int)param_1[0x16c] + 1,iVar3 + 1); plVar9 = param_1 + 0x136; puVar8 = (undefined *)((longlong)param_1 + 0xbc); } FUN_1400c5420((longlong)param_1,(longlong)puVar8,(longlong)plVar9); } else { FUN_1400c6390((longlong)param_1,param_2,param_3,uVar1); } FUN_1400c47c0((longlong)param_1); if (param_4 == 0) { return; } if (*(int *)((longlong)param_1 + 0x1714) < 9) { if (*(int *)((longlong)param_1 + 0x1714) < 1) goto LAB_1400c68a0; uVar2 = (undefined1)param_1[0x2e2]; } else { *(char *)((ulonglong)*(uint *)(param_1 + 5) + param_1[2]) = (char)param_1[0x2e2]; *(int *)(param_1 + 5) = (int)param_1[5] + 1; uVar2 = *(undefined1 *)((longlong)param_1 + 0x1711); } *(undefined1 *)((ulonglong)*(uint *)(param_1 + 5) + param_1[2]) = uVar2; *(int *)(param_1 + 5) = (int)param_1[5] + 1; LAB_1400c68a0: *(undefined2 *)(param_1 + 0x2e2) = 0; *(undefined4 *)((longlong)param_1 + 0x1714) = 0; return; }