|
|
"ida_pseudo": "_BYTE *__fastcall sub_1370(const char *a1)\n{\n int v2; // eax\n int v3; // ebx\n int v4; // r13d\n int v5; // r15d\n _BYTE *v6; // rdi\n const char *v7; // rsi\n int v8; // ebp\n const char *v9; // rdx\n const char *v10; // rax\n const char *v11; // rax\n _BYTE *v12; // rdx\n char v13; // cl\n __int64 v15; // rax\n char *v16; // r14\n const char *v17; // rax\n const char *v18; // rdx\n size_t v19; // [rsp+8h] [rbp-40h]\n\n v2 = strlen(a1);\n v3 = 2 * v2;\n v4 = v2;\n v5 = v2;\n v19 = 2 * v2 + 1;\n v6 = malloc(v19);\n if ( v6 )\n {\n if ( v4 <= 0 )\n {\n v6 = (_BYTE *)__strncpy_chk(v6, a1, v4, v19);\nLABEL_11:\n v6[v3] = 0;\n }\n else\n {\n v7 = a1;\n v8 = 0;\n while ( (v4 - v8) >> 1 )\n {\n v9 = &a1[v4 - 1];\n v10 = v7;\n while ( *v10 == *v9 )\n {\n ++v10;\n --v9;\n if ( v10 == &v7[(v4 - v8) >> 1] )\n goto LABEL_13;\n }\n ++v8;\n ++v7;\n if ( v5 == v8 )\n {\n v6 = (_BYTE *)__strncpy_chk(v6, a1, v4, v19);\n v11 = &a1[v4 - 1];\n v12 = &v6[v4];\n do\n {\n v13 = *v11--;\n *v12++ = v13;\n }\n while ( &a1[v4 - 2 - (v4 - 1)] != v11 );\n goto LABEL_11;\n }\n }\nLABEL_13:\n v15 = __strncpy_chk(v6, a1, v4, v19);\n v6 = (_BYTE *)v15;\n if ( v8 )\n {\n v16 = (char *)(v15 + v4);\n v17 = &a1[v8 - 1];\n do\n {\n *v16++ = *v17;\n v18 = v17--;\n }\n while ( v18 != a1 );\n }\n v6[v8 + v4] = 0;\n }\n }\n return v6;\n}" |