server-re/decomp/DBCServer_Release_x64/full/functions/0x1401e7ce0.c

104 lines
3.4 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401e7ce0 FUN_1401e7ce0
* Pseudocode, not original source. */
undefined8
FUN_1401e7ce0(longlong param_1,uint param_2,int param_3,int param_4,int param_5,uint param_6,
char *param_7,int param_8)
{
uint uVar1;
int iVar2;
code *pcVar3;
longlong *plVar4;
longlong lVar5;
undefined8 uVar6;
int iVar7;
undefined4 uVar8;
uVar8 = 1;
if (((param_7 == (char *)0x0) || (*param_7 != '1')) || (param_8 != 0x58)) {
return 0xfffffffa;
}
if (param_1 == 0) {
return 0xfffffffe;
}
*(undefined8 *)(param_1 + 0x20) = 0;
if (*(longlong *)(param_1 + 0x30) == 0) {
*(undefined8 *)(param_1 + 0x40) = 0;
*(code **)(param_1 + 0x30) = FUN_1401e7fb0;
}
pcVar3 = *(code **)(param_1 + 0x38);
if (pcVar3 == (code *)0x0) {
pcVar3 = FUN_1401e7fc0;
}
*(code **)(param_1 + 0x38) = pcVar3;
if (param_2 == 0xffffffff) {
param_2 = 6;
}
if (param_4 < 0) {
param_4 = -param_4;
uVar8 = 0;
}
else if (0xf < param_4) {
uVar8 = 2;
param_4 = param_4 + -0x10;
}
if (((param_5 - 1U < 9) && (param_3 == 8)) &&
((param_4 - 8U < 8 && ((param_2 < 10 && (param_6 < 5)))))) {
if (param_4 == 8) {
param_4 = 9;
}
plVar4 = (longlong *)(**(code **)(param_1 + 0x30))(*(undefined8 *)(param_1 + 0x40),1,0x1720);
if (plVar4 != (longlong *)0x0) {
*(longlong **)(param_1 + 0x28) = plVar4;
*(undefined4 *)((longlong)plVar4 + 0x2c) = uVar8;
*plVar4 = param_1;
*(int *)(plVar4 + 9) = param_4;
plVar4[6] = 0;
iVar7 = 1 << ((byte)param_4 & 0x1f);
*(int *)((longlong)plVar4 + 0x44) = iVar7;
*(int *)(plVar4 + 0xf) = param_5 + 7;
*(int *)((longlong)plVar4 + 0x4c) = iVar7 + -1;
iVar2 = 1 << ((byte)(param_5 + 7) & 0x1f);
*(int *)((longlong)plVar4 + 0x74) = iVar2;
*(int *)((longlong)plVar4 + 0x7c) = iVar2 + -1;
*(uint *)(plVar4 + 0x10) = (param_5 + 9U) / 3;
lVar5 = (**(code **)(param_1 + 0x30))(*(undefined8 *)(param_1 + 0x40),iVar7,2);
plVar4[10] = lVar5;
lVar5 = (**(code **)(param_1 + 0x30))
(*(undefined8 *)(param_1 + 0x40),*(undefined4 *)((longlong)plVar4 + 0x44),2)
;
plVar4[0xc] = lVar5;
lVar5 = (**(code **)(param_1 + 0x30))
(*(undefined8 *)(param_1 + 0x40),*(undefined4 *)((longlong)plVar4 + 0x74),2)
;
*(undefined4 *)(plVar4 + 0x2e3) = 0;
iVar2 = 1 << ((char)param_5 + 6U & 0x1f);
plVar4[0xd] = lVar5;
*(int *)(plVar4 + 0x2de) = iVar2;
lVar5 = (**(code **)(param_1 + 0x30))(*(undefined8 *)(param_1 + 0x40),iVar2,4);
plVar4[2] = lVar5;
uVar1 = *(uint *)(plVar4 + 0x2de);
*(uint *)(plVar4 + 3) = uVar1 * 4;
if ((((plVar4[10] != 0) && (plVar4[0xc] != 0)) && (plVar4[0xd] != 0)) && (lVar5 != 0)) {
*(uint *)((longlong)plVar4 + 0xac) = param_2;
*(uint *)(plVar4 + 0x16) = param_6;
*(undefined1 *)((longlong)plVar4 + 0x3c) = 8;
plVar4[0x2df] = lVar5 + (ulonglong)(uVar1 >> 1) * 2;
plVar4[0x2dd] = lVar5 + (ulonglong)uVar1 * 3;
uVar6 = FUN_1401e7250(param_1);
return uVar6;
}
*(undefined4 *)(plVar4 + 1) = 0x29a;
*(char **)(param_1 + 0x20) = "insufficient memory";
FUN_1401e5c10(param_1);
}
uVar6 = 0xfffffffc;
}
else {
uVar6 = 0xfffffffe;
}
return uVar6;
}