/* 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; }