/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1401b8040 FUN_1401b8040 * Pseudocode, not original source. */ ulonglong FUN_1401b8040(longlong param_1,longlong param_2) { uint uVar1; undefined8 uVar2; longlong *plVar3; ulonglong uVar4; ulonglong uVar5; longlong lVar6; uVar1 = *(uint *)(param_1 + 0x48); uVar4 = (ulonglong)((uint)*(ushort *)(param_2 + 0xc) ^ *(uint *)(param_2 + 8)); uVar5 = uVar4 / uVar1; uVar4 = uVar4 % (ulonglong)uVar1; if ((*(longlong *)(param_1 + 0x28) != 0) && (lVar6 = *(longlong *)(*(longlong *)(param_1 + 0x28) + uVar4 * 8), lVar6 != 0)) { while( true ) { uVar5 = (ulonglong)*(uint *)(lVar6 + 0x28) / (ulonglong)uVar1; if ((uint)uVar4 != *(uint *)(lVar6 + 0x28) % uVar1) break; if ((*(uint *)(lVar6 + 8) == *(uint *)(param_2 + 8)) && (*(ushort *)(lVar6 + 0xc) == *(ushort *)(param_2 + 0xc))) { if (lVar6 == 0) { return uVar5; } if (*(longlong *)(*(longlong *)(lVar6 + 0x10) + 0x10) != 0) { FUN_1401b5640(); } uVar2 = *(undefined8 *)(lVar6 + 0x10); plVar3 = *(longlong **)(param_1 + 0x78); FUN_1401b72d0(uVar2); (**(code **)(*plVar3 + 0x18))(plVar3,uVar2); uVar4 = FUN_140175900(param_1 + 0x20,lVar6,0); return uVar4; } lVar6 = *(longlong *)(lVar6 + 0x18); if (lVar6 == 0) { return uVar5; } } } return uVar5; }