/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1401df890 FUN_1401df890 * Pseudocode, not original source. */ void FUN_1401df890(longlong *param_1,undefined4 param_2,undefined4 param_3,undefined8 param_4) { longlong *plVar1; undefined4 uVar2; undefined8 uVar3; undefined8 *puVar4; undefined8 *puVar5; undefined4 *puVar6; longlong lVar7; 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; undefined **local_88; undefined8 local_80; undefined8 local_78; undefined8 local_70; undefined8 local_68; undefined8 local_58; undefined1 local_50; longlong local_48; undefined1 local_40; undefined8 local_38; local_38 = 0xfffffffffffffffe; uVar3 = (**(code **)(*param_1 + 0x58))(); local_58 = uVar3; FUN_14016db50(uVar3); local_50 = 1; if ((char)param_1[0x9d] == '\0') { puVar5 = (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 = puVar5; if (local_res8 != (undefined8 *)0x0) { puVar4 = (undefined8 *)FUN_140198ee0(local_res8); } if (puVar4 == (undefined8 *)0x0) { local_res8 = (undefined8 *)0x0; } else { puVar5 = (undefined8 *)FUN_14016d940(0x48); local_158 = puVar5; 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(); local_150 = 1; plVar1 = puVar5 + 8; *plVar1 = *plVar1 + -1; if (*plVar1 == 0) { FUN_14016dbe0(puVar5); local_150 = 0; FUN_140154a90(); } else { FUN_14016dbe0(); } } local_148[0] = 3; if (local_140[0] == 0) { puVar6 = (undefined4 *)0x0; } else { puVar6 = *(undefined4 **)(local_140[0] + 0x38); } *puVar6 = param_2; lVar7 = 0; if (local_140[0] != 0) { lVar7 = *(longlong *)(local_140[0] + 0x38); } *(undefined4 *)(lVar7 + 4) = param_3; if (local_140[0] == 0) { lVar7 = 0; } else { lVar7 = *(longlong *)(local_140[0] + 0x38); } FUN_14004e6d0(lVar7 + 0x10,param_4); local_d8 = 1; FUN_1401dcb50(param_1,local_148); *(undefined1 *)(param_1 + 0x9d) = 1; if (param_1[0xb] != 0) { lVar7 = param_1[0xb] + 0x98; local_48 = lVar7; FUN_14016db50(lVar7); local_40 = 1; local_res8 = (undefined8 *)((ulonglong)local_res8 & 0xffffffffffffff00); uVar2 = (**(code **)(param_1[0xe] + 0x108))(param_1 + 0xe,&local_res8); local_158 = (undefined8 *)CONCAT44(local_158._4_4_,uVar2); (**(code **)(*(longlong *)(param_1[0xb] + 0x68) + 0x60)) ((longlong *)(param_1[0xb] + 0x68),1,&DAT_14034c4b0,&local_158); FUN_14016dbe0(lVar7); } 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); return; }