/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x14018df10 FUN_14018df10 * Pseudocode, not original source. */ void FUN_14018df10(longlong *param_1,undefined4 *param_2) { undefined *puVar1; int *piVar2; undefined4 *puVar3; undefined *puVar4; char cVar5; undefined **ppuVar6; undefined8 uVar7; longlong lVar8; undefined4 *puVar9; undefined8 uVar10; undefined *local_res18; undefined1 local_res20 [8]; undefined **local_188; uint local_180; undefined2 local_17c; undefined **local_178; undefined8 local_170; undefined8 local_168; undefined8 local_160; undefined8 local_158; undefined **local_128; undefined8 local_120; undefined8 local_118; undefined8 local_110; undefined8 local_108; undefined **local_100; undefined4 local_f8; undefined2 local_f4; undefined **local_f0; undefined8 local_e8; undefined8 local_e0; undefined8 local_d8; undefined8 local_d0; undefined **local_c8; undefined8 local_c0; undefined8 local_b8; undefined8 local_b0; undefined8 local_a8; undefined **local_a0; undefined8 local_98; undefined8 local_90; undefined8 local_88; undefined8 local_80; undefined8 local_78; undefined1 local_70; undefined1 local_60 [16]; undefined1 local_50 [8]; undefined8 local_48; undefined1 local_38 [16]; local_48 = 0xfffffffffffffffe; if (param_1[0xeb] != 0) { switch(*param_2) { case 4: local_120 = 0; local_118 = 0; local_110 = 0; local_108 = 0; local_128 = Proud::ByteArray::vftable; local_100 = Proud::AddrPort::vftable; local_f8 = param_2[0x2c]; local_f4 = *(undefined2 *)(param_2 + 0x2d); cVar5 = (**(code **)(*(longlong *)param_1[0xeb] + 0x48)) ((longlong *)param_1[0xeb],&local_100,param_2 + 0x30,&local_128); uVar7 = (**(code **)(*param_1 + 0x58))(param_1); local_70 = 0; local_78 = uVar7; FUN_14016db50(uVar7); local_70 = 1; if (DAT_14034c86f != '\0') { (**(code **)(*param_1 + 200))(param_1,L"Proud::CNetServerImpl::ProcessOneLocalEvent"); } local_188 = Proud::AddrPort::vftable; local_180 = param_2[0x2c]; local_17c = *(undefined2 *)(param_2 + 0x2d); lVar8 = FUN_1401747b0(param_1,&local_188); if (lVar8 != 0) { if (cVar5 == '\0') { FUN_140183a30(param_1,lVar8,&local_128); } else { FUN_14018d970(); } } FUN_14016dbe0(uVar7); FUN_14019a9e0(&local_128); break; case 5: uVar7 = 0; if (*(longlong *)(param_2 + 6) != 0) { uVar7 = *(undefined8 *)(*(longlong *)(param_2 + 6) + 0x38); } (**(code **)(*(longlong *)param_1[0xeb] + 0x38))((longlong *)param_1[0xeb],uVar7); break; case 6: uVar7 = 0; uVar10 = uVar7; if (*(longlong *)(param_2 + 2) != 0) { uVar10 = *(undefined8 *)(*(longlong *)(param_2 + 2) + 0x38); } if (*(longlong *)(param_2 + 6) != 0) { uVar7 = *(undefined8 *)(*(longlong *)(param_2 + 6) + 0x38); } (**(code **)(*(longlong *)param_1[0xeb] + 0x40)) ((longlong *)param_1[0xeb],uVar7,uVar10,param_2 + 10); break; case 7: puVar9 = (undefined4 *)0x0; if (*(longlong *)(param_2 + 2) != 0) { puVar9 = *(undefined4 **)(*(longlong *)(param_2 + 2) + 0x38); } (**(code **)(*(longlong *)param_1[0xeb] + 0x50)) ((longlong *)param_1[0xeb],param_2[0x1a],param_2[0x1b],*puVar9); break; case 0xf: (**(code **)(*(longlong *)param_1[0xeb] + 0x68)) ((longlong *)param_1[0xeb],param_2[0x1c],param_2[4]); break; case 0x10: local_e8 = 0; local_e0 = 0; local_d8 = 0; local_d0 = 0; local_f0 = Proud::ByteArray::vftable; FUN_14016d8c0(); local_res18 = PTR_DAT_1403440a0; uVar7 = FUN_140198f80(local_res20,0x10,1,&local_res18,&local_f0); (**(code **)(*param_1 + 0x38))(param_1,uVar7); puVar4 = local_res18; if (((local_res18 != (undefined *)0x0) && (local_res18 != PTR_DAT_1403440a0)) && (puVar1 = local_res18 + -8, puVar1 != (undefined *)0x0)) { ppuVar6 = (undefined **)FUN_14016d8c0(); local_180 = local_180 & 0xffffff00; local_188 = ppuVar6; FUN_14016db50(ppuVar6); local_180 = CONCAT31(local_180._1_3_,1); piVar2 = (int *)(puVar4 + -4); *piVar2 = *piVar2 + -1; if (*piVar2 == 0) { FUN_14016d970(puVar1); } FUN_14016dbe0(ppuVar6); } local_res18 = PTR_DAT_1403440a0; FUN_14019a9e0(&local_f0); break; case 0x11: (**(code **)(*(longlong *)param_1[0xeb] + 0x70))((longlong *)param_1[0xeb],param_2[0x1c]); break; case 0x13: lVar8 = 0; local_98 = 0; local_90 = 0; local_88 = 0; local_80 = 0; local_a0 = Proud::ByteArray::vftable; if (*(longlong *)(param_2 + 2) != 0) { lVar8 = *(longlong *)(*(longlong *)(param_2 + 2) + 0x38); } uVar7 = FUN_140198f80(local_60,0x19,1,lVar8 + 0x10,&local_a0); (**(code **)(*param_1 + 0x38))(param_1,uVar7); FUN_14019a9e0(&local_a0); break; case 0x14: puVar9 = (undefined4 *)0x0; local_c0 = 0; local_b8 = 0; local_b0 = 0; local_a8 = 0; local_c8 = Proud::ByteArray::vftable; lVar8 = *(longlong *)(param_2 + 2); puVar3 = puVar9; if (lVar8 != 0) { puVar9 = *(undefined4 **)(lVar8 + 0x38); puVar3 = *(undefined4 **)(lVar8 + 0x38); } uVar7 = FUN_140198f80(local_50,*puVar9,param_2[0x1c],puVar3 + 4,&local_c8); (**(code **)(*param_1 + 0x38))(param_1,uVar7); FUN_14019a9e0(&local_c8); break; case 0x15: puVar9 = (undefined4 *)0x0; local_170 = 0; local_168 = 0; local_160 = 0; local_158 = 0; local_178 = Proud::ByteArray::vftable; lVar8 = *(longlong *)(param_2 + 2); puVar3 = puVar9; if (lVar8 != 0) { puVar9 = *(undefined4 **)(lVar8 + 0x38); puVar3 = *(undefined4 **)(lVar8 + 0x38); } uVar7 = FUN_140198f80(local_38,*puVar9,param_2[0x1c],puVar3 + 4,&local_178); FUN_140186b80(param_1,uVar7); FUN_14019a9e0(&local_178); } } return; }