//----- (004CC640) -------------------------------------------------------- int __cdecl sub_4CC640(int a1) { int v1; // eax@1 int v2; // ebp@1 int v3; // edi@1 signed int v4; // esi@1 int result; // eax@2 int v6; // edx@3 int v7; // ebx@7 signed int v8; // edi@8 int v9; // eax@11 int v10; // edx@11 v2 = a1; v4 = 0; v1 = sub_4CC080(8 * *(_DWORD *)(a1 + 4) + 2, (int)".\\crypto\\bn\\bn_print.c", 74); v3 = v1; a1 = v1; if ( v1 ) { v6 = v1; if ( *(_DWORD *)(v2 + 12) ) { *(_BYTE *)v1 = 45; v6 = v1 + 1; } if ( !*(_DWORD *)(v2 + 4) ) *(_BYTE *)v6++ = 48; v7 = *(_DWORD *)(v2 + 4) - 1; if ( v7 >= 0 ) { do { v8 = 24; do { if ( v4 || (*(_DWORD *)(*(_DWORD *)v2 + 4 * v7) >> v8) & 0xFF ) { v9 = (*(_DWORD *)(*(_DWORD *)v2 + 4 * v7) >> v8) & 0xF; v10 = v6 + 1; v4 = 1; *(_BYTE *)(v10 - 1) = byte_50BDE8[((*(_DWORD *)(*(_DWORD *)v2 + 4 * v7) >> v8) & 0xFF) >> 4]; *(_BYTE *)v10 = byte_50BDE8[v9]; v6 = v10 + 1; } v8 -= 8; } while ( v8 >= 0 ); --v7; } while ( v7 >= 0 ); v3 = a1; } result = v3; *(_BYTE *)v6 = 0; } else { sub_4CEC20(3u, 105, 65, (int)".\\crypto\\bn\\bn_print.c", 77); result = v3; } return result; }