/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1400029e0 FUN_1400029e0 * Pseudocode, not original source. */ basic_ostream_> * FUN_1400029e0(basic_ostream_> *param_1) { bool bVar1; int iVar2; longlong lVar3; int iVar4; longlong lVar5; int iVar6; iVar4 = 0; if (*(longlong **)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48) != (longlong *)0x0) { (**(code **)(**(longlong **)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48) + 8) )(); } if ((*(int *)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x10) == 0) && (*(basic_ostream_> **) (param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x50) != (basic_ostream_> *)0x0)) { std::basic_ostream_>::flush (*(basic_ostream_> **) (param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x50)); } lVar3 = (longlong)*(int *)(*(longlong *)param_1 + 4); if (*(int *)(param_1 + lVar3 + 0x10) == 0) { if (*(longlong *)(param_1 + lVar3 + 0x28) < 2) { lVar5 = 0; } else { lVar5 = *(longlong *)(param_1 + lVar3 + 0x28) + -1; } iVar6 = 4; if ((*(uint *)(param_1 + lVar3 + 0x18) & 0x1c0) == 0x40) { LAB_140002ac0: iVar2 = std::basic_streambuf_>::sputc (*(basic_streambuf_> **) (param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48),'\n'); if (iVar2 == -1) { iVar4 = iVar6; } for (; (iVar4 == 0 && (0 < lVar5)); lVar5 = lVar5 + -1) { iVar2 = std::basic_streambuf_>::sputc (*(basic_streambuf_> **) (param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48), (char)param_1[(longlong)*(int *)(*(longlong *)param_1 + 4) + 0x58]); if (iVar2 == -1) { iVar4 = iVar6; } } } else { while (iVar4 == 0) { if (lVar5 < 1) goto LAB_140002ac0; iVar2 = std::basic_streambuf_>::sputc (*(basic_streambuf_> **) (param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48), (char)param_1[(longlong)*(int *)(*(longlong *)param_1 + 4) + 0x58]); if (iVar2 == -1) { iVar4 = iVar6; } lVar5 = lVar5 + -1; } } } *(undefined8 *)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x28) = 0; std::basic_ios_>::setstate ((basic_ios_> *) (param_1 + *(int *)(*(longlong *)param_1 + 4)),iVar4,false); bVar1 = std::uncaught_exception(); if (!bVar1) { std::basic_ostream_>::_Osfx(param_1); } if (*(longlong **)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48) != (longlong *)0x0) { (**(code **)(**(longlong **)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48) + 0x10))(); } return param_1; }