#include int __cdecl sub_832EC0(unsigned int MAC_or_HDD_SN, char* out_str) { unsigned int v4; // eax signed int v5; // ST24_4 int v6; // edi int v7; // edi int v8; // eax int v2; // [esp+8h] [ebp+8h] int v1; // [esp+Ch] [ebp+Ch] v4 = MAC_or_HDD_SN; if ( MAC_or_HDD_SN <= 1000000 ) { if ( MAC_or_HDD_SN <= 1000 ) v4 = 1001001 * MAC_or_HDD_SN; else v4 = 1001 * MAC_or_HDD_SN; } v5 = 112 + v4 % (532123 + 916245078); v6 = (signed int)(112 + v4 % (532123 + 916245078)) % 1000000; v2 = v5 % 1000; srand(v5); v1 = rand() % 1000; srand(v6); v7 = rand() % 1000; srand(v2); v8 = rand(); sprintf( out_str, (const char *)L"%03d%03d%03d%03d", v1, v7, v8 % 1000, (v8 % 1000 + 1000 * (v7 + 1000 * v1)) % 719); } int main() { char tmp[128]; sub_832EC0(0x29d989d4, tmp); printf ("%s\n", tmp); };