server-re/decomp/Agent_Release_x64/full/functions/0x1400d4630.c
2026-10-14 16:45:19 -04:00

70 lines
1.5 KiB
C

/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
* Ghidra 12.1.2 decompiler output for 0x1400d4630 FUN_1400d4630
* Pseudocode, not original source. */
int FUN_1400d4630(uint param_1,undefined1 *param_2,uint *param_3)
{
uint uVar1;
int iVar2;
longlong lVar3;
undefined1 *puVar4;
uint uVar5;
uint uVar6;
ulonglong uVar7;
uint local_res10 [2];
if ((param_2 == (undefined1 *)0x0) || (param_3 == (uint *)0x0)) {
return 0x10;
}
iVar2 = FUN_1400d2170(param_1,(int *)local_res10);
if (iVar2 != 0) {
return iVar2;
}
if (*param_3 < local_res10[0]) {
*param_3 = local_res10[0];
return 6;
}
uVar6 = 0;
iVar2 = 0;
uVar5 = param_1;
if (param_1 != 0) {
do {
iVar2 = iVar2 + 1;
uVar1 = uVar5 >> 8;
uVar5 = uVar5 >> 8;
} while (uVar1 != 0);
if (iVar2 != 0) goto LAB_1400d46b5;
}
iVar2 = 1;
LAB_1400d46b5:
uVar5 = iVar2 + (uint)((param_1 >> (iVar2 * 8 - 1U & 0x1f) & 1) != 0);
if (uVar5 < 5) {
for (; uVar6 < 4 - uVar5; uVar6 = uVar6 + 1) {
param_1 = param_1 << 8;
}
}
*param_2 = 2;
uVar6 = 2;
param_2[1] = (char)uVar5;
if (uVar5 == 5) {
param_2[2] = 0;
uVar5 = 4;
uVar6 = 3;
}
lVar3 = (longlong)(int)uVar6;
if (uVar5 != 0) {
uVar7 = (ulonglong)uVar5;
uVar6 = uVar6 + uVar5;
puVar4 = param_2 + lVar3;
do {
uVar7 = uVar7 - 1;
*puVar4 = (char)(param_1 >> 0x18);
puVar4 = puVar4 + 1;
param_1 = param_1 << 8;
} while (uVar7 != 0);
}
*param_3 = uVar6;
return 0;
}