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

146 lines
5.4 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401b4190 FUN_1401b4190
* Pseudocode, not original source. */
void FUN_1401b4190(longlong param_1,longlong param_2)
{
undefined2 uVar1;
uint uVar2;
longlong lVar3;
longlong lVar4;
longlong *plVar5;
ulonglong uVar6;
ulonglong uVar7;
char cVar8;
undefined4 uVar9;
uint *puVar10;
uint *puVar11;
undefined *puVar12;
uint *puVar13;
uint *puVar14;
ulonglong uVar15;
uint uVar16;
undefined8 uVar17;
uVar17 = 0xfffffffffffffffe;
*(undefined4 *)(param_2 + 0x30) = *(undefined4 *)(param_1 + 0x6f8);
uVar1 = *(undefined2 *)(param_1 + 0x714);
*(undefined4 *)(param_2 + 0x18) = *(undefined4 *)(param_1 + 0x710);
*(undefined2 *)(param_2 + 0x1c) = uVar1;
lVar3 = *(longlong *)(param_1 + 0x748);
*(undefined4 *)(param_2 + 8) = *(undefined4 *)(lVar3 + 0x130);
*(undefined2 *)(param_2 + 0xc) = *(undefined2 *)(lVar3 + 0x134);
*(undefined4 *)(param_2 + 0x28) = *(undefined4 *)(param_1 + 0x720);
*(undefined2 *)(param_2 + 0x2c) = *(undefined2 *)(param_1 + 0x724);
*(undefined8 *)(param_2 + 0xa0) = *(undefined8 *)(param_1 + 0x1c8);
*(undefined4 *)(param_2 + 0xa8) = *(undefined4 *)(param_1 + 0x1e8);
*(undefined1 *)(param_2 + 0x91) = *(undefined1 *)(param_1 + 0x700);
puVar14 = (uint *)0x0;
puVar13 = puVar14;
if (*(longlong *)(param_1 + 0x68) != 0) {
puVar13 = *(uint **)(param_1 + 0x58);
}
for (; puVar13 != (uint *)0x0; puVar13 = *(uint **)(puVar13 + 4)) {
uVar16 = *(uint *)(param_2 + 0x60);
uVar2 = *puVar13;
uVar6 = (ulonglong)uVar2 % (ulonglong)uVar16;
lVar3 = *(longlong *)(param_2 + 0x40);
if (lVar3 != 0) {
for (puVar10 = *(uint **)(lVar3 + uVar6 * 8);
(puVar10 != (uint *)0x0 && ((uint)uVar6 == puVar10[6] % uVar16));
puVar10 = *(uint **)(puVar10 + 2)) {
if (*puVar10 == uVar2) goto LAB_1401b42e1;
}
}
uVar6 = (ulonglong)uVar2 % (ulonglong)uVar16;
if (lVar3 != 0) {
for (puVar10 = *(uint **)(lVar3 + uVar6 * 8);
(puVar10 != (uint *)0x0 && ((uint)uVar6 == puVar10[6] % uVar16));
puVar10 = *(uint **)(puVar10 + 2)) {
if (*puVar10 == uVar2) goto LAB_1401b42dd;
}
}
puVar10 = (uint *)FUN_140178900(param_2 + 0x38,puVar13,uVar6);
LAB_1401b42dd:
*(undefined1 *)(puVar10 + 1) = 0;
LAB_1401b42e1:
}
puVar13 = puVar14;
if (0 < *(int *)(param_1 + 600)) {
do {
if (((longlong)puVar14 < 0) || (*(int *)(param_1 + 600) <= (int)puVar13)) {
/* WARNING: Subroutine does not return */
FUN_14016d6e0();
}
puVar10 = (uint *)(*(longlong *)(param_1 + 0x250) + (longlong)puVar14 * 4);
lVar3 = param_2 + 0x38;
uVar16 = *puVar10;
uVar2 = *(uint *)(param_2 + 0x60);
uVar15 = (ulonglong)uVar2;
uVar6 = (ulonglong)uVar16 % uVar15;
lVar4 = *(longlong *)(param_2 + 0x40);
if (lVar4 != 0) {
for (puVar11 = *(uint **)(lVar4 + uVar6 * 8);
(puVar11 != (uint *)0x0 && ((uint)uVar6 == puVar11[6] % uVar2));
puVar11 = *(uint **)(puVar11 + 2)) {
if (*puVar11 == uVar16) goto LAB_1401b43de;
}
}
uVar7 = (ulonglong)uVar16 % uVar15;
if (lVar4 == 0) {
LAB_1401b439f:
cVar8 = FUN_1401b5a10(lVar3,uVar15,CONCAT71((int7)(uVar6 >> 8),1),uVar15,uVar17);
if (cVar8 == '\0') {
/* WARNING: Subroutine does not return */
FUN_14004dc60(0x8007000e);
}
}
else {
for (puVar11 = *(uint **)(lVar4 + uVar7 * 8);
(puVar11 != (uint *)0x0 && ((uint)uVar7 == puVar11[6] % uVar2));
puVar11 = *(uint **)(puVar11 + 2)) {
if (*puVar11 == uVar16) goto LAB_1401b43d5;
}
if (lVar4 == 0) goto LAB_1401b439f;
}
FUN_140173d40(lVar3);
puVar11 = (uint *)FUN_140175ab0(lVar3,puVar10,uVar7,uVar16);
FUN_140173d40(lVar3);
LAB_1401b43d5:
*(undefined1 *)(puVar11 + 1) = 0;
LAB_1401b43de:
uVar16 = (int)puVar13 + 1;
puVar13 = (uint *)(ulonglong)uVar16;
puVar14 = (uint *)((longlong)puVar14 + 1);
} while ((int)uVar16 < *(int *)(param_1 + 600));
}
*(undefined1 *)(param_2 + 0x34) = 0;
*(bool *)(param_2 + 0x90) = *(int *)(param_1 + 0x710) != *(int *)(param_1 + 0x720);
puVar12 = *(undefined **)(param_2 + 0x98);
if (*(undefined **)(param_2 + 0x98) == (undefined *)0x0) {
puVar12 = PTR_DAT_1403440a0;
}
*(undefined **)(param_2 + 0x98) = puVar12;
if (*(undefined **)(param_1 + 0x1f0) != puVar12) {
uVar17 = FUN_14016d8c0();
FUN_14016db50(uVar17);
FUN_14004eb70(param_2 + 0x98);
puVar12 = *(undefined **)(param_1 + 0x1f0);
*(undefined **)(param_2 + 0x98) = puVar12;
if (((puVar12 != PTR_DAT_1403440a0) && (puVar12 != (undefined *)0x0)) &&
(puVar12 != (undefined *)0x8)) {
*(int *)(puVar12 + -4) = *(int *)(puVar12 + -4) + 1;
}
FUN_14016dbe0(uVar17);
}
*(undefined8 *)(param_2 + 0xb0) = *(undefined8 *)(param_1 + 0x30);
*(undefined8 *)(param_2 + 0xb8) = *(undefined8 *)(param_1 + 0x1e0);
plVar5 = *(longlong **)(*(longlong *)(param_1 + 0x238) + 0x478);
uVar9 = (**(code **)(*plVar5 + 0x18))(plVar5,*(undefined4 *)(param_1 + 0x6f8));
*(undefined4 *)(param_2 + 200) = uVar9;
*(undefined4 *)(param_2 + 0xc0) = *(undefined4 *)(param_1 + 0x1d8);
*(undefined4 *)(param_2 + 0xc4) = *(undefined4 *)(param_1 + 0x1dc);
return;
}