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

70 lines
2 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401e5670 FUN_1401e5670
* Pseudocode, not original source. */
ulonglong FUN_1401e5670(undefined8 param_1,uint param_2,longlong param_3,longlong param_4,
undefined8 param_5,undefined4 param_6,undefined4 param_7,int param_8,
undefined4 *param_9,longlong param_10)
{
undefined4 uVar1;
uint uVar2;
ulonglong uVar3;
void *_Memory;
uint local_res18 [2];
undefined8 in_stack_ffffffffffffff98;
undefined4 uVar4;
uVar4 = (undefined4)((ulonglong)in_stack_ffffffffffffff98 >> 0x20);
if ((param_3 == 0) || (param_4 == 0)) {
return 0x10;
}
if (param_10 == 0) {
return 0x10;
}
if (param_9 != (undefined4 *)0x0) {
*param_9 = 0;
if (param_8 != 1) {
if (param_8 != 2) {
return 0x18;
}
uVar3 = FUN_1402069c0(param_7);
if ((int)uVar3 != 0) {
return uVar3;
}
}
uVar1 = (*DAT_14039d2c8)(*(undefined8 *)(param_10 + 0x18));
uVar2 = (*DAT_14039d2f0)(*(undefined8 *)(param_10 + 0x18));
if (uVar2 == param_2) {
_Memory = malloc((ulonglong)param_2);
if (_Memory == (void *)0x0) {
uVar3 = 0xd;
}
else {
local_res18[0] = param_2;
uVar2 = (*DAT_14039d3e0)(param_1,param_2,_Memory,local_res18,CONCAT44(uVar4,1),param_10);
uVar3 = (ulonglong)uVar2;
if (uVar2 == 0) {
if (param_8 == 2) {
uVar2 = FUN_140206b50(_Memory,local_res18[0],param_5,param_6,uVar1,param_7,param_3,
param_4,param_9);
}
else {
uVar2 = FUN_140206a20(_Memory,local_res18[0],2,uVar1,param_3,param_4,param_9);
}
uVar3 = (ulonglong)uVar2;
free(_Memory);
}
else {
free(_Memory);
}
}
}
else {
uVar3 = 7;
}
return uVar3;
}
return 0x10;
}