/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x1400dde20 FUN_1400dde20 * Pseudocode, not original source. */ ulonglong FUN_1400dde20(uint *param_1,uint param_2,uint *param_3,uint *param_4) { undefined4 uVar1; ulonglong uVar2; ulonglong uVar3; uint uVar4; longlong lVar5; uint local_28 [2]; uint local_20; longlong local_18; uVar2 = (ulonglong)param_2; if (param_2 == 0) { return 0xfffffffd; } if ((param_2 == 1) || (*param_1 == 0)) { if (param_4 != (uint *)0x0) { *param_4 = 0; } if (param_3 != (uint *)0x0) { uVar2 = FUN_1400d5ca0(param_1,param_3); return uVar2; } } else { if ((param_2 & param_2 - 1) == 0) { uVar4 = 0; do { if (param_2 == 1 << ((byte)uVar4 & 0x1f)) { if (param_4 != (uint *)0x0) { *param_4 = (1 << ((byte)uVar4 & 0x1f)) - 1U & **(uint **)(param_1 + 4); } if (param_3 == (uint *)0x0) { return 0; } uVar2 = FUN_1400ddfd0(param_1,uVar4,param_3,(undefined8 *)0x0); return uVar2; } uVar4 = uVar4 + 1; } while ((int)uVar4 < 0x1c); } if (param_2 == 3) { uVar2 = FUN_1400e39f0(param_1,(undefined8 *)param_3,param_4); return uVar2; } uVar3 = FUN_1400dfd80(local_28,*param_1); if ((int)uVar3 != 0) { return uVar3; } local_28[0] = *param_1; local_20 = param_1[2]; uVar3 = 0; lVar5 = (longlong)(int)(local_28[0] - 1); if (-1 < (int)(local_28[0] - 1)) { do { uVar3 = (ulonglong)*(uint *)(*(longlong *)(param_1 + 4) + lVar5 * 4) | uVar3 << 0x1c; if (uVar3 < uVar2) { uVar1 = 0; } else { uVar1 = (undefined4)(uVar3 / uVar2); uVar3 = uVar3 - (uVar3 / uVar2 & 0xffffffff) * uVar2; } lVar5 = lVar5 + -1; *(undefined4 *)(local_18 + 4 + lVar5 * 4) = uVar1; } while (-1 < lVar5); } if (param_4 != (uint *)0x0) { *param_4 = (uint)uVar3; } if (param_3 != (uint *)0x0) { FUN_1400ddc00((int *)local_28); FUN_1400dfc40((undefined8 *)local_28,(undefined8 *)param_3); } FUN_1400d5c00((int *)local_28); } return 0; }