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

96 lines
3.2 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x14013a170 FUN_14013a170
* Pseudocode, not original source. */
void FUN_14013a170(longlong param_1,longlong param_2)
{
undefined4 uVar1;
undefined8 *puVar2;
uint uVar3;
undefined8 *puVar5;
undefined8 *puVar6;
undefined8 *puVar7;
undefined4 local_res10 [2];
undefined8 *local_50;
undefined8 *local_48;
undefined8 *local_40;
undefined8 *puVar4;
if (0 < *(short *)(param_2 + 0xe)) {
puVar5 = (undefined8 *)(param_2 + 0x10);
puVar4 = (undefined8 *)0x0;
local_50 = (undefined8 *)0x0;
local_48 = (undefined8 *)0x0;
local_40 = (undefined8 *)0x0;
puVar7 = puVar4;
if (0 < *(short *)(param_2 + 0xe)) {
do {
if ((puVar5 < local_48) && (puVar7 <= puVar5)) {
puVar6 = puVar7;
if (local_48 == local_40) {
FUN_14004a260(&local_50);
puVar6 = local_50;
}
puVar2 = (undefined8 *)
((((longlong)puVar5 - (longlong)puVar7) / 0x1c) * 0x1c + (longlong)puVar6);
puVar7 = puVar6;
if (local_48 != (undefined8 *)0x0) {
*local_48 = *puVar2;
local_48[1] = puVar2[1];
local_48[2] = puVar2[2];
uVar1 = *(undefined4 *)(puVar2 + 3);
LAB_14013a26b:
*(undefined4 *)(local_48 + 3) = uVar1;
puVar7 = local_50;
}
}
else {
if (local_48 == local_40) {
FUN_14004a260(&local_50);
puVar7 = local_50;
}
if (local_48 != (undefined8 *)0x0) {
*local_48 = *puVar5;
local_48[1] = puVar5[1];
local_48[2] = puVar5[2];
uVar1 = *(undefined4 *)(puVar5 + 3);
goto LAB_14013a26b;
}
}
local_48 = (undefined8 *)((longlong)local_48 + 0x1c);
if (((longlong)local_48 - (longlong)puVar7) / 0x1c == 0x32) {
*(int *)(param_1 + 0x5fc) = *(int *)(param_1 + 0x5fc) + 1;
local_res10[0] = *(undefined4 *)(param_2 + 4);
(**(code **)(*(longlong *)(param_1 + 0xa8) + 0x180))
((longlong *)(param_1 + 0xa8),*(undefined4 *)(param_2 + 8),&DAT_1403440f0,
local_res10,&local_50);
puVar7 = local_50;
if (local_50 != local_48) {
local_48 = local_50;
}
}
puVar5 = (undefined8 *)((longlong)puVar5 + 0x1c);
uVar3 = (int)puVar4 + 1;
puVar4 = (undefined8 *)(ulonglong)uVar3;
} while ((int)uVar3 < (int)*(short *)(param_2 + 0xe));
puVar4 = puVar7;
if (puVar7 != local_48) {
*(int *)(param_1 + 0x5fc) = *(int *)(param_1 + 0x5fc) + 1;
local_res10[0] = *(undefined4 *)(param_2 + 4);
(**(code **)(*(longlong *)(param_1 + 0xa8) + 0x180))
((longlong *)(param_1 + 0xa8),*(undefined4 *)(param_2 + 8),&DAT_1403440f0,
local_res10,&local_50);
puVar4 = local_50;
if (local_50 != local_48) {
local_48 = local_50;
}
}
}
if (puVar4 != (undefined8 *)0x0) {
operator_delete(puVar4);
}
}
return;
}