/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1401dfbb0 FUN_1401dfbb0 * Pseudocode, not original source. */ void FUN_1401dfbb0(longlong *param_1,undefined4 param_2,longlong *param_3) { longlong *plVar1; undefined4 uVar2; undefined8 uVar3; undefined8 *puVar4; undefined8 *puVar5; longlong lVar6; undefined8 *puVar7; undefined8 *local_res8; undefined8 *local_158; undefined1 local_150; undefined4 local_148 [2]; longlong local_140 [2]; undefined8 local_130; undefined8 local_128; undefined **local_120; undefined8 local_118; undefined8 local_110; undefined8 local_108; undefined8 local_100; undefined8 local_f8; longlong local_f0; ulonglong local_e8; undefined4 local_d8; undefined **local_d0; undefined8 local_c8; undefined8 local_c0; undefined8 local_b8; undefined8 local_b0; undefined **local_a0; undefined4 local_98; undefined2 local_94; undefined4 local_90; undefined **local_88; undefined8 local_80; undefined8 local_78; undefined8 local_70; undefined8 local_68; undefined8 local_58; undefined1 local_50; undefined8 local_48; local_48 = 0xfffffffffffffffe; uVar3 = (**(code **)(*param_1 + 0x58))(); local_58 = uVar3; FUN_14016db50(uVar3); local_50 = 1; if ((char)param_1[0x9d] == '\0') { puVar7 = (undefined8 *)0x0; local_140[0] = 0; local_130 = 0; local_128 = 0; local_118 = 0; local_110 = 0; local_108 = 0; local_100 = 0; local_120 = Proud::ByteArray::vftable; local_e8 = 0; local_f0 = 0; local_f8 = 0; local_c8 = 0; local_c0 = 0; local_b8 = 0; local_b0 = 0; local_d0 = Proud::ByteArray::vftable; local_a0 = Proud::AddrPort::vftable; local_98 = 0; local_94 = 0; local_80 = 0; local_78 = 0; local_70 = 0; local_68 = 0; local_88 = Proud::ByteArray::vftable; local_res8 = (undefined8 *)FUN_14016d940(0x60); puVar4 = puVar7; if (local_res8 != (undefined8 *)0x0) { puVar4 = (undefined8 *)FUN_140198ee0(local_res8); } if (puVar4 == (undefined8 *)0x0) { local_res8 = (undefined8 *)0x0; puVar5 = puVar7; } else { puVar5 = (undefined8 *)FUN_14016d940(0x48); if (puVar5 != (undefined8 *)0x0) { local_res8 = puVar5; uVar2 = FUN_140171510(); FUN_14016da70(puVar5,uVar2,1); } local_res8 = puVar5; FUN_14016db50(puVar5); puVar5[8] = 1; puVar5[7] = puVar4; FUN_14016dbe0(puVar5); } FUN_140184b90(local_140,&local_res8); if (puVar5 != (undefined8 *)0x0) { local_158 = puVar5; FUN_14016db50(puVar5); local_150 = 1; plVar1 = puVar5 + 8; *plVar1 = *plVar1 + -1; if (*plVar1 == 0) { FUN_14016dbe0(puVar5); local_150 = 0; FUN_140154a90(puVar5); } else { FUN_14016dbe0(puVar5); } } local_148[0] = 2; puVar4 = puVar7; if (local_140[0] != 0) { puVar4 = *(undefined8 **)(local_140[0] + 0x38); } *(undefined4 *)puVar4 = param_2; puVar4 = puVar7; if (*param_3 != 0) { puVar4 = *(undefined8 **)(*param_3 + 0x38); } if (local_140[0] != 0) { puVar7 = *(undefined8 **)(local_140[0] + 0x38); } FUN_14004e6d0(puVar7 + 2,puVar4 + 2); local_d8 = 1; FUN_14016d8c0(); local_res8 = (undefined8 *)PTR_DAT_1403440a0; FUN_14004e6d0(&local_res8,param_1 + 0x2b1); lVar6 = FUN_14016fcb0(&local_158,&local_res8,(short)param_1[0x2b2]); local_98 = *(undefined4 *)(lVar6 + 8); local_94 = *(undefined2 *)(lVar6 + 0xc); local_90 = 0; FUN_1401dcb50(param_1,local_148); *(undefined1 *)(param_1 + 0x9d) = 1; FUN_14019a9e0(&local_88); FUN_14019a9e0(&local_d0); local_res8 = &local_f8; FUN_14016d0e0(&local_f8); if (local_f0 != 0) { if ((longlong)local_e8 < 0) { /* WARNING: Subroutine does not return */ FUN_14016d6b0(); } local_e8 = local_e8 & 0xffffffff00000000; } FUN_14019a9e0(&local_120); FUN_14018b600(&local_128); FUN_14018b580(&local_130); FUN_140154b00(local_140); } FUN_14016dbe0(uVar3); FUN_140154b00(param_3); return; }