/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1401a31c0 FUN_1401a31c0 * Pseudocode, not original source. */ void FUN_1401a31c0(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) { int iVar1; longlong lVar2; undefined8 *puVar3; longlong *plVar4; undefined8 uVar5; uVar5 = 0xfffffffffffffffe; if (*(HANDLE *)(param_1 + 0x28) != (HANDLE)0x0) { CloseHandle(*(HANDLE *)(param_1 + 0x28)); *(undefined8 *)(param_1 + 0x28) = 0; } lVar2 = *(longlong *)(param_1 + 0xa0); while( true ) { if (lVar2 == 0) { *(undefined8 *)(param_1 + 0x90) = 0; *(undefined8 *)(param_1 + 0x98) = 0; iVar1 = *(int *)(param_1 + 0x48); while (0 < iVar1) { FUN_1401a30d0(param_1,*(undefined8 *)(param_1 + 0x38)); iVar1 = *(int *)(param_1 + 0x48); } FUN_1401bf2d0(param_1 + 0x88); FUN_14016dc00(param_1 + 0x50); FUN_1401a2080(param_1 + 0x38); return; } puVar3 = *(undefined8 **)(param_1 + 0x90); if (puVar3 == (undefined8 *)0x0) break; *(undefined8 *)(param_1 + 0x90) = *puVar3; plVar4 = *(longlong **)(param_1 + 0x88); if (plVar4 == (longlong *)0x0) { FUN_14016d970(); } else { (**(code **)(*plVar4 + 0x10))(plVar4,puVar3,plVar4,param_4,uVar5); } *(longlong *)(param_1 + 0xa0) = *(longlong *)(param_1 + 0xa0) + -1; lVar2 = *(longlong *)(param_1 + 0xa0); } /* WARNING: Subroutine does not return */ FUN_14004dc60(0x80004005); }