ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

صفحه 2 از 2 نخست 12
نمایش نتایج: از 11 به 20 از 20
  1. #11
    2009/10/25
    تهران
    414
    24

    پاسخ : C یا C++؟ کدوم رو انتخاب کنم؟

    نقل قول نوشته اصلی توسط روح الامین

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    @

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت


    @

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت



    نه! یه جای کار میلنگه! آقای نیری این کامپایلر شما داره یه رفتاری از خودش نشون میده که قابل قبول نیست. من بعدا codelite رو نصب میکنم و یه کامپایلر هم کنارش نصب میکنم. باید خودم دوباره بررسی کنم. خصوصا اینکه میگید یه کد مشابه برای C و C++ حجم های متفاوتی داره.
    خیلی هم خوبه. شما هم آزمایش کنید ببینید نتیجه چی میگیرید
    همین کد md4 و serpent رو که تست بنچ من بود رو از اینترنت دانلود کنید و باهاش کار کنید که بتونیم نتایج رو درست با هم مقایسه کنیم
  2. #12
    2012/12/30
    بوشهر
    3,198
    1,100

    پاسخ : C یا C++؟ کدوم رو انتخاب کنم؟

    نقل قول نوشته اصلی توسط hamidreza.nayeri

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    خیلی هم خوبه. شما هم آزمایش کنید ببینید نتیجه چی میگیرید
    همین کد md4 و serpent رو که تست بنچ من بود رو از اینترنت دانلود کنید و باهاش کار کنید که بتونیم نتایج رو درست با هم مقایسه کنیم
    سلام
    ببخشید دیر شد. (مشغله زیاده، مسافرت هم رفتم)
    من

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    رو گرفتم(ورژن 11) و

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    رو نصب کردم(ورژن 5.1)(هر دو 64 بیتی). این کد رو هم گرفتم و به پروژه هام اضافه کردم:

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت



    این کدی هستش که برای C استفاده کردم:

    کد:
    #include <stdio.h>
    
    #include <stdlib.h>
    #include <string.h>
    #include <stdint.h>
    
    /*
     *
     *      Author: George Mossessian
     *
     *      The MD4 hash algorithm, as described in https://tools.ietf.org/html/rfc1320
     */
     
     
    
     
    char *MD4(char *str, int len); //this is the prototype you want to call. Everything else is internal.
     
    typedef struct string{
            char *c;
            int len;
            char sign;
    }string;
     
    static uint32_t *MD4Digest(uint32_t *w, int len);
    static void setMD4Registers(uint32_t AA, uint32_t BB, uint32_t CC, uint32_t DD);
    static uint32_t changeEndianness(uint32_t x);
    static void resetMD4Registers(void);
    static string stringCat(string first, string second);
    static string uint32ToString(uint32_t l);
    static uint32_t stringToUint32(string s);
     
    static const char *BASE16 = "0123456789abcdef=";
     
    #define F(X,Y,Z) (((X)&(Y))|((~(X))&(Z)))
    #define G(X,Y,Z) (((X)&(Y))|((X)&(Z))|((Y)&(Z)))
    #define H(X,Y,Z) ((X)^(Y)^(Z))
     
    #define LEFTROTATE(A,N) ((A)<<(N))|((A)>>(32-(N)))
     
    #define MD4ROUND1(a,b,c,d,x,s) a += F(b,c,d) + x; a = LEFTROTATE(a, s);
    #define MD4ROUND2(a,b,c,d,x,s) a += G(b,c,d) + x + (uint32_t)0x5A827999; a = LEFTROTATE(a, s);
    #define MD4ROUND3(a,b,c,d,x,s) a += H(b,c,d) + x + (uint32_t)0x6ED9EBA1; a = LEFTROTATE(a, s);
     
    static uint32_t A = 0x67452301;
    static uint32_t B = 0xefcdab89;
    static uint32_t C = 0x98badcfe;
    static uint32_t D = 0x10325476;
     
    string newString(char * c, int t){
        string r;
        int i;
        if(c!=NULL){
            r.len = (t<=0)?strlen(c):t;
            r.c=(char *)malloc(sizeof(char)*(r.len+1));
            for(i=0; i<r.len; i++) r.c[i]=c[i];
            r.c[r.len]='\0';
            return r;
        }
        r.len=t;
        r.c=(char *)malloc(sizeof(char)*(r.len+1));
        memset(r.c,(char)0,sizeof(char)*(t+1));
        r.sign = 1;
        return r;
    }
     
    string stringCat(string first, string second){
        string str=newString(NULL, first.len+second.len);
        int i;
     
        for(i=0; i<first.len; i++){
            str.c[i]=first.c[i];
        }
        for(i=first.len; i<str.len; i++){
            str.c[i]=second.c[i-first.len];
        }
        return str;
    }
     
    string base16Encode(string in){
        string out=newString(NULL, in.len*2);
        int i,j;
     
        j=0;
        for(i=0; i<in.len; i++){
            out.c[j++]=BASE16[((in.c[i] & 0xF0)>>4)];
            out.c[j++]=BASE16[(in.c[i] & 0x0F)];
        }
        out.c[j]='\0';
        return out;
    }
     
     
    string uint32ToString(uint32_t l){
        string s = newString(NULL,4);
        int i;
        for(i=0; i<4; i++){
            s.c[i] = (l >> (8*(3-i))) & 0xFF;
        }
        return s;
    }
     
    uint32_t stringToUint32(string s){
        uint32_t l;
        int i;
        l=0;
        for(i=0; i<4; i++){
            l = l|(((uint32_t)((unsigned char)s.c[i]))<<(8*(3-i)));
        }
        return l;
    }
     
    char *MD4(char *str, int len){
        string m=newString(str, len);
        string digest;
        uint32_t *w;
        uint32_t *hash;
        uint64_t mlen=m.len;
        unsigned char oneBit = 0x80;
        int i, wlen;
     
     
        m=stringCat(m, newString((char *)&oneBit,1));
     
        //append 0 ≤ k < 512 bits '0', such that the resulting message length in bits
        //    is congruent to −64 ≡ 448 (mod 512)4
        i=((56-m.len)%64);
        if(i<0) i+=64;
        m=stringCat(m,newString(NULL, i));
     
        w = malloc(sizeof(uint32_t)*(m.len/4+2));
     
        //append length, in bits (hence <<3), least significant word first
        for(i=0; i<m.len/4; i++){
            w[i]=stringToUint32(newString(&(m.c[4*i]), 4));
        }
        w[i++] = (mlen<<3) & 0xFFFFFFFF;
        w[i++] = (mlen>>29) & 0xFFFFFFFF;
     
        wlen=i;
     
     
        //change endianness, but not for the appended message length, for some reason?
        for(i=0; i<wlen-2; i++){
            w[i]=changeEndianness(w[i]);
        }
     
        hash = MD4Digest(w,wlen);
     
        digest=newString(NULL,0);
        for(i=0; i<4; i++){
            hash[i]=changeEndianness(hash[i]);
            digest=stringCat(digest,uint32ToString(hash[i]));
        }
     
        return base16Encode(digest).c;
    }
     
    uint32_t *MD4Digest(uint32_t *w, int len){
        //assumes message.len is a multiple of 64 bytes.
        int i,j;
        uint32_t X[16];
        uint32_t *digest = malloc(sizeof(uint32_t)*4);
        uint32_t AA, BB, CC, DD;
     
        for(i=0; i<len/16; i++){
            for(j=0; j<16; j++){
                X[j]=w[i*16+j];
            }
     
            AA=A;
            BB=B;
            CC=C;
            DD=D;
     
            MD4ROUND1(A,B,C,D,X[0],3);
            MD4ROUND1(D,A,B,C,X[1],7);
            MD4ROUND1(C,D,A,B,X[2],11);
            MD4ROUND1(B,C,D,A,X[3],19);
            MD4ROUND1(A,B,C,D,X[4],3);
            MD4ROUND1(D,A,B,C,X[5],7);
            MD4ROUND1(C,D,A,B,X[6],11);
            MD4ROUND1(B,C,D,A,X[7],19);
            MD4ROUND1(A,B,C,D,X[8],3);
            MD4ROUND1(D,A,B,C,X[9],7);
            MD4ROUND1(C,D,A,B,X[10],11);
            MD4ROUND1(B,C,D,A,X[11],19);
            MD4ROUND1(A,B,C,D,X[12],3);
            MD4ROUND1(D,A,B,C,X[13],7);
            MD4ROUND1(C,D,A,B,X[14],11);
            MD4ROUND1(B,C,D,A,X[15],19);
     
            MD4ROUND2(A,B,C,D,X[0],3);
            MD4ROUND2(D,A,B,C,X[4],5);
            MD4ROUND2(C,D,A,B,X[8],9);
            MD4ROUND2(B,C,D,A,X[12],13);
            MD4ROUND2(A,B,C,D,X[1],3);
            MD4ROUND2(D,A,B,C,X[5],5);
            MD4ROUND2(C,D,A,B,X[9],9);
            MD4ROUND2(B,C,D,A,X[13],13);
            MD4ROUND2(A,B,C,D,X[2],3);
            MD4ROUND2(D,A,B,C,X[6],5);
            MD4ROUND2(C,D,A,B,X[10],9);
            MD4ROUND2(B,C,D,A,X[14],13);
            MD4ROUND2(A,B,C,D,X[3],3);
            MD4ROUND2(D,A,B,C,X[7],5);
            MD4ROUND2(C,D,A,B,X[11],9);
            MD4ROUND2(B,C,D,A,X[15],13);
     
            MD4ROUND3(A,B,C,D,X[0],3);
            MD4ROUND3(D,A,B,C,X[8],9);
            MD4ROUND3(C,D,A,B,X[4],11);
            MD4ROUND3(B,C,D,A,X[12],15);
            MD4ROUND3(A,B,C,D,X[2],3);
            MD4ROUND3(D,A,B,C,X[10],9);
            MD4ROUND3(C,D,A,B,X[6],11);
            MD4ROUND3(B,C,D,A,X[14],15);
            MD4ROUND3(A,B,C,D,X[1],3);
            MD4ROUND3(D,A,B,C,X[9],9);
            MD4ROUND3(C,D,A,B,X[5],11);
            MD4ROUND3(B,C,D,A,X[13],15);
            MD4ROUND3(A,B,C,D,X[3],3);
            MD4ROUND3(D,A,B,C,X[11],9);
            MD4ROUND3(C,D,A,B,X[7],11);
            MD4ROUND3(B,C,D,A,X[15],15);
     
            A+=AA;
            B+=BB;
            C+=CC;
            D+=DD;
        }
     
        digest[0]=A;
        digest[1]=B;
        digest[2]=C;
        digest[3]=D;
        resetMD4Registers();
        return digest;
    }
     
    uint32_t changeEndianness(uint32_t x){
        return ((x & 0xFF) << 24) | ((x & 0xFF00) << 8) | ((x & 0xFF0000) >> 8) | ((x & 0xFF000000) >> 24);
    }
     
    void setMD4Registers(uint32_t AA, uint32_t BB, uint32_t CC, uint32_t DD){
        A=AA;
        B=BB;
        C=CC;
        D=DD;
    }
     
    void resetMD4Registers(void){
        setMD4Registers(0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476);
    }
    int main(int argc, char **argv)
    {
        printf("%s\n", MD4("Rosetta Code", 12));
        printf("hello world\n");
        return 0;
    }
    و برای C++ هم همین رو گذاشتم فقط توی دو خط کاستینگ انجام دادم:

    کد:
    #include <stdio.h>
    
    #include <stdlib.h>
    #include <string.h>
    #include <stdint.h>
    
    /*
     *
     *      Author: George Mossessian
     *
     *      The MD4 hash algorithm, as described in https://tools.ietf.org/html/rfc1320
     */
     
     
    
     
    char *MD4(char *str, int len); //this is the prototype you want to call. Everything else is internal.
     
    typedef struct string{
            char *c;
            int len;
            char sign;
    }string;
     
    static uint32_t *MD4Digest(uint32_t *w, int len);
    static void setMD4Registers(uint32_t AA, uint32_t BB, uint32_t CC, uint32_t DD);
    static uint32_t changeEndianness(uint32_t x);
    static void resetMD4Registers(void);
    static string stringCat(string first, string second);
    static string uint32ToString(uint32_t l);
    static uint32_t stringToUint32(string s);
     
    static const char *BASE16 = "0123456789abcdef=";
     
    #define F(X,Y,Z) (((X)&(Y))|((~(X))&(Z)))
    #define G(X,Y,Z) (((X)&(Y))|((X)&(Z))|((Y)&(Z)))
    #define H(X,Y,Z) ((X)^(Y)^(Z))
     
    #define LEFTROTATE(A,N) ((A)<<(N))|((A)>>(32-(N)))
     
    #define MD4ROUND1(a,b,c,d,x,s) a += F(b,c,d) + x; a = LEFTROTATE(a, s);
    #define MD4ROUND2(a,b,c,d,x,s) a += G(b,c,d) + x + (uint32_t)0x5A827999; a = LEFTROTATE(a, s);
    #define MD4ROUND3(a,b,c,d,x,s) a += H(b,c,d) + x + (uint32_t)0x6ED9EBA1; a = LEFTROTATE(a, s);
     
    static uint32_t A = 0x67452301;
    static uint32_t B = 0xefcdab89;
    static uint32_t C = 0x98badcfe;
    static uint32_t D = 0x10325476;
     
    string newString(char * c, int t){
        string r;
        int i;
        if(c!=NULL){
            r.len = (t<=0)?strlen(c):t;
            r.c=(char *)malloc(sizeof(char)*(r.len+1));
            for(i=0; i<r.len; i++) r.c[i]=c[i];
            r.c[r.len]='\0';
            return r;
        }
        r.len=t;
        r.c=(char *)malloc(sizeof(char)*(r.len+1));
        memset(r.c,(char)0,sizeof(char)*(t+1));
        r.sign = 1;
        return r;
    }
     
    string stringCat(string first, string second){
        string str=newString(NULL, first.len+second.len);
        int i;
     
        for(i=0; i<first.len; i++){
            str.c[i]=first.c[i];
        }
        for(i=first.len; i<str.len; i++){
            str.c[i]=second.c[i-first.len];
        }
        return str;
    }
     
    string base16Encode(string in){
        string out=newString(NULL, in.len*2);
        int i,j;
     
        j=0;
        for(i=0; i<in.len; i++){
            out.c[j++]=BASE16[((in.c[i] & 0xF0)>>4)];
            out.c[j++]=BASE16[(in.c[i] & 0x0F)];
        }
        out.c[j]='\0';
        return out;
    }
     
     
    string uint32ToString(uint32_t l){
        string s = newString(NULL,4);
        int i;
        for(i=0; i<4; i++){
            s.c[i] = (l >> (8*(3-i))) & 0xFF;
        }
        return s;
    }
     
    uint32_t stringToUint32(string s){
        uint32_t l;
        int i;
        l=0;
        for(i=0; i<4; i++){
            l = l|(((uint32_t)((unsigned char)s.c[i]))<<(8*(3-i)));
        }
        return l;
    }
     
    char *MD4(char *str, int len){
        string m=newString(str, len);
        string digest;
        uint32_t *w;
        uint32_t *hash;
        uint64_t mlen=m.len;
        unsigned char oneBit = 0x80;
        int i, wlen;
     
     
        m=stringCat(m, newString((char *)&oneBit,1));
     
        //append 0 ≤ k < 512 bits '0', such that the resulting message length in bits
        //    is congruent to −64 ≡ 448 (mod 512)4
        i=((56-m.len)%64);
        if(i<0) i+=64;
        m=stringCat(m,newString(NULL, i));
     
        w = (uint32_t *)malloc(sizeof(uint32_t)*(m.len/4+2));
     
        //append length, in bits (hence <<3), least significant word first
        for(i=0; i<m.len/4; i++){
            w[i]=stringToUint32(newString(&(m.c[4*i]), 4));
        }
        w[i++] = (mlen<<3) & 0xFFFFFFFF;
        w[i++] = (mlen>>29) & 0xFFFFFFFF;
     
        wlen=i;
     
     
        //change endianness, but not for the appended message length, for some reason?
        for(i=0; i<wlen-2; i++){
            w[i]=changeEndianness(w[i]);
        }
     
        hash = MD4Digest(w,wlen);
     
        digest=newString(NULL,0);
        for(i=0; i<4; i++){
            hash[i]=changeEndianness(hash[i]);
            digest=stringCat(digest,uint32ToString(hash[i]));
        }
     
        return base16Encode(digest).c;
    }
     
    uint32_t *MD4Digest(uint32_t *w, int len){
        //assumes message.len is a multiple of 64 bytes.
        int i,j;
        uint32_t X[16];
        uint32_t *digest = (uint32_t *)malloc(sizeof(uint32_t)*4);
        uint32_t AA, BB, CC, DD;
     
        for(i=0; i<len/16; i++){
            for(j=0; j<16; j++){
                X[j]=w[i*16+j];
            }
     
            AA=A;
            BB=B;
            CC=C;
            DD=D;
     
            MD4ROUND1(A,B,C,D,X[0],3);
            MD4ROUND1(D,A,B,C,X[1],7);
            MD4ROUND1(C,D,A,B,X[2],11);
            MD4ROUND1(B,C,D,A,X[3],19);
            MD4ROUND1(A,B,C,D,X[4],3);
            MD4ROUND1(D,A,B,C,X[5],7);
            MD4ROUND1(C,D,A,B,X[6],11);
            MD4ROUND1(B,C,D,A,X[7],19);
            MD4ROUND1(A,B,C,D,X[8],3);
            MD4ROUND1(D,A,B,C,X[9],7);
            MD4ROUND1(C,D,A,B,X[10],11);
            MD4ROUND1(B,C,D,A,X[11],19);
            MD4ROUND1(A,B,C,D,X[12],3);
            MD4ROUND1(D,A,B,C,X[13],7);
            MD4ROUND1(C,D,A,B,X[14],11);
            MD4ROUND1(B,C,D,A,X[15],19);
     
            MD4ROUND2(A,B,C,D,X[0],3);
            MD4ROUND2(D,A,B,C,X[4],5);
            MD4ROUND2(C,D,A,B,X[8],9);
            MD4ROUND2(B,C,D,A,X[12],13);
            MD4ROUND2(A,B,C,D,X[1],3);
            MD4ROUND2(D,A,B,C,X[5],5);
            MD4ROUND2(C,D,A,B,X[9],9);
            MD4ROUND2(B,C,D,A,X[13],13);
            MD4ROUND2(A,B,C,D,X[2],3);
            MD4ROUND2(D,A,B,C,X[6],5);
            MD4ROUND2(C,D,A,B,X[10],9);
            MD4ROUND2(B,C,D,A,X[14],13);
            MD4ROUND2(A,B,C,D,X[3],3);
            MD4ROUND2(D,A,B,C,X[7],5);
            MD4ROUND2(C,D,A,B,X[11],9);
            MD4ROUND2(B,C,D,A,X[15],13);
     
            MD4ROUND3(A,B,C,D,X[0],3);
            MD4ROUND3(D,A,B,C,X[8],9);
            MD4ROUND3(C,D,A,B,X[4],11);
            MD4ROUND3(B,C,D,A,X[12],15);
            MD4ROUND3(A,B,C,D,X[2],3);
            MD4ROUND3(D,A,B,C,X[10],9);
            MD4ROUND3(C,D,A,B,X[6],11);
            MD4ROUND3(B,C,D,A,X[14],15);
            MD4ROUND3(A,B,C,D,X[1],3);
            MD4ROUND3(D,A,B,C,X[9],9);
            MD4ROUND3(C,D,A,B,X[5],11);
            MD4ROUND3(B,C,D,A,X[13],15);
            MD4ROUND3(A,B,C,D,X[3],3);
            MD4ROUND3(D,A,B,C,X[11],9);
            MD4ROUND3(C,D,A,B,X[7],11);
            MD4ROUND3(B,C,D,A,X[15],15);
     
            A+=AA;
            B+=BB;
            C+=CC;
            D+=DD;
        }
     
        digest[0]=A;
        digest[1]=B;
        digest[2]=C;
        digest[3]=D;
        resetMD4Registers();
        return digest;
    }
     
    uint32_t changeEndianness(uint32_t x){
        return ((x & 0xFF) << 24) | ((x & 0xFF00) << 8) | ((x & 0xFF0000) >> 8) | ((x & 0xFF000000) >> 24);
    }
     
    void setMD4Registers(uint32_t AA, uint32_t BB, uint32_t CC, uint32_t DD){
        A=AA;
        B=BB;
        C=CC;
        D=DD;
    }
     
    void resetMD4Registers(void){
        setMD4Registers(0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476);
    }
    
    int main(int argc, char **argv)
    {
        printf("%s\n", MD4("Rosetta Code", 12));
        printf("hello world\n");
        return 0;
    }
    اینم یه عکس از محیط برنامه:



    اینم حجم فایل اجرایی تولیدی زبان C:





    اینم حجم فایل اجرایی تولیدی زبان C++:




    اگه برات چیزی قابل قبول نیست بگو تا تغییرات لازم رو بدم.
    کد C رو با GCC و کد C++ رو با G++ کامپایل کردم.


    دلیل: ادغام دو پست برای جلوگیری از اسپم

    نظرتون چیه؟
  3. #13
    2009/10/25
    تهران
    414
    24

    پاسخ : C یا C++؟ کدوم رو انتخاب کنم؟

    نقل قول نوشته اصلی توسط روح الامین

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت



    سلام
    ببخشید دیر شد. (مشغله زیاده، مسافرت هم رفتم)
    من

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    رو گرفتم(ورژن 11) و

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    رو نصب کردم(ورژن 5.1)(هر دو 64 بیتی). این کد رو هم گرفتم و به پروژه هام اضافه کردم:

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت



    این کدی هستش که برای C استفاده کردم:

    کد:
    #include <stdio.h>
    
    #include <stdlib.h>
    #include <string.h>
    #include <stdint.h>
    
    /*
     *
     *      Author: George Mossessian
     *
     *      The MD4 hash algorithm, as described in https://tools.ietf.org/html/rfc1320
     */
     
     
    
     
    char *MD4(char *str, int len); //this is the prototype you want to call. Everything else is internal.
     
    typedef struct string{
            char *c;
            int len;
            char sign;
    }string;
     
    static uint32_t *MD4Digest(uint32_t *w, int len);
    static void setMD4Registers(uint32_t AA, uint32_t BB, uint32_t CC, uint32_t DD);
    static uint32_t changeEndianness(uint32_t x);
    static void resetMD4Registers(void);
    static string stringCat(string first, string second);
    static string uint32ToString(uint32_t l);
    static uint32_t stringToUint32(string s);
     
    static const char *BASE16 = "0123456789abcdef=";
     
    #define F(X,Y,Z) (((X)&(Y))|((~(X))&(Z)))
    #define G(X,Y,Z) (((X)&(Y))|((X)&(Z))|((Y)&(Z)))
    #define H(X,Y,Z) ((X)^(Y)^(Z))
     
    #define LEFTROTATE(A,N) ((A)<<(N))|((A)>>(32-(N)))
     
    #define MD4ROUND1(a,b,c,d,x,s) a += F(b,c,d) + x; a = LEFTROTATE(a, s);
    #define MD4ROUND2(a,b,c,d,x,s) a += G(b,c,d) + x + (uint32_t)0x5A827999; a = LEFTROTATE(a, s);
    #define MD4ROUND3(a,b,c,d,x,s) a += H(b,c,d) + x + (uint32_t)0x6ED9EBA1; a = LEFTROTATE(a, s);
     
    static uint32_t A = 0x67452301;
    static uint32_t B = 0xefcdab89;
    static uint32_t C = 0x98badcfe;
    static uint32_t D = 0x10325476;
     
    string newString(char * c, int t){
        string r;
        int i;
        if(c!=NULL){
            r.len = (t<=0)?strlen(c):t;
            r.c=(char *)malloc(sizeof(char)*(r.len+1));
            for(i=0; i<r.len; i++) r.c[i]=c[i];
            r.c[r.len]='\0';
            return r;
        }
        r.len=t;
        r.c=(char *)malloc(sizeof(char)*(r.len+1));
        memset(r.c,(char)0,sizeof(char)*(t+1));
        r.sign = 1;
        return r;
    }
     
    string stringCat(string first, string second){
        string str=newString(NULL, first.len+second.len);
        int i;
     
        for(i=0; i<first.len; i++){
            str.c[i]=first.c[i];
        }
        for(i=first.len; i<str.len; i++){
            str.c[i]=second.c[i-first.len];
        }
        return str;
    }
     
    string base16Encode(string in){
        string out=newString(NULL, in.len*2);
        int i,j;
     
        j=0;
        for(i=0; i<in.len; i++){
            out.c[j++]=BASE16[((in.c[i] & 0xF0)>>4)];
            out.c[j++]=BASE16[(in.c[i] & 0x0F)];
        }
        out.c[j]='\0';
        return out;
    }
     
     
    string uint32ToString(uint32_t l){
        string s = newString(NULL,4);
        int i;
        for(i=0; i<4; i++){
            s.c[i] = (l >> (8*(3-i))) & 0xFF;
        }
        return s;
    }
     
    uint32_t stringToUint32(string s){
        uint32_t l;
        int i;
        l=0;
        for(i=0; i<4; i++){
            l = l|(((uint32_t)((unsigned char)s.c[i]))<<(8*(3-i)));
        }
        return l;
    }
     
    char *MD4(char *str, int len){
        string m=newString(str, len);
        string digest;
        uint32_t *w;
        uint32_t *hash;
        uint64_t mlen=m.len;
        unsigned char oneBit = 0x80;
        int i, wlen;
     
     
        m=stringCat(m, newString((char *)&oneBit,1));
     
        //append 0 ≤ k < 512 bits '0', such that the resulting message length in bits
        //    is congruent to −64 ≡ 448 (mod 512)4
        i=((56-m.len)%64);
        if(i<0) i+=64;
        m=stringCat(m,newString(NULL, i));
     
        w = malloc(sizeof(uint32_t)*(m.len/4+2));
     
        //append length, in bits (hence <<3), least significant word first
        for(i=0; i<m.len/4; i++){
            w[i]=stringToUint32(newString(&(m.c[4*i]), 4));
        }
        w[i++] = (mlen<<3) & 0xFFFFFFFF;
        w[i++] = (mlen>>29) & 0xFFFFFFFF;
     
        wlen=i;
     
     
        //change endianness, but not for the appended message length, for some reason?
        for(i=0; i<wlen-2; i++){
            w[i]=changeEndianness(w[i]);
        }
     
        hash = MD4Digest(w,wlen);
     
        digest=newString(NULL,0);
        for(i=0; i<4; i++){
            hash[i]=changeEndianness(hash[i]);
            digest=stringCat(digest,uint32ToString(hash[i]));
        }
     
        return base16Encode(digest).c;
    }
     
    uint32_t *MD4Digest(uint32_t *w, int len){
        //assumes message.len is a multiple of 64 bytes.
        int i,j;
        uint32_t X[16];
        uint32_t *digest = malloc(sizeof(uint32_t)*4);
        uint32_t AA, BB, CC, DD;
     
        for(i=0; i<len/16; i++){
            for(j=0; j<16; j++){
                X[j]=w[i*16+j];
            }
     
            AA=A;
            BB=B;
            CC=C;
            DD=D;
     
            MD4ROUND1(A,B,C,D,X[0],3);
            MD4ROUND1(D,A,B,C,X[1],7);
            MD4ROUND1(C,D,A,B,X[2],11);
            MD4ROUND1(B,C,D,A,X[3],19);
            MD4ROUND1(A,B,C,D,X[4],3);
            MD4ROUND1(D,A,B,C,X[5],7);
            MD4ROUND1(C,D,A,B,X[6],11);
            MD4ROUND1(B,C,D,A,X[7],19);
            MD4ROUND1(A,B,C,D,X[8],3);
            MD4ROUND1(D,A,B,C,X[9],7);
            MD4ROUND1(C,D,A,B,X[10],11);
            MD4ROUND1(B,C,D,A,X[11],19);
            MD4ROUND1(A,B,C,D,X[12],3);
            MD4ROUND1(D,A,B,C,X[13],7);
            MD4ROUND1(C,D,A,B,X[14],11);
            MD4ROUND1(B,C,D,A,X[15],19);
     
            MD4ROUND2(A,B,C,D,X[0],3);
            MD4ROUND2(D,A,B,C,X[4],5);
            MD4ROUND2(C,D,A,B,X[8],9);
            MD4ROUND2(B,C,D,A,X[12],13);
            MD4ROUND2(A,B,C,D,X[1],3);
            MD4ROUND2(D,A,B,C,X[5],5);
            MD4ROUND2(C,D,A,B,X[9],9);
            MD4ROUND2(B,C,D,A,X[13],13);
            MD4ROUND2(A,B,C,D,X[2],3);
            MD4ROUND2(D,A,B,C,X[6],5);
            MD4ROUND2(C,D,A,B,X[10],9);
            MD4ROUND2(B,C,D,A,X[14],13);
            MD4ROUND2(A,B,C,D,X[3],3);
            MD4ROUND2(D,A,B,C,X[7],5);
            MD4ROUND2(C,D,A,B,X[11],9);
            MD4ROUND2(B,C,D,A,X[15],13);
     
            MD4ROUND3(A,B,C,D,X[0],3);
            MD4ROUND3(D,A,B,C,X[8],9);
            MD4ROUND3(C,D,A,B,X[4],11);
            MD4ROUND3(B,C,D,A,X[12],15);
            MD4ROUND3(A,B,C,D,X[2],3);
            MD4ROUND3(D,A,B,C,X[10],9);
            MD4ROUND3(C,D,A,B,X[6],11);
            MD4ROUND3(B,C,D,A,X[14],15);
            MD4ROUND3(A,B,C,D,X[1],3);
            MD4ROUND3(D,A,B,C,X[9],9);
            MD4ROUND3(C,D,A,B,X[5],11);
            MD4ROUND3(B,C,D,A,X[13],15);
            MD4ROUND3(A,B,C,D,X[3],3);
            MD4ROUND3(D,A,B,C,X[11],9);
            MD4ROUND3(C,D,A,B,X[7],11);
            MD4ROUND3(B,C,D,A,X[15],15);
     
            A+=AA;
            B+=BB;
            C+=CC;
            D+=DD;
        }
     
        digest[0]=A;
        digest[1]=B;
        digest[2]=C;
        digest[3]=D;
        resetMD4Registers();
        return digest;
    }
     
    uint32_t changeEndianness(uint32_t x){
        return ((x & 0xFF) << 24) | ((x & 0xFF00) << 8) | ((x & 0xFF0000) >> 8) | ((x & 0xFF000000) >> 24);
    }
     
    void setMD4Registers(uint32_t AA, uint32_t BB, uint32_t CC, uint32_t DD){
        A=AA;
        B=BB;
        C=CC;
        D=DD;
    }
     
    void resetMD4Registers(void){
        setMD4Registers(0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476);
    }
    int main(int argc, char **argv)
    {
        printf("%s\n", MD4("Rosetta Code", 12));
        printf("hello world\n");
        return 0;
    }
    و برای C++ هم همین رو گذاشتم فقط توی دو خط کاستینگ انجام دادم:

    کد:
    #include <stdio.h>
    
    #include <stdlib.h>
    #include <string.h>
    #include <stdint.h>
    
    /*
     *
     *      Author: George Mossessian
     *
     *      The MD4 hash algorithm, as described in https://tools.ietf.org/html/rfc1320
     */
     
     
    
     
    char *MD4(char *str, int len); //this is the prototype you want to call. Everything else is internal.
     
    typedef struct string{
            char *c;
            int len;
            char sign;
    }string;
     
    static uint32_t *MD4Digest(uint32_t *w, int len);
    static void setMD4Registers(uint32_t AA, uint32_t BB, uint32_t CC, uint32_t DD);
    static uint32_t changeEndianness(uint32_t x);
    static void resetMD4Registers(void);
    static string stringCat(string first, string second);
    static string uint32ToString(uint32_t l);
    static uint32_t stringToUint32(string s);
     
    static const char *BASE16 = "0123456789abcdef=";
     
    #define F(X,Y,Z) (((X)&(Y))|((~(X))&(Z)))
    #define G(X,Y,Z) (((X)&(Y))|((X)&(Z))|((Y)&(Z)))
    #define H(X,Y,Z) ((X)^(Y)^(Z))
     
    #define LEFTROTATE(A,N) ((A)<<(N))|((A)>>(32-(N)))
     
    #define MD4ROUND1(a,b,c,d,x,s) a += F(b,c,d) + x; a = LEFTROTATE(a, s);
    #define MD4ROUND2(a,b,c,d,x,s) a += G(b,c,d) + x + (uint32_t)0x5A827999; a = LEFTROTATE(a, s);
    #define MD4ROUND3(a,b,c,d,x,s) a += H(b,c,d) + x + (uint32_t)0x6ED9EBA1; a = LEFTROTATE(a, s);
     
    static uint32_t A = 0x67452301;
    static uint32_t B = 0xefcdab89;
    static uint32_t C = 0x98badcfe;
    static uint32_t D = 0x10325476;
     
    string newString(char * c, int t){
        string r;
        int i;
        if(c!=NULL){
            r.len = (t<=0)?strlen(c):t;
            r.c=(char *)malloc(sizeof(char)*(r.len+1));
            for(i=0; i<r.len; i++) r.c[i]=c[i];
            r.c[r.len]='\0';
            return r;
        }
        r.len=t;
        r.c=(char *)malloc(sizeof(char)*(r.len+1));
        memset(r.c,(char)0,sizeof(char)*(t+1));
        r.sign = 1;
        return r;
    }
     
    string stringCat(string first, string second){
        string str=newString(NULL, first.len+second.len);
        int i;
     
        for(i=0; i<first.len; i++){
            str.c[i]=first.c[i];
        }
        for(i=first.len; i<str.len; i++){
            str.c[i]=second.c[i-first.len];
        }
        return str;
    }
     
    string base16Encode(string in){
        string out=newString(NULL, in.len*2);
        int i,j;
     
        j=0;
        for(i=0; i<in.len; i++){
            out.c[j++]=BASE16[((in.c[i] & 0xF0)>>4)];
            out.c[j++]=BASE16[(in.c[i] & 0x0F)];
        }
        out.c[j]='\0';
        return out;
    }
     
     
    string uint32ToString(uint32_t l){
        string s = newString(NULL,4);
        int i;
        for(i=0; i<4; i++){
            s.c[i] = (l >> (8*(3-i))) & 0xFF;
        }
        return s;
    }
     
    uint32_t stringToUint32(string s){
        uint32_t l;
        int i;
        l=0;
        for(i=0; i<4; i++){
            l = l|(((uint32_t)((unsigned char)s.c[i]))<<(8*(3-i)));
        }
        return l;
    }
     
    char *MD4(char *str, int len){
        string m=newString(str, len);
        string digest;
        uint32_t *w;
        uint32_t *hash;
        uint64_t mlen=m.len;
        unsigned char oneBit = 0x80;
        int i, wlen;
     
     
        m=stringCat(m, newString((char *)&oneBit,1));
     
        //append 0 ≤ k < 512 bits '0', such that the resulting message length in bits
        //    is congruent to −64 ≡ 448 (mod 512)4
        i=((56-m.len)%64);
        if(i<0) i+=64;
        m=stringCat(m,newString(NULL, i));
     
        w = (uint32_t *)malloc(sizeof(uint32_t)*(m.len/4+2));
     
        //append length, in bits (hence <<3), least significant word first
        for(i=0; i<m.len/4; i++){
            w[i]=stringToUint32(newString(&(m.c[4*i]), 4));
        }
        w[i++] = (mlen<<3) & 0xFFFFFFFF;
        w[i++] = (mlen>>29) & 0xFFFFFFFF;
     
        wlen=i;
     
     
        //change endianness, but not for the appended message length, for some reason?
        for(i=0; i<wlen-2; i++){
            w[i]=changeEndianness(w[i]);
        }
     
        hash = MD4Digest(w,wlen);
     
        digest=newString(NULL,0);
        for(i=0; i<4; i++){
            hash[i]=changeEndianness(hash[i]);
            digest=stringCat(digest,uint32ToString(hash[i]));
        }
     
        return base16Encode(digest).c;
    }
     
    uint32_t *MD4Digest(uint32_t *w, int len){
        //assumes message.len is a multiple of 64 bytes.
        int i,j;
        uint32_t X[16];
        uint32_t *digest = (uint32_t *)malloc(sizeof(uint32_t)*4);
        uint32_t AA, BB, CC, DD;
     
        for(i=0; i<len/16; i++){
            for(j=0; j<16; j++){
                X[j]=w[i*16+j];
            }
     
            AA=A;
            BB=B;
            CC=C;
            DD=D;
     
            MD4ROUND1(A,B,C,D,X[0],3);
            MD4ROUND1(D,A,B,C,X[1],7);
            MD4ROUND1(C,D,A,B,X[2],11);
            MD4ROUND1(B,C,D,A,X[3],19);
            MD4ROUND1(A,B,C,D,X[4],3);
            MD4ROUND1(D,A,B,C,X[5],7);
            MD4ROUND1(C,D,A,B,X[6],11);
            MD4ROUND1(B,C,D,A,X[7],19);
            MD4ROUND1(A,B,C,D,X[8],3);
            MD4ROUND1(D,A,B,C,X[9],7);
            MD4ROUND1(C,D,A,B,X[10],11);
            MD4ROUND1(B,C,D,A,X[11],19);
            MD4ROUND1(A,B,C,D,X[12],3);
            MD4ROUND1(D,A,B,C,X[13],7);
            MD4ROUND1(C,D,A,B,X[14],11);
            MD4ROUND1(B,C,D,A,X[15],19);
     
            MD4ROUND2(A,B,C,D,X[0],3);
            MD4ROUND2(D,A,B,C,X[4],5);
            MD4ROUND2(C,D,A,B,X[8],9);
            MD4ROUND2(B,C,D,A,X[12],13);
            MD4ROUND2(A,B,C,D,X[1],3);
            MD4ROUND2(D,A,B,C,X[5],5);
            MD4ROUND2(C,D,A,B,X[9],9);
            MD4ROUND2(B,C,D,A,X[13],13);
            MD4ROUND2(A,B,C,D,X[2],3);
            MD4ROUND2(D,A,B,C,X[6],5);
            MD4ROUND2(C,D,A,B,X[10],9);
            MD4ROUND2(B,C,D,A,X[14],13);
            MD4ROUND2(A,B,C,D,X[3],3);
            MD4ROUND2(D,A,B,C,X[7],5);
            MD4ROUND2(C,D,A,B,X[11],9);
            MD4ROUND2(B,C,D,A,X[15],13);
     
            MD4ROUND3(A,B,C,D,X[0],3);
            MD4ROUND3(D,A,B,C,X[8],9);
            MD4ROUND3(C,D,A,B,X[4],11);
            MD4ROUND3(B,C,D,A,X[12],15);
            MD4ROUND3(A,B,C,D,X[2],3);
            MD4ROUND3(D,A,B,C,X[10],9);
            MD4ROUND3(C,D,A,B,X[6],11);
            MD4ROUND3(B,C,D,A,X[14],15);
            MD4ROUND3(A,B,C,D,X[1],3);
            MD4ROUND3(D,A,B,C,X[9],9);
            MD4ROUND3(C,D,A,B,X[5],11);
            MD4ROUND3(B,C,D,A,X[13],15);
            MD4ROUND3(A,B,C,D,X[3],3);
            MD4ROUND3(D,A,B,C,X[11],9);
            MD4ROUND3(C,D,A,B,X[7],11);
            MD4ROUND3(B,C,D,A,X[15],15);
     
            A+=AA;
            B+=BB;
            C+=CC;
            D+=DD;
        }
     
        digest[0]=A;
        digest[1]=B;
        digest[2]=C;
        digest[3]=D;
        resetMD4Registers();
        return digest;
    }
     
    uint32_t changeEndianness(uint32_t x){
        return ((x & 0xFF) << 24) | ((x & 0xFF00) << 8) | ((x & 0xFF0000) >> 8) | ((x & 0xFF000000) >> 24);
    }
     
    void setMD4Registers(uint32_t AA, uint32_t BB, uint32_t CC, uint32_t DD){
        A=AA;
        B=BB;
        C=CC;
        D=DD;
    }
     
    void resetMD4Registers(void){
        setMD4Registers(0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476);
    }
    
    int main(int argc, char **argv)
    {
        printf("%s\n", MD4("Rosetta Code", 12));
        printf("hello world\n");
        return 0;
    }
    اینم یه عکس از محیط برنامه:



    اینم حجم فایل اجرایی تولیدی زبان C:





    اینم حجم فایل اجرایی تولیدی زبان C++:




    اگه برات چیزی قابل قبول نیست بگو تا تغییرات لازم رو بدم.
    کد C رو با GCC و کد C++ رو با G++ کامپایل کردم.


    دلیل: ادغام دو پست برای جلوگیری از اسپم

    نظرتون چیه؟
    سلام
    دستتون درد نکنه
    خب شما هم دو تا حجم مختلف گرفتید که
    یکیش شده ۱۴۲۵۷۶ بایت و دیگری شده ۱۴۲۶۷۳ بایت
    ضمن این که من حجم خیلی کمتری از شما گرفتم

    ببینید لازم نیست خیلی با هم فرق داشته باشن که همین که برای کد Serpent میبینید تو سی و خورده ای کیلوبایت ۴ کیلوبایت اختلاف ایجاد میشه تایید کننده همین مطلبه که آبجکت کد تولید شده توسط این دو تا فرق دارن
    ضمنا من یه مقدار مطالعه بیشتر هم کردم رو این موضوع. زبان C یک زبان برای برنامه نویسی سیستمیه در حالی که C++ برای برنامه نویسی همه منظوره ساخته شده. طبیعیه که باید کدی که ایجاد میکنن فرق داشته باشه. شما میدونید کد سیستم عامل لینوکس ۹۰ درصدش با سی نوشته شده. اگر سی پلاس پلاس همون توانایی رو داشت خب با سی پلاس پلاس مینوشتن که راحت تر هم باشه. از این نمونه ها دوست عزیز زیاد هست. ولی من واقعا میگم دیگه دلیلی نمیبینم وقتی یک چیزی رو خودم به مراتب تو کار تجربه کردم باز بخوام بیام سرش جر و بحث الکی بکنم. حالا باز خودتون میدونید

    یه مسئله دیگه. شما آبجکت کد هات سه برابر آبجکت کد من (برای ام دی ۴) حجم دارن. همین نشون میده شما نتونستید کامپایلرتون رو درست کانفیگ کنید.
    درست کانفیگ کنید و نتایج مشابه بگیرید بعد مقایسه کنید
    ویرایش توسط hamidreza.nayeri : 2018/02/09 در ساعت 10:42
  4. #14
    2012/12/30
    بوشهر
    3,198
    1,100

    پاسخ : C یا C++؟ کدوم رو انتخاب کنم؟

    @

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت



    سلام
    خواهش میکنم. مهندس زیاد ایراد نگیر ازم چون بخدا هم وقتم کمه و هم سعی میکنم حتما به سوال ها و درخواست هام تا جای ممکن جواب بدم. به محض نصب کامپایلر و IDE اولین کدی که پیدا کردم رو ریختم توی فایل و کامپایل کردم(به کدها نگاه کنی کاملا معلومه که همین جوری سریع ریختم). من با GCC ه زیاد کار نکردم. فقط خیلی وقت پیش که با اتمل استودیو کار میکردم چندبار با این کامپایلر کار کردم.خیلی وقت نگرفت که سریع اومدم سراغ STM32 و با کیل کار کردم. بیشتر وقتم با کیل بوده. اینکه اگه بهت میگم ممکنه کانفیگ درست نکرده باشی بخاطر اینه که منم خودم باهاش زیاد کار نکردم. من بررسی بیشتری انجام میدم و دوباره گزارش میدم. اینم دو فایل .S مربوط به همین دو فایل هستش که اینجا قرار میدم:

    برای C:


    کد:
        .file    "main.c"
        .section .rdata,"dr"
    .LC0:
        .ascii "0123456789abcdef=\0"
        .data
        .align 8
    BASE16:
        .quad    .LC0
        .align 4
    A:
        .long    1732584193
        .align 4
    B:
        .long    -271733879
        .align 4
    C:
        .long    -1732584194
        .align 4
    D:
        .long    271733878
        .text
        .globl    newString
        .def    newString;    .scl    2;    .type    32;    .endef
        .seh_proc    newString
    newString:
        pushq    %rbp
        .seh_pushreg    %rbp
        movq    %rsp, %rbp
        .seh_setframe    %rbp, 0
        subq    $64, %rsp
        .seh_stackalloc    64
        .seh_endprologue
        movq    %rcx, 16(%rbp)
        movq    %rdx, 24(%rbp)
        movl    %r8d, 32(%rbp)
        cmpq    $0, 24(%rbp)
        je    .L2
        cmpl    $0, 32(%rbp)
        jg    .L3
        movq    24(%rbp), %rax
        movq    %rax, %rcx
        call    strlen
        jmp    .L4
    .L3:
        movl    32(%rbp), %eax
    .L4:
        movl    %eax, -24(%rbp)
        movl    -24(%rbp), %eax
        addl    $1, %eax
        cltq
        movq    %rax, %rcx
        call    malloc
        movq    %rax, -32(%rbp)
        movl    $0, -4(%rbp)
        jmp    .L5
    .L6:
        movq    -32(%rbp), %rdx
        movl    -4(%rbp), %eax
        cltq
        addq    %rax, %rdx
        movl    -4(%rbp), %eax
        movslq    %eax, %rcx
        movq    24(%rbp), %rax
        addq    %rcx, %rax
        movzbl    (%rax), %eax
        movb    %al, (%rdx)
        addl    $1, -4(%rbp)
    .L5:
        movl    -24(%rbp), %eax
        cmpl    -4(%rbp), %eax
        jg    .L6
        movq    -32(%rbp), %rdx
        movl    -24(%rbp), %eax
        cltq
        addq    %rdx, %rax
        movb    $0, (%rax)
        movq    16(%rbp), %rcx
        movq    -32(%rbp), %rax
        movq    -24(%rbp), %rdx
        movq    %rax, (%rcx)
        movq    %rdx, 8(%rcx)
        jmp    .L1
    .L2:
        movl    32(%rbp), %eax
        movl    %eax, -24(%rbp)
        movl    -24(%rbp), %eax
        addl    $1, %eax
        cltq
        movq    %rax, %rcx
        call    malloc
        movq    %rax, -32(%rbp)
        movl    32(%rbp), %eax
        addl    $1, %eax
        movslq    %eax, %rdx
        movq    -32(%rbp), %rax
        movq    %rdx, %r8
        movl    $0, %edx
        movq    %rax, %rcx
        call    memset
        movb    $1, -20(%rbp)
        movq    16(%rbp), %rcx
        movq    -32(%rbp), %rax
        movq    -24(%rbp), %rdx
        movq    %rax, (%rcx)
        movq    %rdx, 8(%rcx)
    .L1:
        movq    16(%rbp), %rax
        addq    $64, %rsp
        popq    %rbp
        ret
        .seh_endproc
        .def    stringCat;    .scl    3;    .type    32;    .endef
        .seh_proc    stringCat
    stringCat:
        pushq    %rbp
        .seh_pushreg    %rbp
        pushq    %rbx
        .seh_pushreg    %rbx
        subq    $104, %rsp
        .seh_stackalloc    104
        leaq    128(%rsp), %rbp
        .seh_setframe    %rbp, 128
        .seh_endprologue
        movq    %rcx, 0(%rbp)
        movq    %rdx, %rbx
        movq    (%rbx), %rax
        movq    8(%rbx), %rdx
        movq    %rax, -80(%rbp)
        movq    %rdx, -72(%rbp)
        movq    %r8, %rbx
        movq    (%rbx), %rax
        movq    8(%rbx), %rdx
        movq    %rax, -96(%rbp)
        movq    %rdx, -88(%rbp)
        movl    -72(%rbp), %edx
        movl    -88(%rbp), %eax
        addl    %eax, %edx
        leaq    -64(%rbp), %rax
        movl    %edx, %r8d
        movl    $0, %edx
        movq    %rax, %rcx
        call    newString
        movl    $0, -36(%rbp)
        jmp    .L10
    .L11:
        movq    -64(%rbp), %rdx
        movl    -36(%rbp), %eax
        cltq
        addq    %rax, %rdx
        movq    -80(%rbp), %rcx
        movl    -36(%rbp), %eax
        cltq
        addq    %rcx, %rax
        movzbl    (%rax), %eax
        movb    %al, (%rdx)
        addl    $1, -36(%rbp)
    .L10:
        movl    -72(%rbp), %eax
        cmpl    -36(%rbp), %eax
        jg    .L11
        movl    -72(%rbp), %eax
        movl    %eax, -36(%rbp)
        jmp    .L12
    .L13:
        movq    -64(%rbp), %rdx
        movl    -36(%rbp), %eax
        cltq
        addq    %rax, %rdx
        movq    -96(%rbp), %rcx
        movl    -72(%rbp), %eax
        movl    -36(%rbp), %r8d
        subl    %eax, %r8d
        movl    %r8d, %eax
        cltq
        addq    %rcx, %rax
        movzbl    (%rax), %eax
        movb    %al, (%rdx)
        addl    $1, -36(%rbp)
    .L12:
        movl    -56(%rbp), %eax
        cmpl    -36(%rbp), %eax
        jg    .L13
        movq    0(%rbp), %rcx
        movq    -64(%rbp), %rax
        movq    -56(%rbp), %rdx
        movq    %rax, (%rcx)
        movq    %rdx, 8(%rcx)
        movq    0(%rbp), %rax
        addq    $104, %rsp
        popq    %rbx
        popq    %rbp
        ret
        .seh_endproc
        .globl    base16Encode
        .def    base16Encode;    .scl    2;    .type    32;    .endef
        .seh_proc    base16Encode
    base16Encode:
        pushq    %rbp
        .seh_pushreg    %rbp
        pushq    %rbx
        .seh_pushreg    %rbx
        subq    $88, %rsp
        .seh_stackalloc    88
        leaq    128(%rsp), %rbp
        .seh_setframe    %rbp, 128
        .seh_endprologue
        movq    %rcx, -16(%rbp)
        movq    %rdx, %rbx
        movq    (%rbx), %rax
        movq    8(%rbx), %rdx
        movq    %rax, -96(%rbp)
        movq    %rdx, -88(%rbp)
        movl    -88(%rbp), %eax
        leal    (%rax,%rax), %edx
        leaq    -80(%rbp), %rax
        movl    %edx, %r8d
        movl    $0, %edx
        movq    %rax, %rcx
        call    newString
        movl    $0, -56(%rbp)
        movl    $0, -52(%rbp)
        jmp    .L16
    .L17:
        movq    -80(%rbp), %rcx
        movl    -56(%rbp), %eax
        leal    1(%rax), %edx
        movl    %edx, -56(%rbp)
        cltq
        leaq    (%rcx,%rax), %rdx
        movq    BASE16(%rip), %rcx
        movq    -96(%rbp), %r8
        movl    -52(%rbp), %eax
        cltq
        addq    %r8, %rax
        movzbl    (%rax), %eax
        movsbl    %al, %eax
        andl    $240, %eax
        sarl    $4, %eax
        cltq
        addq    %rcx, %rax
        movzbl    (%rax), %eax
        movb    %al, (%rdx)
        movq    -80(%rbp), %rcx
        movl    -56(%rbp), %eax
        leal    1(%rax), %edx
        movl    %edx, -56(%rbp)
        cltq
        leaq    (%rcx,%rax), %rdx
        movq    BASE16(%rip), %rax
        movq    -96(%rbp), %r8
        movl    -52(%rbp), %ecx
        movslq    %ecx, %rcx
        addq    %r8, %rcx
        movzbl    (%rcx), %ecx
        movsbq    %cl, %rcx
        andl    $15, %ecx
        addq    %rcx, %rax
        movzbl    (%rax), %eax
        movb    %al, (%rdx)
        addl    $1, -52(%rbp)
    .L16:
        movl    -88(%rbp), %eax
        cmpl    -52(%rbp), %eax
        jg    .L17
        movq    -80(%rbp), %rdx
        movl    -56(%rbp), %eax
        cltq
        addq    %rdx, %rax
        movb    $0, (%rax)
        movq    -16(%rbp), %rcx
        movq    -80(%rbp), %rax
        movq    -72(%rbp), %rdx
        movq    %rax, (%rcx)
        movq    %rdx, 8(%rcx)
        movq    -16(%rbp), %rax
        addq    $88, %rsp
        popq    %rbx
        popq    %rbp
        ret
        .seh_endproc
        .def    uint32ToString;    .scl    3;    .type    32;    .endef
        .seh_proc    uint32ToString
    uint32ToString:
        pushq    %rbp
        .seh_pushreg    %rbp
        movq    %rsp, %rbp
        .seh_setframe    %rbp, 0
        subq    $64, %rsp
        .seh_stackalloc    64
        .seh_endprologue
        movq    %rcx, 16(%rbp)
        movl    %edx, 24(%rbp)
        leaq    -32(%rbp), %rax
        movl    $4, %r8d
        movl    $0, %edx
        movq    %rax, %rcx
        call    newString
        movl    $0, -4(%rbp)
        jmp    .L20
    .L21:
        movq    -32(%rbp), %rdx
        movl    -4(%rbp), %eax
        cltq
        addq    %rdx, %rax
        movl    $3, %edx
        subl    -4(%rbp), %edx
        sall    $3, %edx
        movl    24(%rbp), %r8d
        movl    %edx, %ecx
        shrl    %cl, %r8d
        movl    %r8d, %edx
        movb    %dl, (%rax)
        addl    $1, -4(%rbp)
    .L20:
        cmpl    $3, -4(%rbp)
        jle    .L21
        movq    16(%rbp), %rcx
        movq    -32(%rbp), %rax
        movq    -24(%rbp), %rdx
        movq    %rax, (%rcx)
        movq    %rdx, 8(%rcx)
        movq    16(%rbp), %rax
        addq    $64, %rsp
        popq    %rbp
        ret
        .seh_endproc
        .def    stringToUint32;    .scl    3;    .type    32;    .endef
        .seh_proc    stringToUint32
    stringToUint32:
        pushq    %rbp
        .seh_pushreg    %rbp
        pushq    %rbx
        .seh_pushreg    %rbx
        subq    $40, %rsp
        .seh_stackalloc    40
        leaq    128(%rsp), %rbp
        .seh_setframe    %rbp, 128
        .seh_endprologue
        movq    %rcx, %rbx
        movq    (%rbx), %rax
        movq    8(%rbx), %rdx
        movq    %rax, -128(%rbp)
        movq    %rdx, -120(%rbp)
        movl    $0, -100(%rbp)
        movl    $0, -104(%rbp)
        jmp    .L24
    .L25:
        movq    -128(%rbp), %rdx
        movl    -104(%rbp), %eax
        cltq
        addq    %rdx, %rax
        movzbl    (%rax), %eax
        movzbl    %al, %edx
        movl    $3, %eax
        subl    -104(%rbp), %eax
        sall    $3, %eax
        movl    %eax, %ecx
        sall    %cl, %edx
        movl    %edx, %eax
        orl    %eax, -100(%rbp)
        addl    $1, -104(%rbp)
    .L24:
        cmpl    $3, -104(%rbp)
        jle    .L25
        movl    -100(%rbp), %eax
        addq    $40, %rsp
        popq    %rbx
        popq    %rbp
        ret
        .seh_endproc
        .globl    MD4
        .def    MD4;    .scl    2;    .type    32;    .endef
        .seh_proc    MD4
    MD4:
        pushq    %rbp
        .seh_pushreg    %rbp
        pushq    %rbx
        .seh_pushreg    %rbx
        subq    $264, %rsp
        .seh_stackalloc    264
        leaq    128(%rsp), %rbp
        .seh_setframe    %rbp, 128
        .seh_endprologue
        movq    %rcx, 160(%rbp)
        movl    %edx, 168(%rbp)
        leaq    -16(%rbp), %rax
        movl    168(%rbp), %edx
        movl    %edx, %r8d
        movq    160(%rbp), %rdx
        movq    %rax, %rcx
        call    newString
        movl    -8(%rbp), %eax
        cltq
        movq    %rax, 112(%rbp)
        movb    $-128, -33(%rbp)
        movq    %rbp, %rax
        leaq    -33(%rbp), %rdx
        movl    $1, %r8d
        movq    %rax, %rcx
        call    newString
        leaq    -64(%rbp), %rcx
        movq    -16(%rbp), %rax
        movq    -8(%rbp), %rdx
        movq    %rax, -80(%rbp)
        movq    %rdx, -72(%rbp)
        movq    0(%rbp), %rax
        movq    8(%rbp), %rdx
        movq    %rax, -96(%rbp)
        movq    %rdx, -88(%rbp)
        leaq    -96(%rbp), %rdx
        leaq    -80(%rbp), %rax
        movq    %rdx, %r8
        movq    %rax, %rdx
        call    stringCat
        movq    -64(%rbp), %rax
        movq    -56(%rbp), %rdx
        movq    %rax, -16(%rbp)
        movq    %rdx, -8(%rbp)
        movl    -8(%rbp), %eax
        movl    $56, %edx
        subl    %eax, %edx
        movl    %edx, %eax
        sarl    $31, %eax
        shrl    $26, %eax
        addl    %eax, %edx
        andl    $63, %edx
        subl    %eax, %edx
        movl    %edx, %eax
        movl    %eax, 124(%rbp)
        cmpl    $0, 124(%rbp)
        jns    .L28
        addl    $64, 124(%rbp)
    .L28:
        leaq    16(%rbp), %rax
        movl    124(%rbp), %edx
        movl    %edx, %r8d
        movl    $0, %edx
        movq    %rax, %rcx
        call    newString
        leaq    -64(%rbp), %rcx
        movq    -16(%rbp), %rax
        movq    -8(%rbp), %rdx
        movq    %rax, -80(%rbp)
        movq    %rdx, -72(%rbp)
        movq    16(%rbp), %rax
        movq    24(%rbp), %rdx
        movq    %rax, -96(%rbp)
        movq    %rdx, -88(%rbp)
        leaq    -96(%rbp), %rdx
        leaq    -80(%rbp), %rax
        movq    %rdx, %r8
        movq    %rax, %rdx
        call    stringCat
        movq    -64(%rbp), %rax
        movq    -56(%rbp), %rdx
        movq    %rax, -16(%rbp)
        movq    %rdx, -8(%rbp)
        movl    -8(%rbp), %eax
        leal    3(%rax), %edx
        testl    %eax, %eax
        cmovs    %edx, %eax
        sarl    $2, %eax
        addl    $2, %eax
        cltq
        salq    $2, %rax
        movq    %rax, %rcx
        call    malloc
        movq    %rax, 104(%rbp)
        movl    $0, 124(%rbp)
        jmp    .L29
    .L30:
        movl    124(%rbp), %eax
        cltq
        leaq    0(,%rax,4), %rdx
        movq    104(%rbp), %rax
        leaq    (%rdx,%rax), %rbx
        movq    -16(%rbp), %rdx
        movl    124(%rbp), %eax
        sall    $2, %eax
        cltq
        addq    %rax, %rdx
        leaq    32(%rbp), %rax
        movl    $4, %r8d
        movq    %rax, %rcx
        call    newString
        movq    32(%rbp), %rax
        movq    40(%rbp), %rdx
        movq    %rax, -64(%rbp)
        movq    %rdx, -56(%rbp)
        leaq    -64(%rbp), %rax
        movq    %rax, %rcx
        call    stringToUint32
        movl    %eax, (%rbx)
        addl    $1, 124(%rbp)
    .L29:
        movl    -8(%rbp), %eax
        leal    3(%rax), %edx
        testl    %eax, %eax
        cmovs    %edx, %eax
        sarl    $2, %eax
        cmpl    124(%rbp), %eax
        jg    .L30
        movl    124(%rbp), %eax
        leal    1(%rax), %edx
        movl    %edx, 124(%rbp)
        cltq
        leaq    0(,%rax,4), %rdx
        movq    104(%rbp), %rax
        addq    %rdx, %rax
        movq    112(%rbp), %rdx
        sall    $3, %edx
        movl    %edx, (%rax)
        movl    124(%rbp), %eax
        leal    1(%rax), %edx
        movl    %edx, 124(%rbp)
        cltq
        leaq    0(,%rax,4), %rdx
        movq    104(%rbp), %rax
        addq    %rdx, %rax
        movq    112(%rbp), %rdx
        shrq    $29, %rdx
        movl    %edx, (%rax)
        movl    124(%rbp), %eax
        movl    %eax, 100(%rbp)
        movl    $0, 124(%rbp)
        jmp    .L31
    .L32:
        movl    124(%rbp), %eax
        cltq
        leaq    0(,%rax,4), %rdx
        movq    104(%rbp), %rax
        leaq    (%rdx,%rax), %rbx
        movl    124(%rbp), %eax
        cltq
        leaq    0(,%rax,4), %rdx
        movq    104(%rbp), %rax
        addq    %rdx, %rax
        movl    (%rax), %eax
        movl    %eax, %ecx
        call    changeEndianness
        movl    %eax, (%rbx)
        addl    $1, 124(%rbp)
    .L31:
        movl    100(%rbp), %eax
        subl    $2, %eax
        cmpl    124(%rbp), %eax
        jg    .L32
        movl    100(%rbp), %edx
        movq    104(%rbp), %rax
        movq    %rax, %rcx
        call    MD4Digest
        movq    %rax, 88(%rbp)
        leaq    -32(%rbp), %rax
        movl    $0, %r8d
        movl    $0, %edx
        movq    %rax, %rcx
        call    newString
        movl    $0, 124(%rbp)
        jmp    .L33
    .L34:
        movl    124(%rbp), %eax
        cltq
        leaq    0(,%rax,4), %rdx
        movq    88(%rbp), %rax
        leaq    (%rdx,%rax), %rbx
        movl    124(%rbp), %eax
        cltq
        leaq    0(,%rax,4), %rdx
        movq    88(%rbp), %rax
        addq    %rdx, %rax
        movl    (%rax), %eax
        movl    %eax, %ecx
        call    changeEndianness
        movl    %eax, (%rbx)
        movl    124(%rbp), %eax
        cltq
        leaq    0(,%rax,4), %rdx
        movq    88(%rbp), %rax
        addq    %rdx, %rax
        movl    (%rax), %edx
        leaq    48(%rbp), %rax
        movq    %rax, %rcx
        call    uint32ToString
        leaq    -64(%rbp), %rcx
        movq    -32(%rbp), %rax
        movq    -24(%rbp), %rdx
        movq    %rax, -80(%rbp)
        movq    %rdx, -72(%rbp)
        movq    48(%rbp), %rax
        movq    56(%rbp), %rdx
        movq    %rax, -96(%rbp)
        movq    %rdx, -88(%rbp)
        leaq    -96(%rbp), %rdx
        leaq    -80(%rbp), %rax
        movq    %rdx, %r8
        movq    %rax, %rdx
        call    stringCat
        movq    -64(%rbp), %rax
        movq    -56(%rbp), %rdx
        movq    %rax, -32(%rbp)
        movq    %rdx, -24(%rbp)
        addl    $1, 124(%rbp)
    .L33:
        cmpl    $3, 124(%rbp)
        jle    .L34
        leaq    64(%rbp), %rcx
        movq    -32(%rbp), %rax
        movq    -24(%rbp), %rdx
        movq    %rax, -64(%rbp)
        movq    %rdx, -56(%rbp)
        leaq    -64(%rbp), %rax
        movq    %rax, %rdx
        call    base16Encode
        movq    64(%rbp), %rax
        addq    $264, %rsp
        popq    %rbx
        popq    %rbp
        ret
        .seh_endproc
        .def    MD4Digest;    .scl    3;    .type    32;    .endef
        .seh_proc    MD4Digest
    MD4Digest:
        pushq    %rbp
        .seh_pushreg    %rbp
        movq    %rsp, %rbp
        .seh_setframe    %rbp, 0
        addq    $-128, %rsp
        .seh_stackalloc    128
        .seh_endprologue
        movq    %rcx, 16(%rbp)
        movl    %edx, 24(%rbp)
        movl    $16, %ecx
        call    malloc
        movq    %rax, -16(%rbp)
        movl    $0, -4(%rbp)
        jmp    .L37
    .L40:
        movl    $0, -8(%rbp)
        jmp    .L38
    .L39:
        movl    -4(%rbp), %eax
        sall    $4, %eax
        movl    %eax, %edx
        movl    -8(%rbp), %eax
        addl    %edx, %eax
        cltq
        leaq    0(,%rax,4), %rdx
        movq    16(%rbp), %rax
        addq    %rdx, %rax
        movl    (%rax), %edx
        movl    -8(%rbp), %eax
        cltq
        movl    %edx, -96(%rbp,%rax,4)
        addl    $1, -8(%rbp)
    .L38:
        cmpl    $15, -8(%rbp)
        jle    .L39
        movl    A(%rip), %eax
        movl    %eax, -20(%rbp)
        movl    B(%rip), %eax
        movl    %eax, -24(%rbp)
        movl    C(%rip), %eax
        movl    %eax, -28(%rbp)
        movl    D(%rip), %eax
        movl    %eax, -32(%rbp)
        movl    D(%rip), %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    B(%rip), %eax
        andl    %eax, %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    -96(%rbp), %eax
        addl    %eax, %edx
        movl    A(%rip), %eax
        addl    %edx, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %eax
        roll    $3, %eax
        movl    %eax, A(%rip)
        movl    C(%rip), %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    A(%rip), %eax
        andl    %eax, %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    -92(%rbp), %eax
        addl    %eax, %edx
        movl    D(%rip), %eax
        addl    %edx, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %eax
        roll    $7, %eax
        movl    %eax, D(%rip)
        movl    B(%rip), %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    D(%rip), %eax
        andl    %eax, %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    -88(%rbp), %eax
        addl    %eax, %edx
        movl    C(%rip), %eax
        addl    %edx, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %eax
        roll    $11, %eax
        movl    %eax, C(%rip)
        movl    A(%rip), %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    C(%rip), %eax
        andl    %eax, %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    -84(%rbp), %eax
        addl    %eax, %edx
        movl    B(%rip), %eax
        addl    %edx, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %eax
        rorl    $13, %eax
        movl    %eax, B(%rip)
        movl    D(%rip), %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    B(%rip), %eax
        andl    %eax, %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    -80(%rbp), %eax
        addl    %eax, %edx
        movl    A(%rip), %eax
        addl    %edx, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %eax
        roll    $3, %eax
        movl    %eax, A(%rip)
        movl    C(%rip), %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    A(%rip), %eax
        andl    %eax, %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    -76(%rbp), %eax
        addl    %eax, %edx
        movl    D(%rip), %eax
        addl    %edx, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %eax
        roll    $7, %eax
        movl    %eax, D(%rip)
        movl    B(%rip), %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    D(%rip), %eax
        andl    %eax, %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    -72(%rbp), %eax
        addl    %eax, %edx
        movl    C(%rip), %eax
        addl    %edx, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %eax
        roll    $11, %eax
        movl    %eax, C(%rip)
        movl    A(%rip), %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    C(%rip), %eax
        andl    %eax, %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    -68(%rbp), %eax
        addl    %eax, %edx
        movl    B(%rip), %eax
        addl    %edx, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %eax
        rorl    $13, %eax
        movl    %eax, B(%rip)
        movl    D(%rip), %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    B(%rip), %eax
        andl    %eax, %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    -64(%rbp), %eax
        addl    %eax, %edx
        movl    A(%rip), %eax
        addl    %edx, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %eax
        roll    $3, %eax
        movl    %eax, A(%rip)
        movl    C(%rip), %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    A(%rip), %eax
        andl    %eax, %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    -60(%rbp), %eax
        addl    %eax, %edx
        movl    D(%rip), %eax
        addl    %edx, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %eax
        roll    $7, %eax
        movl    %eax, D(%rip)
        movl    B(%rip), %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    D(%rip), %eax
        andl    %eax, %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    -56(%rbp), %eax
        addl    %eax, %edx
        movl    C(%rip), %eax
        addl    %edx, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %eax
        roll    $11, %eax
        movl    %eax, C(%rip)
        movl    A(%rip), %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    C(%rip), %eax
        andl    %eax, %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    -52(%rbp), %eax
        addl    %eax, %edx
        movl    B(%rip), %eax
        addl    %edx, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %eax
        rorl    $13, %eax
        movl    %eax, B(%rip)
        movl    D(%rip), %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    B(%rip), %eax
        andl    %eax, %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    -48(%rbp), %eax
        addl    %eax, %edx
        movl    A(%rip), %eax
        addl    %edx, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %eax
        roll    $3, %eax
        movl    %eax, A(%rip)
        movl    C(%rip), %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    A(%rip), %eax
        andl    %eax, %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    -44(%rbp), %eax
        addl    %eax, %edx
        movl    D(%rip), %eax
        addl    %edx, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %eax
        roll    $7, %eax
        movl    %eax, D(%rip)
        movl    B(%rip), %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    D(%rip), %eax
        andl    %eax, %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    -40(%rbp), %eax
        addl    %eax, %edx
        movl    C(%rip), %eax
        addl    %edx, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %eax
        roll    $11, %eax
        movl    %eax, C(%rip)
        movl    A(%rip), %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    C(%rip), %eax
        andl    %eax, %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    -36(%rbp), %eax
        addl    %eax, %edx
        movl    B(%rip), %eax
        addl    %edx, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %eax
        rorl    $13, %eax
        movl    %eax, B(%rip)
        movl    C(%rip), %edx
        movl    D(%rip), %eax
        orl    %eax, %edx
        movl    B(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    C(%rip), %edx
        movl    D(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -96(%rbp), %eax
        addl    %eax, %edx
        movl    A(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %eax
        roll    $3, %eax
        movl    %eax, A(%rip)
        movl    B(%rip), %edx
        movl    C(%rip), %eax
        orl    %eax, %edx
        movl    A(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    B(%rip), %edx
        movl    C(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -80(%rbp), %eax
        addl    %eax, %edx
        movl    D(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %eax
        roll    $5, %eax
        movl    %eax, D(%rip)
        movl    A(%rip), %edx
        movl    B(%rip), %eax
        orl    %eax, %edx
        movl    D(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    A(%rip), %edx
        movl    B(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -64(%rbp), %eax
        addl    %eax, %edx
        movl    C(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %eax
        roll    $9, %eax
        movl    %eax, C(%rip)
        movl    D(%rip), %edx
        movl    A(%rip), %eax
        orl    %eax, %edx
        movl    C(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    D(%rip), %edx
        movl    A(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -48(%rbp), %eax
        addl    %eax, %edx
        movl    B(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %eax
        roll    $13, %eax
        movl    %eax, B(%rip)
        movl    C(%rip), %edx
        movl    D(%rip), %eax
        orl    %eax, %edx
        movl    B(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    C(%rip), %edx
        movl    D(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -92(%rbp), %eax
        addl    %eax, %edx
        movl    A(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %eax
        roll    $3, %eax
        movl    %eax, A(%rip)
        movl    B(%rip), %edx
        movl    C(%rip), %eax
        orl    %eax, %edx
        movl    A(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    B(%rip), %edx
        movl    C(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -76(%rbp), %eax
        addl    %eax, %edx
        movl    D(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %eax
        roll    $5, %eax
        movl    %eax, D(%rip)
        movl    A(%rip), %edx
        movl    B(%rip), %eax
        orl    %eax, %edx
        movl    D(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    A(%rip), %edx
        movl    B(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -60(%rbp), %eax
        addl    %eax, %edx
        movl    C(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %eax
        roll    $9, %eax
        movl    %eax, C(%rip)
        movl    D(%rip), %edx
        movl    A(%rip), %eax
        orl    %eax, %edx
        movl    C(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    D(%rip), %edx
        movl    A(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -44(%rbp), %eax
        addl    %eax, %edx
        movl    B(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %eax
        roll    $13, %eax
        movl    %eax, B(%rip)
        movl    C(%rip), %edx
        movl    D(%rip), %eax
        orl    %eax, %edx
        movl    B(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    C(%rip), %edx
        movl    D(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -88(%rbp), %eax
        addl    %eax, %edx
        movl    A(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %eax
        roll    $3, %eax
        movl    %eax, A(%rip)
        movl    B(%rip), %edx
        movl    C(%rip), %eax
        orl    %eax, %edx
        movl    A(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    B(%rip), %edx
        movl    C(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -72(%rbp), %eax
        addl    %eax, %edx
        movl    D(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %eax
        roll    $5, %eax
        movl    %eax, D(%rip)
        movl    A(%rip), %edx
        movl    B(%rip), %eax
        orl    %eax, %edx
        movl    D(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    A(%rip), %edx
        movl    B(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -56(%rbp), %eax
        addl    %eax, %edx
        movl    C(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %eax
        roll    $9, %eax
        movl    %eax, C(%rip)
        movl    D(%rip), %edx
        movl    A(%rip), %eax
        orl    %eax, %edx
        movl    C(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    D(%rip), %edx
        movl    A(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -40(%rbp), %eax
        addl    %eax, %edx
        movl    B(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %eax
        roll    $13, %eax
        movl    %eax, B(%rip)
        movl    C(%rip), %edx
        movl    D(%rip), %eax
        orl    %eax, %edx
        movl    B(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    C(%rip), %edx
        movl    D(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -84(%rbp), %eax
        addl    %eax, %edx
        movl    A(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %eax
        roll    $3, %eax
        movl    %eax, A(%rip)
        movl    B(%rip), %edx
        movl    C(%rip), %eax
        orl    %eax, %edx
        movl    A(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    B(%rip), %edx
        movl    C(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -68(%rbp), %eax
        addl    %eax, %edx
        movl    D(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %eax
        roll    $5, %eax
        movl    %eax, D(%rip)
        movl    A(%rip), %edx
        movl    B(%rip), %eax
        orl    %eax, %edx
        movl    D(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    A(%rip), %edx
        movl    B(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -52(%rbp), %eax
        addl    %eax, %edx
        movl    C(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %eax
        roll    $9, %eax
        movl    %eax, C(%rip)
        movl    D(%rip), %edx
        movl    A(%rip), %eax
        orl    %eax, %edx
        movl    C(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    D(%rip), %edx
        movl    A(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -36(%rbp), %eax
        addl    %eax, %edx
        movl    B(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %eax
        roll    $13, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    -96(%rbp), %eax
        addl    %eax, %edx
        movl    A(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %eax
        roll    $3, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    -64(%rbp), %eax
        addl    %eax, %edx
        movl    D(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %eax
        roll    $9, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    -80(%rbp), %eax
        addl    %eax, %edx
        movl    C(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %eax
        roll    $11, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    -48(%rbp), %eax
        addl    %eax, %edx
        movl    B(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %eax
        roll    $15, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    -88(%rbp), %eax
        addl    %eax, %edx
        movl    A(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %eax
        roll    $3, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    -56(%rbp), %eax
        addl    %eax, %edx
        movl    D(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %eax
        roll    $9, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    -72(%rbp), %eax
        addl    %eax, %edx
        movl    C(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %eax
        roll    $11, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    -40(%rbp), %eax
        addl    %eax, %edx
        movl    B(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %eax
        roll    $15, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    -92(%rbp), %eax
        addl    %eax, %edx
        movl    A(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %eax
        roll    $3, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    -60(%rbp), %eax
        addl    %eax, %edx
        movl    D(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %eax
        roll    $9, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    -76(%rbp), %eax
        addl    %eax, %edx
        movl    C(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %eax
        roll    $11, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    -44(%rbp), %eax
        addl    %eax, %edx
        movl    B(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %eax
        roll    $15, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    -84(%rbp), %eax
        addl    %eax, %edx
        movl    A(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %eax
        roll    $3, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    -52(%rbp), %eax
        addl    %eax, %edx
        movl    D(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %eax
        roll    $9, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    -68(%rbp), %eax
        addl    %eax, %edx
        movl    C(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %eax
        roll    $11, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    -36(%rbp), %eax
        addl    %eax, %edx
        movl    B(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %eax
        roll    $15, %eax
        movl    %eax, B(%rip)
        movl    A(%rip), %edx
        movl    -20(%rbp), %eax
        addl    %edx, %eax
        movl    %eax, A(%rip)
        movl    B(%rip), %edx
        movl    -24(%rbp), %eax
        addl    %edx, %eax
        movl    %eax, B(%rip)
        movl    C(%rip), %edx
        movl    -28(%rbp), %eax
        addl    %edx, %eax
        movl    %eax, C(%rip)
        movl    D(%rip), %edx
        movl    -32(%rbp), %eax
        addl    %edx, %eax
        movl    %eax, D(%rip)
        addl    $1, -4(%rbp)
    .L37:
        movl    24(%rbp), %eax
        leal    15(%rax), %edx
        testl    %eax, %eax
        cmovs    %edx, %eax
        sarl    $4, %eax
        cmpl    -4(%rbp), %eax
        jg    .L40
        movl    A(%rip), %edx
        movq    -16(%rbp), %rax
        movl    %edx, (%rax)
        movq    -16(%rbp), %rax
        leaq    4(%rax), %rdx
        movl    B(%rip), %eax
        movl    %eax, (%rdx)
        movq    -16(%rbp), %rax
        leaq    8(%rax), %rdx
        movl    C(%rip), %eax
        movl    %eax, (%rdx)
        movq    -16(%rbp), %rax
        leaq    12(%rax), %rdx
        movl    D(%rip), %eax
        movl    %eax, (%rdx)
        call    resetMD4Registers
        movq    -16(%rbp), %rax
        subq    $-128, %rsp
        popq    %rbp
        ret
        .seh_endproc
        .def    changeEndianness;    .scl    3;    .type    32;    .endef
        .seh_proc    changeEndianness
    changeEndianness:
        pushq    %rbp
        .seh_pushreg    %rbp
        movq    %rsp, %rbp
        .seh_setframe    %rbp, 0
        .seh_endprologue
        movl    %ecx, 16(%rbp)
        movl    16(%rbp), %eax
        sall    $24, %eax
        movl    %eax, %edx
        movl    16(%rbp), %eax
        andl    $65280, %eax
        sall    $8, %eax
        orl    %eax, %edx
        movl    16(%rbp), %eax
        andl    $16711680, %eax
        shrl    $8, %eax
        orl    %eax, %edx
        movl    16(%rbp), %eax
        shrl    $24, %eax
        orl    %edx, %eax
        popq    %rbp
        ret
        .seh_endproc
        .def    setMD4Registers;    .scl    3;    .type    32;    .endef
        .seh_proc    setMD4Registers
    setMD4Registers:
        pushq    %rbp
        .seh_pushreg    %rbp
        movq    %rsp, %rbp
        .seh_setframe    %rbp, 0
        .seh_endprologue
        movl    %ecx, 16(%rbp)
        movl    %edx, 24(%rbp)
        movl    %r8d, 32(%rbp)
        movl    %r9d, 40(%rbp)
        movl    16(%rbp), %eax
        movl    %eax, A(%rip)
        movl    24(%rbp), %eax
        movl    %eax, B(%rip)
        movl    32(%rbp), %eax
        movl    %eax, C(%rip)
        movl    40(%rbp), %eax
        movl    %eax, D(%rip)
        nop
        popq    %rbp
        ret
        .seh_endproc
        .def    resetMD4Registers;    .scl    3;    .type    32;    .endef
        .seh_proc    resetMD4Registers
    resetMD4Registers:
        pushq    %rbp
        .seh_pushreg    %rbp
        movq    %rsp, %rbp
        .seh_setframe    %rbp, 0
        subq    $32, %rsp
        .seh_stackalloc    32
        .seh_endprologue
        movl    $271733878, %r9d
        movl    $-1732584194, %r8d
        movl    $-271733879, %edx
        movl    $1732584193, %ecx
        call    setMD4Registers
        nop
        addq    $32, %rsp
        popq    %rbp
        ret
        .seh_endproc
        .def    __main;    .scl    2;    .type    32;    .endef
        .section .rdata,"dr"
    .LC1:
        .ascii "Rosetta Code\0"
    .LC2:
        .ascii "hello world\0"
        .text
        .globl    main
        .def    main;    .scl    2;    .type    32;    .endef
        .seh_proc    main
    main:
        pushq    %rbp
        .seh_pushreg    %rbp
        movq    %rsp, %rbp
        .seh_setframe    %rbp, 0
        subq    $32, %rsp
        .seh_stackalloc    32
        .seh_endprologue
        movl    %ecx, 16(%rbp)
        movq    %rdx, 24(%rbp)
        call    __main
        movl    $12, %edx
        leaq    .LC1(%rip), %rcx
        call    MD4
        movq    %rax, %rcx
        call    puts
        leaq    .LC2(%rip), %rcx
        call    puts
        movl    $0, %eax
        addq    $32, %rsp
        popq    %rbp
        ret
        .seh_endproc
        .ident    "GCC: (tdm64-1) 5.1.0"
        .def    strlen;    .scl    2;    .type    32;    .endef
        .def    malloc;    .scl    2;    .type    32;    .endef
        .def    memset;    .scl    2;    .type    32;    .endef
        .def    puts;    .scl    2;    .type    32;    .endef
    و اینم برای C++:

    کد:
        .file    "main.cpp"
        .section .rdata,"dr"
    .LC0:
        .ascii "0123456789abcdef=\0"
        .data
        .align 8
    _ZL6BASE16:
        .quad    .LC0
        .align 4
    _ZL1A:
        .long    1732584193
        .align 4
    _ZL1B:
        .long    -271733879
        .align 4
    _ZL1C:
        .long    -1732584194
        .align 4
    _ZL1D:
        .long    271733878
        .text
        .globl    _Z9newStringPci
        .def    _Z9newStringPci;    .scl    2;    .type    32;    .endef
        .seh_proc    _Z9newStringPci
    _Z9newStringPci:
    .LFB18:
        pushq    %rbp
        .seh_pushreg    %rbp
        movq    %rsp, %rbp
        .seh_setframe    %rbp, 0
        subq    $48, %rsp
        .seh_stackalloc    48
        .seh_endprologue
        movq    %rcx, 16(%rbp)
        movq    %rdx, 24(%rbp)
        movl    %r8d, 32(%rbp)
        cmpq    $0, 24(%rbp)
        je    .L2
        cmpl    $0, 32(%rbp)
        jg    .L3
        movq    24(%rbp), %rax
        movq    %rax, %rcx
        call    strlen
        jmp    .L4
    .L3:
        movl    32(%rbp), %eax
    .L4:
        movq    16(%rbp), %rdx
        movl    %eax, 8(%rdx)
        movq    16(%rbp), %rax
        movl    8(%rax), %eax
        addl    $1, %eax
        cltq
        movq    %rax, %rcx
        call    malloc
        movq    %rax, %rdx
        movq    16(%rbp), %rax
        movq    %rdx, (%rax)
        movl    $0, -4(%rbp)
    .L6:
        movq    16(%rbp), %rax
        movl    8(%rax), %eax
        cmpl    -4(%rbp), %eax
        jle    .L5
        movq    16(%rbp), %rax
        movq    (%rax), %rdx
        movl    -4(%rbp), %eax
        cltq
        addq    %rax, %rdx
        movl    -4(%rbp), %eax
        movslq    %eax, %rcx
        movq    24(%rbp), %rax
        addq    %rcx, %rax
        movzbl    (%rax), %eax
        movb    %al, (%rdx)
        addl    $1, -4(%rbp)
        jmp    .L6
    .L5:
        movq    16(%rbp), %rax
        movq    (%rax), %rdx
        movq    16(%rbp), %rax
        movl    8(%rax), %eax
        cltq
        addq    %rdx, %rax
        movb    $0, (%rax)
        jmp    .L1
    .L2:
        movq    16(%rbp), %rax
        movl    32(%rbp), %edx
        movl    %edx, 8(%rax)
        movq    16(%rbp), %rax
        movl    8(%rax), %eax
        addl    $1, %eax
        cltq
        movq    %rax, %rcx
        call    malloc
        movq    %rax, %rdx
        movq    16(%rbp), %rax
        movq    %rdx, (%rax)
        movl    32(%rbp), %eax
        addl    $1, %eax
        movslq    %eax, %rdx
        movq    16(%rbp), %rax
        movq    (%rax), %rax
        movq    %rdx, %r8
        movl    $0, %edx
        movq    %rax, %rcx
        call    memset
        movq    16(%rbp), %rax
        movb    $1, 12(%rax)
        nop
    .L1:
        movq    16(%rbp), %rax
        addq    $48, %rsp
        popq    %rbp
        ret
        .seh_endproc
        .def    _ZL9stringCat6stringS_;    .scl    3;    .type    32;    .endef
        .seh_proc    _ZL9stringCat6stringS_
    _ZL9stringCat6stringS_:
    .LFB19:
        pushq    %rbp
        .seh_pushreg    %rbp
        pushq    %rbx
        .seh_pushreg    %rbx
        subq    $88, %rsp
        .seh_stackalloc    88
        leaq    128(%rsp), %rbp
        .seh_setframe    %rbp, 128
        .seh_endprologue
        movq    %rcx, -16(%rbp)
        movq    %rdx, %rbx
        movq    (%rbx), %rax
        movq    8(%rbx), %rdx
        movq    %rax, -80(%rbp)
        movq    %rdx, -72(%rbp)
        movq    %r8, %rbx
        movq    (%rbx), %rax
        movq    8(%rbx), %rdx
        movq    %rax, -96(%rbp)
        movq    %rdx, -88(%rbp)
        movl    -72(%rbp), %edx
        movl    -88(%rbp), %eax
        addl    %eax, %edx
        movq    -16(%rbp), %rax
        movl    %edx, %r8d
        movl    $0, %edx
        movq    %rax, %rcx
        call    _Z9newStringPci
        movl    $0, -52(%rbp)
    .L10:
        movl    -72(%rbp), %eax
        cmpl    -52(%rbp), %eax
        jle    .L9
        movq    -16(%rbp), %rax
        movq    (%rax), %rdx
        movl    -52(%rbp), %eax
        cltq
        addq    %rax, %rdx
        movq    -80(%rbp), %rcx
        movl    -52(%rbp), %eax
        cltq
        addq    %rcx, %rax
        movzbl    (%rax), %eax
        movb    %al, (%rdx)
        addl    $1, -52(%rbp)
        jmp    .L10
    .L9:
        movl    -72(%rbp), %eax
        movl    %eax, -52(%rbp)
    .L12:
        movq    -16(%rbp), %rax
        movl    8(%rax), %eax
        cmpl    -52(%rbp), %eax
        jle    .L14
        movq    -16(%rbp), %rax
        movq    (%rax), %rdx
        movl    -52(%rbp), %eax
        cltq
        addq    %rax, %rdx
        movq    -96(%rbp), %rcx
        movl    -72(%rbp), %eax
        movl    -52(%rbp), %r8d
        subl    %eax, %r8d
        movl    %r8d, %eax
        cltq
        addq    %rcx, %rax
        movzbl    (%rax), %eax
        movb    %al, (%rdx)
        addl    $1, -52(%rbp)
        jmp    .L12
    .L14:
        nop
        movq    -16(%rbp), %rax
        addq    $88, %rsp
        popq    %rbx
        popq    %rbp
        ret
        .seh_endproc
        .globl    _Z12base16Encode6string
        .def    _Z12base16Encode6string;    .scl    2;    .type    32;    .endef
        .seh_proc    _Z12base16Encode6string
    _Z12base16Encode6string:
    .LFB20:
        pushq    %rbp
        .seh_pushreg    %rbp
        pushq    %rbx
        .seh_pushreg    %rbx
        subq    $72, %rsp
        .seh_stackalloc    72
        leaq    128(%rsp), %rbp
        .seh_setframe    %rbp, 128
        .seh_endprologue
        movq    %rcx, -32(%rbp)
        movq    %rdx, %rbx
        movq    (%rbx), %rax
        movq    8(%rbx), %rdx
        movq    %rax, -96(%rbp)
        movq    %rdx, -88(%rbp)
        movl    -88(%rbp), %eax
        leal    (%rax,%rax), %edx
        movq    -32(%rbp), %rax
        movl    %edx, %r8d
        movl    $0, %edx
        movq    %rax, %rcx
        call    _Z9newStringPci
        movl    $0, -72(%rbp)
        movl    $0, -68(%rbp)
    .L17:
        movl    -88(%rbp), %eax
        cmpl    -68(%rbp), %eax
        jle    .L16
        movq    -32(%rbp), %rax
        movq    (%rax), %rcx
        movl    -72(%rbp), %eax
        leal    1(%rax), %edx
        movl    %edx, -72(%rbp)
        cltq
        leaq    (%rcx,%rax), %rdx
        movq    _ZL6BASE16(%rip), %rcx
        movq    -96(%rbp), %r8
        movl    -68(%rbp), %eax
        cltq
        addq    %r8, %rax
        movzbl    (%rax), %eax
        movsbl    %al, %eax
        andl    $240, %eax
        sarl    $4, %eax
        cltq
        addq    %rcx, %rax
        movzbl    (%rax), %eax
        movb    %al, (%rdx)
        movq    -32(%rbp), %rax
        movq    (%rax), %rcx
        movl    -72(%rbp), %eax
        leal    1(%rax), %edx
        movl    %edx, -72(%rbp)
        cltq
        leaq    (%rcx,%rax), %rdx
        movq    _ZL6BASE16(%rip), %rax
        movq    -96(%rbp), %r8
        movl    -68(%rbp), %ecx
        movslq    %ecx, %rcx
        addq    %r8, %rcx
        movzbl    (%rcx), %ecx
        movsbq    %cl, %rcx
        andl    $15, %ecx
        addq    %rcx, %rax
        movzbl    (%rax), %eax
        movb    %al, (%rdx)
        addl    $1, -68(%rbp)
        jmp    .L17
    .L16:
        movq    -32(%rbp), %rax
        movq    (%rax), %rdx
        movl    -72(%rbp), %eax
        cltq
        addq    %rdx, %rax
        movb    $0, (%rax)
        nop
        movq    -32(%rbp), %rax
        addq    $72, %rsp
        popq    %rbx
        popq    %rbp
        ret
        .seh_endproc
        .def    _ZL14uint32ToStringj;    .scl    3;    .type    32;    .endef
        .seh_proc    _ZL14uint32ToStringj
    _ZL14uint32ToStringj:
    .LFB21:
        pushq    %rbp
        .seh_pushreg    %rbp
        movq    %rsp, %rbp
        .seh_setframe    %rbp, 0
        subq    $48, %rsp
        .seh_stackalloc    48
        .seh_endprologue
        movq    %rcx, 16(%rbp)
        movl    %edx, 24(%rbp)
        movq    16(%rbp), %rax
        movl    $4, %r8d
        movl    $0, %edx
        movq    %rax, %rcx
        call    _Z9newStringPci
        movl    $0, -4(%rbp)
    .L21:
        cmpl    $3, -4(%rbp)
        jg    .L23
        movq    16(%rbp), %rax
        movq    (%rax), %rdx
        movl    -4(%rbp), %eax
        cltq
        addq    %rdx, %rax
        movl    $3, %edx
        subl    -4(%rbp), %edx
        sall    $3, %edx
        movl    24(%rbp), %r8d
        movl    %edx, %ecx
        shrl    %cl, %r8d
        movl    %r8d, %edx
        movb    %dl, (%rax)
        addl    $1, -4(%rbp)
        jmp    .L21
    .L23:
        nop
        movq    16(%rbp), %rax
        addq    $48, %rsp
        popq    %rbp
        ret
        .seh_endproc
        .def    _ZL14stringToUint326string;    .scl    3;    .type    32;    .endef
        .seh_proc    _ZL14stringToUint326string
    _ZL14stringToUint326string:
    .LFB22:
        pushq    %rbp
        .seh_pushreg    %rbp
        pushq    %rbx
        .seh_pushreg    %rbx
        subq    $40, %rsp
        .seh_stackalloc    40
        leaq    128(%rsp), %rbp
        .seh_setframe    %rbp, 128
        .seh_endprologue
        movq    %rcx, %rbx
        movq    (%rbx), %rax
        movq    8(%rbx), %rdx
        movq    %rax, -128(%rbp)
        movq    %rdx, -120(%rbp)
        movl    $0, -100(%rbp)
        movl    $0, -104(%rbp)
    .L26:
        cmpl    $3, -104(%rbp)
        jg    .L25
        movq    -128(%rbp), %rdx
        movl    -104(%rbp), %eax
        cltq
        addq    %rdx, %rax
        movzbl    (%rax), %eax
        movzbl    %al, %edx
        movl    $3, %eax
        subl    -104(%rbp), %eax
        sall    $3, %eax
        movl    %eax, %ecx
        sall    %cl, %edx
        movl    %edx, %eax
        orl    %eax, -100(%rbp)
        addl    $1, -104(%rbp)
        jmp    .L26
    .L25:
        movl    -100(%rbp), %eax
        addq    $40, %rsp
        popq    %rbx
        popq    %rbp
        ret
        .seh_endproc
        .globl    _Z3MD4Pci
        .def    _Z3MD4Pci;    .scl    2;    .type    32;    .endef
        .seh_proc    _Z3MD4Pci
    _Z3MD4Pci:
    .LFB23:
        pushq    %rbp
        .seh_pushreg    %rbp
        pushq    %rbx
        .seh_pushreg    %rbx
        subq    $264, %rsp
        .seh_stackalloc    264
        leaq    128(%rsp), %rbp
        .seh_setframe    %rbp, 128
        .seh_endprologue
        movq    %rcx, 160(%rbp)
        movl    %edx, 168(%rbp)
        leaq    -16(%rbp), %rax
        movl    168(%rbp), %edx
        movl    %edx, %r8d
        movq    160(%rbp), %rdx
        movq    %rax, %rcx
        call    _Z9newStringPci
        movl    -8(%rbp), %eax
        cltq
        movq    %rax, 112(%rbp)
        movb    $-128, -33(%rbp)
        movq    %rbp, %rax
        leaq    -33(%rbp), %rdx
        movl    $1, %r8d
        movq    %rax, %rcx
        call    _Z9newStringPci
        leaq    -64(%rbp), %rcx
        movq    -16(%rbp), %rax
        movq    -8(%rbp), %rdx
        movq    %rax, -80(%rbp)
        movq    %rdx, -72(%rbp)
        movq    0(%rbp), %rax
        movq    8(%rbp), %rdx
        movq    %rax, -96(%rbp)
        movq    %rdx, -88(%rbp)
        leaq    -96(%rbp), %rdx
        leaq    -80(%rbp), %rax
        movq    %rdx, %r8
        movq    %rax, %rdx
        call    _ZL9stringCat6stringS_
        movq    -64(%rbp), %rax
        movq    -56(%rbp), %rdx
        movq    %rax, -16(%rbp)
        movq    %rdx, -8(%rbp)
        movl    -8(%rbp), %eax
        movl    $56, %edx
        subl    %eax, %edx
        movl    %edx, %eax
        sarl    $31, %eax
        shrl    $26, %eax
        addl    %eax, %edx
        andl    $63, %edx
        subl    %eax, %edx
        movl    %edx, %eax
        movl    %eax, 124(%rbp)
        cmpl    $0, 124(%rbp)
        jns    .L29
        addl    $64, 124(%rbp)
    .L29:
        leaq    16(%rbp), %rax
        movl    124(%rbp), %edx
        movl    %edx, %r8d
        movl    $0, %edx
        movq    %rax, %rcx
        call    _Z9newStringPci
        leaq    -64(%rbp), %rcx
        movq    -16(%rbp), %rax
        movq    -8(%rbp), %rdx
        movq    %rax, -80(%rbp)
        movq    %rdx, -72(%rbp)
        movq    16(%rbp), %rax
        movq    24(%rbp), %rdx
        movq    %rax, -96(%rbp)
        movq    %rdx, -88(%rbp)
        leaq    -96(%rbp), %rdx
        leaq    -80(%rbp), %rax
        movq    %rdx, %r8
        movq    %rax, %rdx
        call    _ZL9stringCat6stringS_
        movq    -64(%rbp), %rax
        movq    -56(%rbp), %rdx
        movq    %rax, -16(%rbp)
        movq    %rdx, -8(%rbp)
        movl    -8(%rbp), %eax
        leal    3(%rax), %edx
        testl    %eax, %eax
        cmovs    %edx, %eax
        sarl    $2, %eax
        addl    $2, %eax
        cltq
        salq    $2, %rax
        movq    %rax, %rcx
        call    malloc
        movq    %rax, 104(%rbp)
        movl    $0, 124(%rbp)
    .L31:
        movl    -8(%rbp), %eax
        leal    3(%rax), %edx
        testl    %eax, %eax
        cmovs    %edx, %eax
        sarl    $2, %eax
        cmpl    124(%rbp), %eax
        jle    .L30
        movl    124(%rbp), %eax
        cltq
        leaq    0(,%rax,4), %rdx
        movq    104(%rbp), %rax
        leaq    (%rdx,%rax), %rbx
        movq    -16(%rbp), %rdx
        movl    124(%rbp), %eax
        sall    $2, %eax
        cltq
        addq    %rax, %rdx
        leaq    32(%rbp), %rax
        movl    $4, %r8d
        movq    %rax, %rcx
        call    _Z9newStringPci
        movq    32(%rbp), %rax
        movq    40(%rbp), %rdx
        movq    %rax, -64(%rbp)
        movq    %rdx, -56(%rbp)
        leaq    -64(%rbp), %rax
        movq    %rax, %rcx
        call    _ZL14stringToUint326string
        movl    %eax, (%rbx)
        addl    $1, 124(%rbp)
        jmp    .L31
    .L30:
        movl    124(%rbp), %eax
        leal    1(%rax), %edx
        movl    %edx, 124(%rbp)
        cltq
        leaq    0(,%rax,4), %rdx
        movq    104(%rbp), %rax
        addq    %rdx, %rax
        movq    112(%rbp), %rdx
        sall    $3, %edx
        movl    %edx, (%rax)
        movl    124(%rbp), %eax
        leal    1(%rax), %edx
        movl    %edx, 124(%rbp)
        cltq
        leaq    0(,%rax,4), %rdx
        movq    104(%rbp), %rax
        addq    %rdx, %rax
        movq    112(%rbp), %rdx
        shrq    $29, %rdx
        movl    %edx, (%rax)
        movl    124(%rbp), %eax
        movl    %eax, 100(%rbp)
        movl    $0, 124(%rbp)
    .L33:
        movl    100(%rbp), %eax
        subl    $2, %eax
        cmpl    124(%rbp), %eax
        jle    .L32
        movl    124(%rbp), %eax
        cltq
        leaq    0(,%rax,4), %rdx
        movq    104(%rbp), %rax
        leaq    (%rdx,%rax), %rbx
        movl    124(%rbp), %eax
        cltq
        leaq    0(,%rax,4), %rdx
        movq    104(%rbp), %rax
        addq    %rdx, %rax
        movl    (%rax), %eax
        movl    %eax, %ecx
        call    _ZL16changeEndiannessj
        movl    %eax, (%rbx)
        addl    $1, 124(%rbp)
        jmp    .L33
    .L32:
        movl    100(%rbp), %edx
        movq    104(%rbp), %rax
        movq    %rax, %rcx
        call    _ZL9MD4DigestPji
        movq    %rax, 88(%rbp)
        leaq    -64(%rbp), %rax
        movl    $0, %r8d
        movl    $0, %edx
        movq    %rax, %rcx
        call    _Z9newStringPci
        movq    -64(%rbp), %rax
        movq    -56(%rbp), %rdx
        movq    %rax, -32(%rbp)
        movq    %rdx, -24(%rbp)
        movl    $0, 124(%rbp)
    .L35:
        cmpl    $3, 124(%rbp)
        jg    .L34
        movl    124(%rbp), %eax
        cltq
        leaq    0(,%rax,4), %rdx
        movq    88(%rbp), %rax
        leaq    (%rdx,%rax), %rbx
        movl    124(%rbp), %eax
        cltq
        leaq    0(,%rax,4), %rdx
        movq    88(%rbp), %rax
        addq    %rdx, %rax
        movl    (%rax), %eax
        movl    %eax, %ecx
        call    _ZL16changeEndiannessj
        movl    %eax, (%rbx)
        movl    124(%rbp), %eax
        cltq
        leaq    0(,%rax,4), %rdx
        movq    88(%rbp), %rax
        addq    %rdx, %rax
        movl    (%rax), %edx
        leaq    48(%rbp), %rax
        movq    %rax, %rcx
        call    _ZL14uint32ToStringj
        leaq    -64(%rbp), %rcx
        movq    -32(%rbp), %rax
        movq    -24(%rbp), %rdx
        movq    %rax, -80(%rbp)
        movq    %rdx, -72(%rbp)
        movq    48(%rbp), %rax
        movq    56(%rbp), %rdx
        movq    %rax, -96(%rbp)
        movq    %rdx, -88(%rbp)
        leaq    -96(%rbp), %rdx
        leaq    -80(%rbp), %rax
        movq    %rdx, %r8
        movq    %rax, %rdx
        call    _ZL9stringCat6stringS_
        movq    -64(%rbp), %rax
        movq    -56(%rbp), %rdx
        movq    %rax, -32(%rbp)
        movq    %rdx, -24(%rbp)
        addl    $1, 124(%rbp)
        jmp    .L35
    .L34:
        leaq    64(%rbp), %rcx
        movq    -32(%rbp), %rax
        movq    -24(%rbp), %rdx
        movq    %rax, -64(%rbp)
        movq    %rdx, -56(%rbp)
        leaq    -64(%rbp), %rax
        movq    %rax, %rdx
        call    _Z12base16Encode6string
        movq    64(%rbp), %rax
        addq    $264, %rsp
        popq    %rbx
        popq    %rbp
        ret
        .seh_endproc
        .def    _ZL9MD4DigestPji;    .scl    3;    .type    32;    .endef
        .seh_proc    _ZL9MD4DigestPji
    _ZL9MD4DigestPji:
    .LFB24:
        pushq    %rbp
        .seh_pushreg    %rbp
        movq    %rsp, %rbp
        .seh_setframe    %rbp, 0
        addq    $-128, %rsp
        .seh_stackalloc    128
        .seh_endprologue
        movq    %rcx, 16(%rbp)
        movl    %edx, 24(%rbp)
        movl    $16, %eax
        movq    %rax, %rcx
        call    malloc
        movq    %rax, -16(%rbp)
        movl    $0, -4(%rbp)
    .L41:
        movl    24(%rbp), %eax
        leal    15(%rax), %edx
        testl    %eax, %eax
        cmovs    %edx, %eax
        sarl    $4, %eax
        cmpl    -4(%rbp), %eax
        jle    .L38
        movl    $0, -8(%rbp)
    .L40:
        cmpl    $15, -8(%rbp)
        jg    .L39
        movl    -4(%rbp), %eax
        sall    $4, %eax
        movl    %eax, %edx
        movl    -8(%rbp), %eax
        addl    %edx, %eax
        cltq
        leaq    0(,%rax,4), %rdx
        movq    16(%rbp), %rax
        addq    %rdx, %rax
        movl    (%rax), %edx
        movl    -8(%rbp), %eax
        cltq
        movl    %edx, -96(%rbp,%rax,4)
        addl    $1, -8(%rbp)
        jmp    .L40
    .L39:
        movl    _ZL1A(%rip), %eax
        movl    %eax, -20(%rbp)
        movl    _ZL1B(%rip), %eax
        movl    %eax, -24(%rbp)
        movl    _ZL1C(%rip), %eax
        movl    %eax, -28(%rbp)
        movl    _ZL1D(%rip), %eax
        movl    %eax, -32(%rbp)
        movl    _ZL1D(%rip), %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    -96(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %eax
        roll    $3, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1C(%rip), %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    -92(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %eax
        roll    $7, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1B(%rip), %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    -88(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %eax
        roll    $11, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1A(%rip), %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    -84(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %eax
        rorl    $13, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1D(%rip), %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    -80(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %eax
        roll    $3, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1C(%rip), %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    -76(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %eax
        roll    $7, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1B(%rip), %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    -72(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %eax
        roll    $11, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1A(%rip), %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    -68(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %eax
        rorl    $13, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1D(%rip), %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    -64(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %eax
        roll    $3, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1C(%rip), %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    -60(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %eax
        roll    $7, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1B(%rip), %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    -56(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %eax
        roll    $11, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1A(%rip), %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    -52(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %eax
        rorl    $13, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1D(%rip), %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    -48(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %eax
        roll    $3, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1C(%rip), %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    -44(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %eax
        roll    $7, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1B(%rip), %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    -40(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %eax
        roll    $11, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1A(%rip), %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    -36(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %eax
        rorl    $13, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1C(%rip), %edx
        movl    _ZL1D(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1C(%rip), %edx
        movl    _ZL1D(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -96(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %eax
        roll    $3, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1B(%rip), %edx
        movl    _ZL1C(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1B(%rip), %edx
        movl    _ZL1C(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -80(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %eax
        roll    $5, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1A(%rip), %edx
        movl    _ZL1B(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1A(%rip), %edx
        movl    _ZL1B(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -64(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %eax
        roll    $9, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1D(%rip), %edx
        movl    _ZL1A(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1D(%rip), %edx
        movl    _ZL1A(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -48(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %eax
        roll    $13, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1C(%rip), %edx
        movl    _ZL1D(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1C(%rip), %edx
        movl    _ZL1D(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -92(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %eax
        roll    $3, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1B(%rip), %edx
        movl    _ZL1C(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1B(%rip), %edx
        movl    _ZL1C(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -76(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %eax
        roll    $5, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1A(%rip), %edx
        movl    _ZL1B(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1A(%rip), %edx
        movl    _ZL1B(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -60(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %eax
        roll    $9, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1D(%rip), %edx
        movl    _ZL1A(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1D(%rip), %edx
        movl    _ZL1A(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -44(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %eax
        roll    $13, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1C(%rip), %edx
        movl    _ZL1D(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1C(%rip), %edx
        movl    _ZL1D(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -88(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %eax
        roll    $3, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1B(%rip), %edx
        movl    _ZL1C(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1B(%rip), %edx
        movl    _ZL1C(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -72(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %eax
        roll    $5, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1A(%rip), %edx
        movl    _ZL1B(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1A(%rip), %edx
        movl    _ZL1B(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -56(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %eax
        roll    $9, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1D(%rip), %edx
        movl    _ZL1A(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1D(%rip), %edx
        movl    _ZL1A(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -40(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %eax
        roll    $13, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1C(%rip), %edx
        movl    _ZL1D(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1C(%rip), %edx
        movl    _ZL1D(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -84(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %eax
        roll    $3, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1B(%rip), %edx
        movl    _ZL1C(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1B(%rip), %edx
        movl    _ZL1C(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -68(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %eax
        roll    $5, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1A(%rip), %edx
        movl    _ZL1B(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1A(%rip), %edx
        movl    _ZL1B(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -52(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %eax
        roll    $9, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1D(%rip), %edx
        movl    _ZL1A(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1D(%rip), %edx
        movl    _ZL1A(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -36(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %eax
        roll    $13, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    -96(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %eax
        roll    $3, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    -64(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %eax
        roll    $9, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    -80(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %eax
        roll    $11, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    -48(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %eax
        roll    $15, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    -88(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %eax
        roll    $3, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    -56(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %eax
        roll    $9, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    -72(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %eax
        roll    $11, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    -40(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %eax
        roll    $15, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    -92(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %eax
        roll    $3, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    -60(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %eax
        roll    $9, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    -76(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %eax
        roll    $11, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    -44(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %eax
        roll    $15, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    -84(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %eax
        roll    $3, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    -52(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %eax
        roll    $9, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    -68(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %eax
        roll    $11, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    -36(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %eax
        roll    $15, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1A(%rip), %edx
        movl    -20(%rbp), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1B(%rip), %edx
        movl    -24(%rbp), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1C(%rip), %edx
        movl    -28(%rbp), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1D(%rip), %edx
        movl    -32(%rbp), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1D(%rip)
        addl    $1, -4(%rbp)
        jmp    .L41
    .L38:
        movl    _ZL1A(%rip), %edx
        movq    -16(%rbp), %rax
        movl    %edx, (%rax)
        movq    -16(%rbp), %rax
        leaq    4(%rax), %rdx
        movl    _ZL1B(%rip), %eax
        movl    %eax, (%rdx)
        movq    -16(%rbp), %rax
        leaq    8(%rax), %rdx
        movl    _ZL1C(%rip), %eax
        movl    %eax, (%rdx)
        movq    -16(%rbp), %rax
        leaq    12(%rax), %rdx
        movl    _ZL1D(%rip), %eax
        movl    %eax, (%rdx)
        call    _ZL17resetMD4Registersv
        movq    -16(%rbp), %rax
        subq    $-128, %rsp
        popq    %rbp
        ret
        .seh_endproc
        .def    _ZL16changeEndiannessj;    .scl    3;    .type    32;    .endef
        .seh_proc    _ZL16changeEndiannessj
    _ZL16changeEndiannessj:
    .LFB25:
        pushq    %rbp
        .seh_pushreg    %rbp
        movq    %rsp, %rbp
        .seh_setframe    %rbp, 0
        .seh_endprologue
        movl    %ecx, 16(%rbp)
        movl    16(%rbp), %eax
        sall    $24, %eax
        movl    %eax, %edx
        movl    16(%rbp), %eax
        andl    $65280, %eax
        sall    $8, %eax
        orl    %eax, %edx
        movl    16(%rbp), %eax
        andl    $16711680, %eax
        shrl    $8, %eax
        orl    %eax, %edx
        movl    16(%rbp), %eax
        shrl    $24, %eax
        orl    %edx, %eax
        popq    %rbp
        ret
        .seh_endproc
        .def    _ZL15setMD4Registersjjjj;    .scl    3;    .type    32;    .endef
        .seh_proc    _ZL15setMD4Registersjjjj
    _ZL15setMD4Registersjjjj:
    .LFB26:
        pushq    %rbp
        .seh_pushreg    %rbp
        movq    %rsp, %rbp
        .seh_setframe    %rbp, 0
        .seh_endprologue
        movl    %ecx, 16(%rbp)
        movl    %edx, 24(%rbp)
        movl    %r8d, 32(%rbp)
        movl    %r9d, 40(%rbp)
        movl    16(%rbp), %eax
        movl    %eax, _ZL1A(%rip)
        movl    24(%rbp), %eax
        movl    %eax, _ZL1B(%rip)
        movl    32(%rbp), %eax
        movl    %eax, _ZL1C(%rip)
        movl    40(%rbp), %eax
        movl    %eax, _ZL1D(%rip)
        nop
        popq    %rbp
        ret
        .seh_endproc
        .def    _ZL17resetMD4Registersv;    .scl    3;    .type    32;    .endef
        .seh_proc    _ZL17resetMD4Registersv
    _ZL17resetMD4Registersv:
    .LFB27:
        pushq    %rbp
        .seh_pushreg    %rbp
        movq    %rsp, %rbp
        .seh_setframe    %rbp, 0
        subq    $32, %rsp
        .seh_stackalloc    32
        .seh_endprologue
        movl    $271733878, %r9d
        movl    $-1732584194, %r8d
        movl    $-271733879, %edx
        movl    $1732584193, %ecx
        call    _ZL15setMD4Registersjjjj
        nop
        addq    $32, %rsp
        popq    %rbp
        ret
        .seh_endproc
        .def    __main;    .scl    2;    .type    32;    .endef
        .section .rdata,"dr"
    .LC1:
        .ascii "Rosetta Code\0"
    .LC2:
        .ascii "hello world\0"
        .text
        .globl    main
        .def    main;    .scl    2;    .type    32;    .endef
        .seh_proc    main
    main:
    .LFB28:
        pushq    %rbp
        .seh_pushreg    %rbp
        movq    %rsp, %rbp
        .seh_setframe    %rbp, 0
        subq    $32, %rsp
        .seh_stackalloc    32
        .seh_endprologue
        movl    %ecx, 16(%rbp)
        movq    %rdx, 24(%rbp)
        call    __main
        movl    $12, %edx
        leaq    .LC1(%rip), %rcx
        call    _Z3MD4Pci
        movq    %rax, %rcx
        call    puts
        leaq    .LC2(%rip), %rcx
        call    puts
        movl    $0, %eax
        addq    $32, %rsp
        popq    %rbp
        ret
        .seh_endproc
        .ident    "GCC: (tdm64-1) 5.1.0"
        .def    strlen;    .scl    2;    .type    32;    .endef
        .def    malloc;    .scl    2;    .type    32;    .endef
        .def    memset;    .scl    2;    .type    32;    .endef
        .def    puts;    .scl    2;    .type    32;    .endef
    با

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت



    راحتتر می تونید دو فایل رو بررسی کنید.
  5. #15
    2009/10/25
    تهران
    414
    24

    پاسخ : C یا C++؟ کدوم رو انتخاب کنم؟

    نقل قول نوشته اصلی توسط روح الامین

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    @

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت



    سلام
    خواهش میکنم. مهندس زیاد ایراد نگیر ازم چون بخدا هم وقتم کمه و هم سعی میکنم حتما به سوال ها و درخواست هام تا جای ممکن جواب بدم. به محض نصب کامپایلر و IDE اولین کدی که پیدا کردم رو ریختم توی فایل و کامپایل کردم(به کدها نگاه کنی کاملا معلومه که همین جوری سریع ریختم). من با GCC ه زیاد کار نکردم. فقط خیلی وقت پیش که با اتمل استودیو کار میکردم چندبار با این کامپایلر کار کردم.خیلی وقت نگرفت که سریع اومدم سراغ STM32 و با کیل کار کردم. بیشتر وقتم با کیل بوده. اینکه اگه بهت میگم ممکنه کانفیگ درست نکرده باشی بخاطر اینه که منم خودم باهاش زیاد کار نکردم. من بررسی بیشتری انجام میدم و دوباره گزارش میدم. اینم دو فایل .S مربوط به همین دو فایل هستش که اینجا قرار میدم:

    برای C:


    کد:
        .file    "main.c"
        .section .rdata,"dr"
    .LC0:
        .ascii "0123456789abcdef=\0"
        .data
        .align 8
    BASE16:
        .quad    .LC0
        .align 4
    A:
        .long    1732584193
        .align 4
    B:
        .long    -271733879
        .align 4
    C:
        .long    -1732584194
        .align 4
    D:
        .long    271733878
        .text
        .globl    newString
        .def    newString;    .scl    2;    .type    32;    .endef
        .seh_proc    newString
    newString:
        pushq    %rbp
        .seh_pushreg    %rbp
        movq    %rsp, %rbp
        .seh_setframe    %rbp, 0
        subq    $64, %rsp
        .seh_stackalloc    64
        .seh_endprologue
        movq    %rcx, 16(%rbp)
        movq    %rdx, 24(%rbp)
        movl    %r8d, 32(%rbp)
        cmpq    $0, 24(%rbp)
        je    .L2
        cmpl    $0, 32(%rbp)
        jg    .L3
        movq    24(%rbp), %rax
        movq    %rax, %rcx
        call    strlen
        jmp    .L4
    .L3:
        movl    32(%rbp), %eax
    .L4:
        movl    %eax, -24(%rbp)
        movl    -24(%rbp), %eax
        addl    $1, %eax
        cltq
        movq    %rax, %rcx
        call    malloc
        movq    %rax, -32(%rbp)
        movl    $0, -4(%rbp)
        jmp    .L5
    .L6:
        movq    -32(%rbp), %rdx
        movl    -4(%rbp), %eax
        cltq
        addq    %rax, %rdx
        movl    -4(%rbp), %eax
        movslq    %eax, %rcx
        movq    24(%rbp), %rax
        addq    %rcx, %rax
        movzbl    (%rax), %eax
        movb    %al, (%rdx)
        addl    $1, -4(%rbp)
    .L5:
        movl    -24(%rbp), %eax
        cmpl    -4(%rbp), %eax
        jg    .L6
        movq    -32(%rbp), %rdx
        movl    -24(%rbp), %eax
        cltq
        addq    %rdx, %rax
        movb    $0, (%rax)
        movq    16(%rbp), %rcx
        movq    -32(%rbp), %rax
        movq    -24(%rbp), %rdx
        movq    %rax, (%rcx)
        movq    %rdx, 8(%rcx)
        jmp    .L1
    .L2:
        movl    32(%rbp), %eax
        movl    %eax, -24(%rbp)
        movl    -24(%rbp), %eax
        addl    $1, %eax
        cltq
        movq    %rax, %rcx
        call    malloc
        movq    %rax, -32(%rbp)
        movl    32(%rbp), %eax
        addl    $1, %eax
        movslq    %eax, %rdx
        movq    -32(%rbp), %rax
        movq    %rdx, %r8
        movl    $0, %edx
        movq    %rax, %rcx
        call    memset
        movb    $1, -20(%rbp)
        movq    16(%rbp), %rcx
        movq    -32(%rbp), %rax
        movq    -24(%rbp), %rdx
        movq    %rax, (%rcx)
        movq    %rdx, 8(%rcx)
    .L1:
        movq    16(%rbp), %rax
        addq    $64, %rsp
        popq    %rbp
        ret
        .seh_endproc
        .def    stringCat;    .scl    3;    .type    32;    .endef
        .seh_proc    stringCat
    stringCat:
        pushq    %rbp
        .seh_pushreg    %rbp
        pushq    %rbx
        .seh_pushreg    %rbx
        subq    $104, %rsp
        .seh_stackalloc    104
        leaq    128(%rsp), %rbp
        .seh_setframe    %rbp, 128
        .seh_endprologue
        movq    %rcx, 0(%rbp)
        movq    %rdx, %rbx
        movq    (%rbx), %rax
        movq    8(%rbx), %rdx
        movq    %rax, -80(%rbp)
        movq    %rdx, -72(%rbp)
        movq    %r8, %rbx
        movq    (%rbx), %rax
        movq    8(%rbx), %rdx
        movq    %rax, -96(%rbp)
        movq    %rdx, -88(%rbp)
        movl    -72(%rbp), %edx
        movl    -88(%rbp), %eax
        addl    %eax, %edx
        leaq    -64(%rbp), %rax
        movl    %edx, %r8d
        movl    $0, %edx
        movq    %rax, %rcx
        call    newString
        movl    $0, -36(%rbp)
        jmp    .L10
    .L11:
        movq    -64(%rbp), %rdx
        movl    -36(%rbp), %eax
        cltq
        addq    %rax, %rdx
        movq    -80(%rbp), %rcx
        movl    -36(%rbp), %eax
        cltq
        addq    %rcx, %rax
        movzbl    (%rax), %eax
        movb    %al, (%rdx)
        addl    $1, -36(%rbp)
    .L10:
        movl    -72(%rbp), %eax
        cmpl    -36(%rbp), %eax
        jg    .L11
        movl    -72(%rbp), %eax
        movl    %eax, -36(%rbp)
        jmp    .L12
    .L13:
        movq    -64(%rbp), %rdx
        movl    -36(%rbp), %eax
        cltq
        addq    %rax, %rdx
        movq    -96(%rbp), %rcx
        movl    -72(%rbp), %eax
        movl    -36(%rbp), %r8d
        subl    %eax, %r8d
        movl    %r8d, %eax
        cltq
        addq    %rcx, %rax
        movzbl    (%rax), %eax
        movb    %al, (%rdx)
        addl    $1, -36(%rbp)
    .L12:
        movl    -56(%rbp), %eax
        cmpl    -36(%rbp), %eax
        jg    .L13
        movq    0(%rbp), %rcx
        movq    -64(%rbp), %rax
        movq    -56(%rbp), %rdx
        movq    %rax, (%rcx)
        movq    %rdx, 8(%rcx)
        movq    0(%rbp), %rax
        addq    $104, %rsp
        popq    %rbx
        popq    %rbp
        ret
        .seh_endproc
        .globl    base16Encode
        .def    base16Encode;    .scl    2;    .type    32;    .endef
        .seh_proc    base16Encode
    base16Encode:
        pushq    %rbp
        .seh_pushreg    %rbp
        pushq    %rbx
        .seh_pushreg    %rbx
        subq    $88, %rsp
        .seh_stackalloc    88
        leaq    128(%rsp), %rbp
        .seh_setframe    %rbp, 128
        .seh_endprologue
        movq    %rcx, -16(%rbp)
        movq    %rdx, %rbx
        movq    (%rbx), %rax
        movq    8(%rbx), %rdx
        movq    %rax, -96(%rbp)
        movq    %rdx, -88(%rbp)
        movl    -88(%rbp), %eax
        leal    (%rax,%rax), %edx
        leaq    -80(%rbp), %rax
        movl    %edx, %r8d
        movl    $0, %edx
        movq    %rax, %rcx
        call    newString
        movl    $0, -56(%rbp)
        movl    $0, -52(%rbp)
        jmp    .L16
    .L17:
        movq    -80(%rbp), %rcx
        movl    -56(%rbp), %eax
        leal    1(%rax), %edx
        movl    %edx, -56(%rbp)
        cltq
        leaq    (%rcx,%rax), %rdx
        movq    BASE16(%rip), %rcx
        movq    -96(%rbp), %r8
        movl    -52(%rbp), %eax
        cltq
        addq    %r8, %rax
        movzbl    (%rax), %eax
        movsbl    %al, %eax
        andl    $240, %eax
        sarl    $4, %eax
        cltq
        addq    %rcx, %rax
        movzbl    (%rax), %eax
        movb    %al, (%rdx)
        movq    -80(%rbp), %rcx
        movl    -56(%rbp), %eax
        leal    1(%rax), %edx
        movl    %edx, -56(%rbp)
        cltq
        leaq    (%rcx,%rax), %rdx
        movq    BASE16(%rip), %rax
        movq    -96(%rbp), %r8
        movl    -52(%rbp), %ecx
        movslq    %ecx, %rcx
        addq    %r8, %rcx
        movzbl    (%rcx), %ecx
        movsbq    %cl, %rcx
        andl    $15, %ecx
        addq    %rcx, %rax
        movzbl    (%rax), %eax
        movb    %al, (%rdx)
        addl    $1, -52(%rbp)
    .L16:
        movl    -88(%rbp), %eax
        cmpl    -52(%rbp), %eax
        jg    .L17
        movq    -80(%rbp), %rdx
        movl    -56(%rbp), %eax
        cltq
        addq    %rdx, %rax
        movb    $0, (%rax)
        movq    -16(%rbp), %rcx
        movq    -80(%rbp), %rax
        movq    -72(%rbp), %rdx
        movq    %rax, (%rcx)
        movq    %rdx, 8(%rcx)
        movq    -16(%rbp), %rax
        addq    $88, %rsp
        popq    %rbx
        popq    %rbp
        ret
        .seh_endproc
        .def    uint32ToString;    .scl    3;    .type    32;    .endef
        .seh_proc    uint32ToString
    uint32ToString:
        pushq    %rbp
        .seh_pushreg    %rbp
        movq    %rsp, %rbp
        .seh_setframe    %rbp, 0
        subq    $64, %rsp
        .seh_stackalloc    64
        .seh_endprologue
        movq    %rcx, 16(%rbp)
        movl    %edx, 24(%rbp)
        leaq    -32(%rbp), %rax
        movl    $4, %r8d
        movl    $0, %edx
        movq    %rax, %rcx
        call    newString
        movl    $0, -4(%rbp)
        jmp    .L20
    .L21:
        movq    -32(%rbp), %rdx
        movl    -4(%rbp), %eax
        cltq
        addq    %rdx, %rax
        movl    $3, %edx
        subl    -4(%rbp), %edx
        sall    $3, %edx
        movl    24(%rbp), %r8d
        movl    %edx, %ecx
        shrl    %cl, %r8d
        movl    %r8d, %edx
        movb    %dl, (%rax)
        addl    $1, -4(%rbp)
    .L20:
        cmpl    $3, -4(%rbp)
        jle    .L21
        movq    16(%rbp), %rcx
        movq    -32(%rbp), %rax
        movq    -24(%rbp), %rdx
        movq    %rax, (%rcx)
        movq    %rdx, 8(%rcx)
        movq    16(%rbp), %rax
        addq    $64, %rsp
        popq    %rbp
        ret
        .seh_endproc
        .def    stringToUint32;    .scl    3;    .type    32;    .endef
        .seh_proc    stringToUint32
    stringToUint32:
        pushq    %rbp
        .seh_pushreg    %rbp
        pushq    %rbx
        .seh_pushreg    %rbx
        subq    $40, %rsp
        .seh_stackalloc    40
        leaq    128(%rsp), %rbp
        .seh_setframe    %rbp, 128
        .seh_endprologue
        movq    %rcx, %rbx
        movq    (%rbx), %rax
        movq    8(%rbx), %rdx
        movq    %rax, -128(%rbp)
        movq    %rdx, -120(%rbp)
        movl    $0, -100(%rbp)
        movl    $0, -104(%rbp)
        jmp    .L24
    .L25:
        movq    -128(%rbp), %rdx
        movl    -104(%rbp), %eax
        cltq
        addq    %rdx, %rax
        movzbl    (%rax), %eax
        movzbl    %al, %edx
        movl    $3, %eax
        subl    -104(%rbp), %eax
        sall    $3, %eax
        movl    %eax, %ecx
        sall    %cl, %edx
        movl    %edx, %eax
        orl    %eax, -100(%rbp)
        addl    $1, -104(%rbp)
    .L24:
        cmpl    $3, -104(%rbp)
        jle    .L25
        movl    -100(%rbp), %eax
        addq    $40, %rsp
        popq    %rbx
        popq    %rbp
        ret
        .seh_endproc
        .globl    MD4
        .def    MD4;    .scl    2;    .type    32;    .endef
        .seh_proc    MD4
    MD4:
        pushq    %rbp
        .seh_pushreg    %rbp
        pushq    %rbx
        .seh_pushreg    %rbx
        subq    $264, %rsp
        .seh_stackalloc    264
        leaq    128(%rsp), %rbp
        .seh_setframe    %rbp, 128
        .seh_endprologue
        movq    %rcx, 160(%rbp)
        movl    %edx, 168(%rbp)
        leaq    -16(%rbp), %rax
        movl    168(%rbp), %edx
        movl    %edx, %r8d
        movq    160(%rbp), %rdx
        movq    %rax, %rcx
        call    newString
        movl    -8(%rbp), %eax
        cltq
        movq    %rax, 112(%rbp)
        movb    $-128, -33(%rbp)
        movq    %rbp, %rax
        leaq    -33(%rbp), %rdx
        movl    $1, %r8d
        movq    %rax, %rcx
        call    newString
        leaq    -64(%rbp), %rcx
        movq    -16(%rbp), %rax
        movq    -8(%rbp), %rdx
        movq    %rax, -80(%rbp)
        movq    %rdx, -72(%rbp)
        movq    0(%rbp), %rax
        movq    8(%rbp), %rdx
        movq    %rax, -96(%rbp)
        movq    %rdx, -88(%rbp)
        leaq    -96(%rbp), %rdx
        leaq    -80(%rbp), %rax
        movq    %rdx, %r8
        movq    %rax, %rdx
        call    stringCat
        movq    -64(%rbp), %rax
        movq    -56(%rbp), %rdx
        movq    %rax, -16(%rbp)
        movq    %rdx, -8(%rbp)
        movl    -8(%rbp), %eax
        movl    $56, %edx
        subl    %eax, %edx
        movl    %edx, %eax
        sarl    $31, %eax
        shrl    $26, %eax
        addl    %eax, %edx
        andl    $63, %edx
        subl    %eax, %edx
        movl    %edx, %eax
        movl    %eax, 124(%rbp)
        cmpl    $0, 124(%rbp)
        jns    .L28
        addl    $64, 124(%rbp)
    .L28:
        leaq    16(%rbp), %rax
        movl    124(%rbp), %edx
        movl    %edx, %r8d
        movl    $0, %edx
        movq    %rax, %rcx
        call    newString
        leaq    -64(%rbp), %rcx
        movq    -16(%rbp), %rax
        movq    -8(%rbp), %rdx
        movq    %rax, -80(%rbp)
        movq    %rdx, -72(%rbp)
        movq    16(%rbp), %rax
        movq    24(%rbp), %rdx
        movq    %rax, -96(%rbp)
        movq    %rdx, -88(%rbp)
        leaq    -96(%rbp), %rdx
        leaq    -80(%rbp), %rax
        movq    %rdx, %r8
        movq    %rax, %rdx
        call    stringCat
        movq    -64(%rbp), %rax
        movq    -56(%rbp), %rdx
        movq    %rax, -16(%rbp)
        movq    %rdx, -8(%rbp)
        movl    -8(%rbp), %eax
        leal    3(%rax), %edx
        testl    %eax, %eax
        cmovs    %edx, %eax
        sarl    $2, %eax
        addl    $2, %eax
        cltq
        salq    $2, %rax
        movq    %rax, %rcx
        call    malloc
        movq    %rax, 104(%rbp)
        movl    $0, 124(%rbp)
        jmp    .L29
    .L30:
        movl    124(%rbp), %eax
        cltq
        leaq    0(,%rax,4), %rdx
        movq    104(%rbp), %rax
        leaq    (%rdx,%rax), %rbx
        movq    -16(%rbp), %rdx
        movl    124(%rbp), %eax
        sall    $2, %eax
        cltq
        addq    %rax, %rdx
        leaq    32(%rbp), %rax
        movl    $4, %r8d
        movq    %rax, %rcx
        call    newString
        movq    32(%rbp), %rax
        movq    40(%rbp), %rdx
        movq    %rax, -64(%rbp)
        movq    %rdx, -56(%rbp)
        leaq    -64(%rbp), %rax
        movq    %rax, %rcx
        call    stringToUint32
        movl    %eax, (%rbx)
        addl    $1, 124(%rbp)
    .L29:
        movl    -8(%rbp), %eax
        leal    3(%rax), %edx
        testl    %eax, %eax
        cmovs    %edx, %eax
        sarl    $2, %eax
        cmpl    124(%rbp), %eax
        jg    .L30
        movl    124(%rbp), %eax
        leal    1(%rax), %edx
        movl    %edx, 124(%rbp)
        cltq
        leaq    0(,%rax,4), %rdx
        movq    104(%rbp), %rax
        addq    %rdx, %rax
        movq    112(%rbp), %rdx
        sall    $3, %edx
        movl    %edx, (%rax)
        movl    124(%rbp), %eax
        leal    1(%rax), %edx
        movl    %edx, 124(%rbp)
        cltq
        leaq    0(,%rax,4), %rdx
        movq    104(%rbp), %rax
        addq    %rdx, %rax
        movq    112(%rbp), %rdx
        shrq    $29, %rdx
        movl    %edx, (%rax)
        movl    124(%rbp), %eax
        movl    %eax, 100(%rbp)
        movl    $0, 124(%rbp)
        jmp    .L31
    .L32:
        movl    124(%rbp), %eax
        cltq
        leaq    0(,%rax,4), %rdx
        movq    104(%rbp), %rax
        leaq    (%rdx,%rax), %rbx
        movl    124(%rbp), %eax
        cltq
        leaq    0(,%rax,4), %rdx
        movq    104(%rbp), %rax
        addq    %rdx, %rax
        movl    (%rax), %eax
        movl    %eax, %ecx
        call    changeEndianness
        movl    %eax, (%rbx)
        addl    $1, 124(%rbp)
    .L31:
        movl    100(%rbp), %eax
        subl    $2, %eax
        cmpl    124(%rbp), %eax
        jg    .L32
        movl    100(%rbp), %edx
        movq    104(%rbp), %rax
        movq    %rax, %rcx
        call    MD4Digest
        movq    %rax, 88(%rbp)
        leaq    -32(%rbp), %rax
        movl    $0, %r8d
        movl    $0, %edx
        movq    %rax, %rcx
        call    newString
        movl    $0, 124(%rbp)
        jmp    .L33
    .L34:
        movl    124(%rbp), %eax
        cltq
        leaq    0(,%rax,4), %rdx
        movq    88(%rbp), %rax
        leaq    (%rdx,%rax), %rbx
        movl    124(%rbp), %eax
        cltq
        leaq    0(,%rax,4), %rdx
        movq    88(%rbp), %rax
        addq    %rdx, %rax
        movl    (%rax), %eax
        movl    %eax, %ecx
        call    changeEndianness
        movl    %eax, (%rbx)
        movl    124(%rbp), %eax
        cltq
        leaq    0(,%rax,4), %rdx
        movq    88(%rbp), %rax
        addq    %rdx, %rax
        movl    (%rax), %edx
        leaq    48(%rbp), %rax
        movq    %rax, %rcx
        call    uint32ToString
        leaq    -64(%rbp), %rcx
        movq    -32(%rbp), %rax
        movq    -24(%rbp), %rdx
        movq    %rax, -80(%rbp)
        movq    %rdx, -72(%rbp)
        movq    48(%rbp), %rax
        movq    56(%rbp), %rdx
        movq    %rax, -96(%rbp)
        movq    %rdx, -88(%rbp)
        leaq    -96(%rbp), %rdx
        leaq    -80(%rbp), %rax
        movq    %rdx, %r8
        movq    %rax, %rdx
        call    stringCat
        movq    -64(%rbp), %rax
        movq    -56(%rbp), %rdx
        movq    %rax, -32(%rbp)
        movq    %rdx, -24(%rbp)
        addl    $1, 124(%rbp)
    .L33:
        cmpl    $3, 124(%rbp)
        jle    .L34
        leaq    64(%rbp), %rcx
        movq    -32(%rbp), %rax
        movq    -24(%rbp), %rdx
        movq    %rax, -64(%rbp)
        movq    %rdx, -56(%rbp)
        leaq    -64(%rbp), %rax
        movq    %rax, %rdx
        call    base16Encode
        movq    64(%rbp), %rax
        addq    $264, %rsp
        popq    %rbx
        popq    %rbp
        ret
        .seh_endproc
        .def    MD4Digest;    .scl    3;    .type    32;    .endef
        .seh_proc    MD4Digest
    MD4Digest:
        pushq    %rbp
        .seh_pushreg    %rbp
        movq    %rsp, %rbp
        .seh_setframe    %rbp, 0
        addq    $-128, %rsp
        .seh_stackalloc    128
        .seh_endprologue
        movq    %rcx, 16(%rbp)
        movl    %edx, 24(%rbp)
        movl    $16, %ecx
        call    malloc
        movq    %rax, -16(%rbp)
        movl    $0, -4(%rbp)
        jmp    .L37
    .L40:
        movl    $0, -8(%rbp)
        jmp    .L38
    .L39:
        movl    -4(%rbp), %eax
        sall    $4, %eax
        movl    %eax, %edx
        movl    -8(%rbp), %eax
        addl    %edx, %eax
        cltq
        leaq    0(,%rax,4), %rdx
        movq    16(%rbp), %rax
        addq    %rdx, %rax
        movl    (%rax), %edx
        movl    -8(%rbp), %eax
        cltq
        movl    %edx, -96(%rbp,%rax,4)
        addl    $1, -8(%rbp)
    .L38:
        cmpl    $15, -8(%rbp)
        jle    .L39
        movl    A(%rip), %eax
        movl    %eax, -20(%rbp)
        movl    B(%rip), %eax
        movl    %eax, -24(%rbp)
        movl    C(%rip), %eax
        movl    %eax, -28(%rbp)
        movl    D(%rip), %eax
        movl    %eax, -32(%rbp)
        movl    D(%rip), %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    B(%rip), %eax
        andl    %eax, %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    -96(%rbp), %eax
        addl    %eax, %edx
        movl    A(%rip), %eax
        addl    %edx, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %eax
        roll    $3, %eax
        movl    %eax, A(%rip)
        movl    C(%rip), %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    A(%rip), %eax
        andl    %eax, %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    -92(%rbp), %eax
        addl    %eax, %edx
        movl    D(%rip), %eax
        addl    %edx, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %eax
        roll    $7, %eax
        movl    %eax, D(%rip)
        movl    B(%rip), %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    D(%rip), %eax
        andl    %eax, %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    -88(%rbp), %eax
        addl    %eax, %edx
        movl    C(%rip), %eax
        addl    %edx, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %eax
        roll    $11, %eax
        movl    %eax, C(%rip)
        movl    A(%rip), %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    C(%rip), %eax
        andl    %eax, %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    -84(%rbp), %eax
        addl    %eax, %edx
        movl    B(%rip), %eax
        addl    %edx, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %eax
        rorl    $13, %eax
        movl    %eax, B(%rip)
        movl    D(%rip), %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    B(%rip), %eax
        andl    %eax, %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    -80(%rbp), %eax
        addl    %eax, %edx
        movl    A(%rip), %eax
        addl    %edx, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %eax
        roll    $3, %eax
        movl    %eax, A(%rip)
        movl    C(%rip), %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    A(%rip), %eax
        andl    %eax, %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    -76(%rbp), %eax
        addl    %eax, %edx
        movl    D(%rip), %eax
        addl    %edx, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %eax
        roll    $7, %eax
        movl    %eax, D(%rip)
        movl    B(%rip), %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    D(%rip), %eax
        andl    %eax, %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    -72(%rbp), %eax
        addl    %eax, %edx
        movl    C(%rip), %eax
        addl    %edx, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %eax
        roll    $11, %eax
        movl    %eax, C(%rip)
        movl    A(%rip), %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    C(%rip), %eax
        andl    %eax, %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    -68(%rbp), %eax
        addl    %eax, %edx
        movl    B(%rip), %eax
        addl    %edx, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %eax
        rorl    $13, %eax
        movl    %eax, B(%rip)
        movl    D(%rip), %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    B(%rip), %eax
        andl    %eax, %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    -64(%rbp), %eax
        addl    %eax, %edx
        movl    A(%rip), %eax
        addl    %edx, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %eax
        roll    $3, %eax
        movl    %eax, A(%rip)
        movl    C(%rip), %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    A(%rip), %eax
        andl    %eax, %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    -60(%rbp), %eax
        addl    %eax, %edx
        movl    D(%rip), %eax
        addl    %edx, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %eax
        roll    $7, %eax
        movl    %eax, D(%rip)
        movl    B(%rip), %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    D(%rip), %eax
        andl    %eax, %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    -56(%rbp), %eax
        addl    %eax, %edx
        movl    C(%rip), %eax
        addl    %edx, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %eax
        roll    $11, %eax
        movl    %eax, C(%rip)
        movl    A(%rip), %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    C(%rip), %eax
        andl    %eax, %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    -52(%rbp), %eax
        addl    %eax, %edx
        movl    B(%rip), %eax
        addl    %edx, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %eax
        rorl    $13, %eax
        movl    %eax, B(%rip)
        movl    D(%rip), %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    B(%rip), %eax
        andl    %eax, %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    -48(%rbp), %eax
        addl    %eax, %edx
        movl    A(%rip), %eax
        addl    %edx, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %eax
        roll    $3, %eax
        movl    %eax, A(%rip)
        movl    C(%rip), %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    A(%rip), %eax
        andl    %eax, %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    -44(%rbp), %eax
        addl    %eax, %edx
        movl    D(%rip), %eax
        addl    %edx, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %eax
        roll    $7, %eax
        movl    %eax, D(%rip)
        movl    B(%rip), %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    D(%rip), %eax
        andl    %eax, %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    -40(%rbp), %eax
        addl    %eax, %edx
        movl    C(%rip), %eax
        addl    %edx, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %eax
        roll    $11, %eax
        movl    %eax, C(%rip)
        movl    A(%rip), %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    C(%rip), %eax
        andl    %eax, %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    -36(%rbp), %eax
        addl    %eax, %edx
        movl    B(%rip), %eax
        addl    %edx, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %eax
        rorl    $13, %eax
        movl    %eax, B(%rip)
        movl    C(%rip), %edx
        movl    D(%rip), %eax
        orl    %eax, %edx
        movl    B(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    C(%rip), %edx
        movl    D(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -96(%rbp), %eax
        addl    %eax, %edx
        movl    A(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %eax
        roll    $3, %eax
        movl    %eax, A(%rip)
        movl    B(%rip), %edx
        movl    C(%rip), %eax
        orl    %eax, %edx
        movl    A(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    B(%rip), %edx
        movl    C(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -80(%rbp), %eax
        addl    %eax, %edx
        movl    D(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %eax
        roll    $5, %eax
        movl    %eax, D(%rip)
        movl    A(%rip), %edx
        movl    B(%rip), %eax
        orl    %eax, %edx
        movl    D(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    A(%rip), %edx
        movl    B(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -64(%rbp), %eax
        addl    %eax, %edx
        movl    C(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %eax
        roll    $9, %eax
        movl    %eax, C(%rip)
        movl    D(%rip), %edx
        movl    A(%rip), %eax
        orl    %eax, %edx
        movl    C(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    D(%rip), %edx
        movl    A(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -48(%rbp), %eax
        addl    %eax, %edx
        movl    B(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %eax
        roll    $13, %eax
        movl    %eax, B(%rip)
        movl    C(%rip), %edx
        movl    D(%rip), %eax
        orl    %eax, %edx
        movl    B(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    C(%rip), %edx
        movl    D(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -92(%rbp), %eax
        addl    %eax, %edx
        movl    A(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %eax
        roll    $3, %eax
        movl    %eax, A(%rip)
        movl    B(%rip), %edx
        movl    C(%rip), %eax
        orl    %eax, %edx
        movl    A(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    B(%rip), %edx
        movl    C(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -76(%rbp), %eax
        addl    %eax, %edx
        movl    D(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %eax
        roll    $5, %eax
        movl    %eax, D(%rip)
        movl    A(%rip), %edx
        movl    B(%rip), %eax
        orl    %eax, %edx
        movl    D(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    A(%rip), %edx
        movl    B(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -60(%rbp), %eax
        addl    %eax, %edx
        movl    C(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %eax
        roll    $9, %eax
        movl    %eax, C(%rip)
        movl    D(%rip), %edx
        movl    A(%rip), %eax
        orl    %eax, %edx
        movl    C(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    D(%rip), %edx
        movl    A(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -44(%rbp), %eax
        addl    %eax, %edx
        movl    B(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %eax
        roll    $13, %eax
        movl    %eax, B(%rip)
        movl    C(%rip), %edx
        movl    D(%rip), %eax
        orl    %eax, %edx
        movl    B(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    C(%rip), %edx
        movl    D(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -88(%rbp), %eax
        addl    %eax, %edx
        movl    A(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %eax
        roll    $3, %eax
        movl    %eax, A(%rip)
        movl    B(%rip), %edx
        movl    C(%rip), %eax
        orl    %eax, %edx
        movl    A(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    B(%rip), %edx
        movl    C(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -72(%rbp), %eax
        addl    %eax, %edx
        movl    D(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %eax
        roll    $5, %eax
        movl    %eax, D(%rip)
        movl    A(%rip), %edx
        movl    B(%rip), %eax
        orl    %eax, %edx
        movl    D(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    A(%rip), %edx
        movl    B(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -56(%rbp), %eax
        addl    %eax, %edx
        movl    C(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %eax
        roll    $9, %eax
        movl    %eax, C(%rip)
        movl    D(%rip), %edx
        movl    A(%rip), %eax
        orl    %eax, %edx
        movl    C(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    D(%rip), %edx
        movl    A(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -40(%rbp), %eax
        addl    %eax, %edx
        movl    B(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %eax
        roll    $13, %eax
        movl    %eax, B(%rip)
        movl    C(%rip), %edx
        movl    D(%rip), %eax
        orl    %eax, %edx
        movl    B(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    C(%rip), %edx
        movl    D(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -84(%rbp), %eax
        addl    %eax, %edx
        movl    A(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %eax
        roll    $3, %eax
        movl    %eax, A(%rip)
        movl    B(%rip), %edx
        movl    C(%rip), %eax
        orl    %eax, %edx
        movl    A(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    B(%rip), %edx
        movl    C(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -68(%rbp), %eax
        addl    %eax, %edx
        movl    D(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %eax
        roll    $5, %eax
        movl    %eax, D(%rip)
        movl    A(%rip), %edx
        movl    B(%rip), %eax
        orl    %eax, %edx
        movl    D(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    A(%rip), %edx
        movl    B(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -52(%rbp), %eax
        addl    %eax, %edx
        movl    C(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %eax
        roll    $9, %eax
        movl    %eax, C(%rip)
        movl    D(%rip), %edx
        movl    A(%rip), %eax
        orl    %eax, %edx
        movl    C(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    D(%rip), %edx
        movl    A(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -36(%rbp), %eax
        addl    %eax, %edx
        movl    B(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %eax
        roll    $13, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    -96(%rbp), %eax
        addl    %eax, %edx
        movl    A(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %eax
        roll    $3, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    -64(%rbp), %eax
        addl    %eax, %edx
        movl    D(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %eax
        roll    $9, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    -80(%rbp), %eax
        addl    %eax, %edx
        movl    C(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %eax
        roll    $11, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    -48(%rbp), %eax
        addl    %eax, %edx
        movl    B(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %eax
        roll    $15, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    -88(%rbp), %eax
        addl    %eax, %edx
        movl    A(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %eax
        roll    $3, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    -56(%rbp), %eax
        addl    %eax, %edx
        movl    D(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %eax
        roll    $9, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    -72(%rbp), %eax
        addl    %eax, %edx
        movl    C(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %eax
        roll    $11, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    -40(%rbp), %eax
        addl    %eax, %edx
        movl    B(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %eax
        roll    $15, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    -92(%rbp), %eax
        addl    %eax, %edx
        movl    A(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %eax
        roll    $3, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    -60(%rbp), %eax
        addl    %eax, %edx
        movl    D(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %eax
        roll    $9, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    -76(%rbp), %eax
        addl    %eax, %edx
        movl    C(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %eax
        roll    $11, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    -44(%rbp), %eax
        addl    %eax, %edx
        movl    B(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %eax
        roll    $15, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    -84(%rbp), %eax
        addl    %eax, %edx
        movl    A(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %eax
        roll    $3, %eax
        movl    %eax, A(%rip)
        movl    A(%rip), %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    C(%rip), %eax
        xorl    %eax, %edx
        movl    -52(%rbp), %eax
        addl    %eax, %edx
        movl    D(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %eax
        roll    $9, %eax
        movl    %eax, D(%rip)
        movl    D(%rip), %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    B(%rip), %eax
        xorl    %eax, %edx
        movl    -68(%rbp), %eax
        addl    %eax, %edx
        movl    C(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %eax
        roll    $11, %eax
        movl    %eax, C(%rip)
        movl    C(%rip), %edx
        movl    D(%rip), %eax
        xorl    %eax, %edx
        movl    A(%rip), %eax
        xorl    %eax, %edx
        movl    -36(%rbp), %eax
        addl    %eax, %edx
        movl    B(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, B(%rip)
        movl    B(%rip), %eax
        roll    $15, %eax
        movl    %eax, B(%rip)
        movl    A(%rip), %edx
        movl    -20(%rbp), %eax
        addl    %edx, %eax
        movl    %eax, A(%rip)
        movl    B(%rip), %edx
        movl    -24(%rbp), %eax
        addl    %edx, %eax
        movl    %eax, B(%rip)
        movl    C(%rip), %edx
        movl    -28(%rbp), %eax
        addl    %edx, %eax
        movl    %eax, C(%rip)
        movl    D(%rip), %edx
        movl    -32(%rbp), %eax
        addl    %edx, %eax
        movl    %eax, D(%rip)
        addl    $1, -4(%rbp)
    .L37:
        movl    24(%rbp), %eax
        leal    15(%rax), %edx
        testl    %eax, %eax
        cmovs    %edx, %eax
        sarl    $4, %eax
        cmpl    -4(%rbp), %eax
        jg    .L40
        movl    A(%rip), %edx
        movq    -16(%rbp), %rax
        movl    %edx, (%rax)
        movq    -16(%rbp), %rax
        leaq    4(%rax), %rdx
        movl    B(%rip), %eax
        movl    %eax, (%rdx)
        movq    -16(%rbp), %rax
        leaq    8(%rax), %rdx
        movl    C(%rip), %eax
        movl    %eax, (%rdx)
        movq    -16(%rbp), %rax
        leaq    12(%rax), %rdx
        movl    D(%rip), %eax
        movl    %eax, (%rdx)
        call    resetMD4Registers
        movq    -16(%rbp), %rax
        subq    $-128, %rsp
        popq    %rbp
        ret
        .seh_endproc
        .def    changeEndianness;    .scl    3;    .type    32;    .endef
        .seh_proc    changeEndianness
    changeEndianness:
        pushq    %rbp
        .seh_pushreg    %rbp
        movq    %rsp, %rbp
        .seh_setframe    %rbp, 0
        .seh_endprologue
        movl    %ecx, 16(%rbp)
        movl    16(%rbp), %eax
        sall    $24, %eax
        movl    %eax, %edx
        movl    16(%rbp), %eax
        andl    $65280, %eax
        sall    $8, %eax
        orl    %eax, %edx
        movl    16(%rbp), %eax
        andl    $16711680, %eax
        shrl    $8, %eax
        orl    %eax, %edx
        movl    16(%rbp), %eax
        shrl    $24, %eax
        orl    %edx, %eax
        popq    %rbp
        ret
        .seh_endproc
        .def    setMD4Registers;    .scl    3;    .type    32;    .endef
        .seh_proc    setMD4Registers
    setMD4Registers:
        pushq    %rbp
        .seh_pushreg    %rbp
        movq    %rsp, %rbp
        .seh_setframe    %rbp, 0
        .seh_endprologue
        movl    %ecx, 16(%rbp)
        movl    %edx, 24(%rbp)
        movl    %r8d, 32(%rbp)
        movl    %r9d, 40(%rbp)
        movl    16(%rbp), %eax
        movl    %eax, A(%rip)
        movl    24(%rbp), %eax
        movl    %eax, B(%rip)
        movl    32(%rbp), %eax
        movl    %eax, C(%rip)
        movl    40(%rbp), %eax
        movl    %eax, D(%rip)
        nop
        popq    %rbp
        ret
        .seh_endproc
        .def    resetMD4Registers;    .scl    3;    .type    32;    .endef
        .seh_proc    resetMD4Registers
    resetMD4Registers:
        pushq    %rbp
        .seh_pushreg    %rbp
        movq    %rsp, %rbp
        .seh_setframe    %rbp, 0
        subq    $32, %rsp
        .seh_stackalloc    32
        .seh_endprologue
        movl    $271733878, %r9d
        movl    $-1732584194, %r8d
        movl    $-271733879, %edx
        movl    $1732584193, %ecx
        call    setMD4Registers
        nop
        addq    $32, %rsp
        popq    %rbp
        ret
        .seh_endproc
        .def    __main;    .scl    2;    .type    32;    .endef
        .section .rdata,"dr"
    .LC1:
        .ascii "Rosetta Code\0"
    .LC2:
        .ascii "hello world\0"
        .text
        .globl    main
        .def    main;    .scl    2;    .type    32;    .endef
        .seh_proc    main
    main:
        pushq    %rbp
        .seh_pushreg    %rbp
        movq    %rsp, %rbp
        .seh_setframe    %rbp, 0
        subq    $32, %rsp
        .seh_stackalloc    32
        .seh_endprologue
        movl    %ecx, 16(%rbp)
        movq    %rdx, 24(%rbp)
        call    __main
        movl    $12, %edx
        leaq    .LC1(%rip), %rcx
        call    MD4
        movq    %rax, %rcx
        call    puts
        leaq    .LC2(%rip), %rcx
        call    puts
        movl    $0, %eax
        addq    $32, %rsp
        popq    %rbp
        ret
        .seh_endproc
        .ident    "GCC: (tdm64-1) 5.1.0"
        .def    strlen;    .scl    2;    .type    32;    .endef
        .def    malloc;    .scl    2;    .type    32;    .endef
        .def    memset;    .scl    2;    .type    32;    .endef
        .def    puts;    .scl    2;    .type    32;    .endef
    و اینم برای C++:

    کد:
        .file    "main.cpp"
        .section .rdata,"dr"
    .LC0:
        .ascii "0123456789abcdef=\0"
        .data
        .align 8
    _ZL6BASE16:
        .quad    .LC0
        .align 4
    _ZL1A:
        .long    1732584193
        .align 4
    _ZL1B:
        .long    -271733879
        .align 4
    _ZL1C:
        .long    -1732584194
        .align 4
    _ZL1D:
        .long    271733878
        .text
        .globl    _Z9newStringPci
        .def    _Z9newStringPci;    .scl    2;    .type    32;    .endef
        .seh_proc    _Z9newStringPci
    _Z9newStringPci:
    .LFB18:
        pushq    %rbp
        .seh_pushreg    %rbp
        movq    %rsp, %rbp
        .seh_setframe    %rbp, 0
        subq    $48, %rsp
        .seh_stackalloc    48
        .seh_endprologue
        movq    %rcx, 16(%rbp)
        movq    %rdx, 24(%rbp)
        movl    %r8d, 32(%rbp)
        cmpq    $0, 24(%rbp)
        je    .L2
        cmpl    $0, 32(%rbp)
        jg    .L3
        movq    24(%rbp), %rax
        movq    %rax, %rcx
        call    strlen
        jmp    .L4
    .L3:
        movl    32(%rbp), %eax
    .L4:
        movq    16(%rbp), %rdx
        movl    %eax, 8(%rdx)
        movq    16(%rbp), %rax
        movl    8(%rax), %eax
        addl    $1, %eax
        cltq
        movq    %rax, %rcx
        call    malloc
        movq    %rax, %rdx
        movq    16(%rbp), %rax
        movq    %rdx, (%rax)
        movl    $0, -4(%rbp)
    .L6:
        movq    16(%rbp), %rax
        movl    8(%rax), %eax
        cmpl    -4(%rbp), %eax
        jle    .L5
        movq    16(%rbp), %rax
        movq    (%rax), %rdx
        movl    -4(%rbp), %eax
        cltq
        addq    %rax, %rdx
        movl    -4(%rbp), %eax
        movslq    %eax, %rcx
        movq    24(%rbp), %rax
        addq    %rcx, %rax
        movzbl    (%rax), %eax
        movb    %al, (%rdx)
        addl    $1, -4(%rbp)
        jmp    .L6
    .L5:
        movq    16(%rbp), %rax
        movq    (%rax), %rdx
        movq    16(%rbp), %rax
        movl    8(%rax), %eax
        cltq
        addq    %rdx, %rax
        movb    $0, (%rax)
        jmp    .L1
    .L2:
        movq    16(%rbp), %rax
        movl    32(%rbp), %edx
        movl    %edx, 8(%rax)
        movq    16(%rbp), %rax
        movl    8(%rax), %eax
        addl    $1, %eax
        cltq
        movq    %rax, %rcx
        call    malloc
        movq    %rax, %rdx
        movq    16(%rbp), %rax
        movq    %rdx, (%rax)
        movl    32(%rbp), %eax
        addl    $1, %eax
        movslq    %eax, %rdx
        movq    16(%rbp), %rax
        movq    (%rax), %rax
        movq    %rdx, %r8
        movl    $0, %edx
        movq    %rax, %rcx
        call    memset
        movq    16(%rbp), %rax
        movb    $1, 12(%rax)
        nop
    .L1:
        movq    16(%rbp), %rax
        addq    $48, %rsp
        popq    %rbp
        ret
        .seh_endproc
        .def    _ZL9stringCat6stringS_;    .scl    3;    .type    32;    .endef
        .seh_proc    _ZL9stringCat6stringS_
    _ZL9stringCat6stringS_:
    .LFB19:
        pushq    %rbp
        .seh_pushreg    %rbp
        pushq    %rbx
        .seh_pushreg    %rbx
        subq    $88, %rsp
        .seh_stackalloc    88
        leaq    128(%rsp), %rbp
        .seh_setframe    %rbp, 128
        .seh_endprologue
        movq    %rcx, -16(%rbp)
        movq    %rdx, %rbx
        movq    (%rbx), %rax
        movq    8(%rbx), %rdx
        movq    %rax, -80(%rbp)
        movq    %rdx, -72(%rbp)
        movq    %r8, %rbx
        movq    (%rbx), %rax
        movq    8(%rbx), %rdx
        movq    %rax, -96(%rbp)
        movq    %rdx, -88(%rbp)
        movl    -72(%rbp), %edx
        movl    -88(%rbp), %eax
        addl    %eax, %edx
        movq    -16(%rbp), %rax
        movl    %edx, %r8d
        movl    $0, %edx
        movq    %rax, %rcx
        call    _Z9newStringPci
        movl    $0, -52(%rbp)
    .L10:
        movl    -72(%rbp), %eax
        cmpl    -52(%rbp), %eax
        jle    .L9
        movq    -16(%rbp), %rax
        movq    (%rax), %rdx
        movl    -52(%rbp), %eax
        cltq
        addq    %rax, %rdx
        movq    -80(%rbp), %rcx
        movl    -52(%rbp), %eax
        cltq
        addq    %rcx, %rax
        movzbl    (%rax), %eax
        movb    %al, (%rdx)
        addl    $1, -52(%rbp)
        jmp    .L10
    .L9:
        movl    -72(%rbp), %eax
        movl    %eax, -52(%rbp)
    .L12:
        movq    -16(%rbp), %rax
        movl    8(%rax), %eax
        cmpl    -52(%rbp), %eax
        jle    .L14
        movq    -16(%rbp), %rax
        movq    (%rax), %rdx
        movl    -52(%rbp), %eax
        cltq
        addq    %rax, %rdx
        movq    -96(%rbp), %rcx
        movl    -72(%rbp), %eax
        movl    -52(%rbp), %r8d
        subl    %eax, %r8d
        movl    %r8d, %eax
        cltq
        addq    %rcx, %rax
        movzbl    (%rax), %eax
        movb    %al, (%rdx)
        addl    $1, -52(%rbp)
        jmp    .L12
    .L14:
        nop
        movq    -16(%rbp), %rax
        addq    $88, %rsp
        popq    %rbx
        popq    %rbp
        ret
        .seh_endproc
        .globl    _Z12base16Encode6string
        .def    _Z12base16Encode6string;    .scl    2;    .type    32;    .endef
        .seh_proc    _Z12base16Encode6string
    _Z12base16Encode6string:
    .LFB20:
        pushq    %rbp
        .seh_pushreg    %rbp
        pushq    %rbx
        .seh_pushreg    %rbx
        subq    $72, %rsp
        .seh_stackalloc    72
        leaq    128(%rsp), %rbp
        .seh_setframe    %rbp, 128
        .seh_endprologue
        movq    %rcx, -32(%rbp)
        movq    %rdx, %rbx
        movq    (%rbx), %rax
        movq    8(%rbx), %rdx
        movq    %rax, -96(%rbp)
        movq    %rdx, -88(%rbp)
        movl    -88(%rbp), %eax
        leal    (%rax,%rax), %edx
        movq    -32(%rbp), %rax
        movl    %edx, %r8d
        movl    $0, %edx
        movq    %rax, %rcx
        call    _Z9newStringPci
        movl    $0, -72(%rbp)
        movl    $0, -68(%rbp)
    .L17:
        movl    -88(%rbp), %eax
        cmpl    -68(%rbp), %eax
        jle    .L16
        movq    -32(%rbp), %rax
        movq    (%rax), %rcx
        movl    -72(%rbp), %eax
        leal    1(%rax), %edx
        movl    %edx, -72(%rbp)
        cltq
        leaq    (%rcx,%rax), %rdx
        movq    _ZL6BASE16(%rip), %rcx
        movq    -96(%rbp), %r8
        movl    -68(%rbp), %eax
        cltq
        addq    %r8, %rax
        movzbl    (%rax), %eax
        movsbl    %al, %eax
        andl    $240, %eax
        sarl    $4, %eax
        cltq
        addq    %rcx, %rax
        movzbl    (%rax), %eax
        movb    %al, (%rdx)
        movq    -32(%rbp), %rax
        movq    (%rax), %rcx
        movl    -72(%rbp), %eax
        leal    1(%rax), %edx
        movl    %edx, -72(%rbp)
        cltq
        leaq    (%rcx,%rax), %rdx
        movq    _ZL6BASE16(%rip), %rax
        movq    -96(%rbp), %r8
        movl    -68(%rbp), %ecx
        movslq    %ecx, %rcx
        addq    %r8, %rcx
        movzbl    (%rcx), %ecx
        movsbq    %cl, %rcx
        andl    $15, %ecx
        addq    %rcx, %rax
        movzbl    (%rax), %eax
        movb    %al, (%rdx)
        addl    $1, -68(%rbp)
        jmp    .L17
    .L16:
        movq    -32(%rbp), %rax
        movq    (%rax), %rdx
        movl    -72(%rbp), %eax
        cltq
        addq    %rdx, %rax
        movb    $0, (%rax)
        nop
        movq    -32(%rbp), %rax
        addq    $72, %rsp
        popq    %rbx
        popq    %rbp
        ret
        .seh_endproc
        .def    _ZL14uint32ToStringj;    .scl    3;    .type    32;    .endef
        .seh_proc    _ZL14uint32ToStringj
    _ZL14uint32ToStringj:
    .LFB21:
        pushq    %rbp
        .seh_pushreg    %rbp
        movq    %rsp, %rbp
        .seh_setframe    %rbp, 0
        subq    $48, %rsp
        .seh_stackalloc    48
        .seh_endprologue
        movq    %rcx, 16(%rbp)
        movl    %edx, 24(%rbp)
        movq    16(%rbp), %rax
        movl    $4, %r8d
        movl    $0, %edx
        movq    %rax, %rcx
        call    _Z9newStringPci
        movl    $0, -4(%rbp)
    .L21:
        cmpl    $3, -4(%rbp)
        jg    .L23
        movq    16(%rbp), %rax
        movq    (%rax), %rdx
        movl    -4(%rbp), %eax
        cltq
        addq    %rdx, %rax
        movl    $3, %edx
        subl    -4(%rbp), %edx
        sall    $3, %edx
        movl    24(%rbp), %r8d
        movl    %edx, %ecx
        shrl    %cl, %r8d
        movl    %r8d, %edx
        movb    %dl, (%rax)
        addl    $1, -4(%rbp)
        jmp    .L21
    .L23:
        nop
        movq    16(%rbp), %rax
        addq    $48, %rsp
        popq    %rbp
        ret
        .seh_endproc
        .def    _ZL14stringToUint326string;    .scl    3;    .type    32;    .endef
        .seh_proc    _ZL14stringToUint326string
    _ZL14stringToUint326string:
    .LFB22:
        pushq    %rbp
        .seh_pushreg    %rbp
        pushq    %rbx
        .seh_pushreg    %rbx
        subq    $40, %rsp
        .seh_stackalloc    40
        leaq    128(%rsp), %rbp
        .seh_setframe    %rbp, 128
        .seh_endprologue
        movq    %rcx, %rbx
        movq    (%rbx), %rax
        movq    8(%rbx), %rdx
        movq    %rax, -128(%rbp)
        movq    %rdx, -120(%rbp)
        movl    $0, -100(%rbp)
        movl    $0, -104(%rbp)
    .L26:
        cmpl    $3, -104(%rbp)
        jg    .L25
        movq    -128(%rbp), %rdx
        movl    -104(%rbp), %eax
        cltq
        addq    %rdx, %rax
        movzbl    (%rax), %eax
        movzbl    %al, %edx
        movl    $3, %eax
        subl    -104(%rbp), %eax
        sall    $3, %eax
        movl    %eax, %ecx
        sall    %cl, %edx
        movl    %edx, %eax
        orl    %eax, -100(%rbp)
        addl    $1, -104(%rbp)
        jmp    .L26
    .L25:
        movl    -100(%rbp), %eax
        addq    $40, %rsp
        popq    %rbx
        popq    %rbp
        ret
        .seh_endproc
        .globl    _Z3MD4Pci
        .def    _Z3MD4Pci;    .scl    2;    .type    32;    .endef
        .seh_proc    _Z3MD4Pci
    _Z3MD4Pci:
    .LFB23:
        pushq    %rbp
        .seh_pushreg    %rbp
        pushq    %rbx
        .seh_pushreg    %rbx
        subq    $264, %rsp
        .seh_stackalloc    264
        leaq    128(%rsp), %rbp
        .seh_setframe    %rbp, 128
        .seh_endprologue
        movq    %rcx, 160(%rbp)
        movl    %edx, 168(%rbp)
        leaq    -16(%rbp), %rax
        movl    168(%rbp), %edx
        movl    %edx, %r8d
        movq    160(%rbp), %rdx
        movq    %rax, %rcx
        call    _Z9newStringPci
        movl    -8(%rbp), %eax
        cltq
        movq    %rax, 112(%rbp)
        movb    $-128, -33(%rbp)
        movq    %rbp, %rax
        leaq    -33(%rbp), %rdx
        movl    $1, %r8d
        movq    %rax, %rcx
        call    _Z9newStringPci
        leaq    -64(%rbp), %rcx
        movq    -16(%rbp), %rax
        movq    -8(%rbp), %rdx
        movq    %rax, -80(%rbp)
        movq    %rdx, -72(%rbp)
        movq    0(%rbp), %rax
        movq    8(%rbp), %rdx
        movq    %rax, -96(%rbp)
        movq    %rdx, -88(%rbp)
        leaq    -96(%rbp), %rdx
        leaq    -80(%rbp), %rax
        movq    %rdx, %r8
        movq    %rax, %rdx
        call    _ZL9stringCat6stringS_
        movq    -64(%rbp), %rax
        movq    -56(%rbp), %rdx
        movq    %rax, -16(%rbp)
        movq    %rdx, -8(%rbp)
        movl    -8(%rbp), %eax
        movl    $56, %edx
        subl    %eax, %edx
        movl    %edx, %eax
        sarl    $31, %eax
        shrl    $26, %eax
        addl    %eax, %edx
        andl    $63, %edx
        subl    %eax, %edx
        movl    %edx, %eax
        movl    %eax, 124(%rbp)
        cmpl    $0, 124(%rbp)
        jns    .L29
        addl    $64, 124(%rbp)
    .L29:
        leaq    16(%rbp), %rax
        movl    124(%rbp), %edx
        movl    %edx, %r8d
        movl    $0, %edx
        movq    %rax, %rcx
        call    _Z9newStringPci
        leaq    -64(%rbp), %rcx
        movq    -16(%rbp), %rax
        movq    -8(%rbp), %rdx
        movq    %rax, -80(%rbp)
        movq    %rdx, -72(%rbp)
        movq    16(%rbp), %rax
        movq    24(%rbp), %rdx
        movq    %rax, -96(%rbp)
        movq    %rdx, -88(%rbp)
        leaq    -96(%rbp), %rdx
        leaq    -80(%rbp), %rax
        movq    %rdx, %r8
        movq    %rax, %rdx
        call    _ZL9stringCat6stringS_
        movq    -64(%rbp), %rax
        movq    -56(%rbp), %rdx
        movq    %rax, -16(%rbp)
        movq    %rdx, -8(%rbp)
        movl    -8(%rbp), %eax
        leal    3(%rax), %edx
        testl    %eax, %eax
        cmovs    %edx, %eax
        sarl    $2, %eax
        addl    $2, %eax
        cltq
        salq    $2, %rax
        movq    %rax, %rcx
        call    malloc
        movq    %rax, 104(%rbp)
        movl    $0, 124(%rbp)
    .L31:
        movl    -8(%rbp), %eax
        leal    3(%rax), %edx
        testl    %eax, %eax
        cmovs    %edx, %eax
        sarl    $2, %eax
        cmpl    124(%rbp), %eax
        jle    .L30
        movl    124(%rbp), %eax
        cltq
        leaq    0(,%rax,4), %rdx
        movq    104(%rbp), %rax
        leaq    (%rdx,%rax), %rbx
        movq    -16(%rbp), %rdx
        movl    124(%rbp), %eax
        sall    $2, %eax
        cltq
        addq    %rax, %rdx
        leaq    32(%rbp), %rax
        movl    $4, %r8d
        movq    %rax, %rcx
        call    _Z9newStringPci
        movq    32(%rbp), %rax
        movq    40(%rbp), %rdx
        movq    %rax, -64(%rbp)
        movq    %rdx, -56(%rbp)
        leaq    -64(%rbp), %rax
        movq    %rax, %rcx
        call    _ZL14stringToUint326string
        movl    %eax, (%rbx)
        addl    $1, 124(%rbp)
        jmp    .L31
    .L30:
        movl    124(%rbp), %eax
        leal    1(%rax), %edx
        movl    %edx, 124(%rbp)
        cltq
        leaq    0(,%rax,4), %rdx
        movq    104(%rbp), %rax
        addq    %rdx, %rax
        movq    112(%rbp), %rdx
        sall    $3, %edx
        movl    %edx, (%rax)
        movl    124(%rbp), %eax
        leal    1(%rax), %edx
        movl    %edx, 124(%rbp)
        cltq
        leaq    0(,%rax,4), %rdx
        movq    104(%rbp), %rax
        addq    %rdx, %rax
        movq    112(%rbp), %rdx
        shrq    $29, %rdx
        movl    %edx, (%rax)
        movl    124(%rbp), %eax
        movl    %eax, 100(%rbp)
        movl    $0, 124(%rbp)
    .L33:
        movl    100(%rbp), %eax
        subl    $2, %eax
        cmpl    124(%rbp), %eax
        jle    .L32
        movl    124(%rbp), %eax
        cltq
        leaq    0(,%rax,4), %rdx
        movq    104(%rbp), %rax
        leaq    (%rdx,%rax), %rbx
        movl    124(%rbp), %eax
        cltq
        leaq    0(,%rax,4), %rdx
        movq    104(%rbp), %rax
        addq    %rdx, %rax
        movl    (%rax), %eax
        movl    %eax, %ecx
        call    _ZL16changeEndiannessj
        movl    %eax, (%rbx)
        addl    $1, 124(%rbp)
        jmp    .L33
    .L32:
        movl    100(%rbp), %edx
        movq    104(%rbp), %rax
        movq    %rax, %rcx
        call    _ZL9MD4DigestPji
        movq    %rax, 88(%rbp)
        leaq    -64(%rbp), %rax
        movl    $0, %r8d
        movl    $0, %edx
        movq    %rax, %rcx
        call    _Z9newStringPci
        movq    -64(%rbp), %rax
        movq    -56(%rbp), %rdx
        movq    %rax, -32(%rbp)
        movq    %rdx, -24(%rbp)
        movl    $0, 124(%rbp)
    .L35:
        cmpl    $3, 124(%rbp)
        jg    .L34
        movl    124(%rbp), %eax
        cltq
        leaq    0(,%rax,4), %rdx
        movq    88(%rbp), %rax
        leaq    (%rdx,%rax), %rbx
        movl    124(%rbp), %eax
        cltq
        leaq    0(,%rax,4), %rdx
        movq    88(%rbp), %rax
        addq    %rdx, %rax
        movl    (%rax), %eax
        movl    %eax, %ecx
        call    _ZL16changeEndiannessj
        movl    %eax, (%rbx)
        movl    124(%rbp), %eax
        cltq
        leaq    0(,%rax,4), %rdx
        movq    88(%rbp), %rax
        addq    %rdx, %rax
        movl    (%rax), %edx
        leaq    48(%rbp), %rax
        movq    %rax, %rcx
        call    _ZL14uint32ToStringj
        leaq    -64(%rbp), %rcx
        movq    -32(%rbp), %rax
        movq    -24(%rbp), %rdx
        movq    %rax, -80(%rbp)
        movq    %rdx, -72(%rbp)
        movq    48(%rbp), %rax
        movq    56(%rbp), %rdx
        movq    %rax, -96(%rbp)
        movq    %rdx, -88(%rbp)
        leaq    -96(%rbp), %rdx
        leaq    -80(%rbp), %rax
        movq    %rdx, %r8
        movq    %rax, %rdx
        call    _ZL9stringCat6stringS_
        movq    -64(%rbp), %rax
        movq    -56(%rbp), %rdx
        movq    %rax, -32(%rbp)
        movq    %rdx, -24(%rbp)
        addl    $1, 124(%rbp)
        jmp    .L35
    .L34:
        leaq    64(%rbp), %rcx
        movq    -32(%rbp), %rax
        movq    -24(%rbp), %rdx
        movq    %rax, -64(%rbp)
        movq    %rdx, -56(%rbp)
        leaq    -64(%rbp), %rax
        movq    %rax, %rdx
        call    _Z12base16Encode6string
        movq    64(%rbp), %rax
        addq    $264, %rsp
        popq    %rbx
        popq    %rbp
        ret
        .seh_endproc
        .def    _ZL9MD4DigestPji;    .scl    3;    .type    32;    .endef
        .seh_proc    _ZL9MD4DigestPji
    _ZL9MD4DigestPji:
    .LFB24:
        pushq    %rbp
        .seh_pushreg    %rbp
        movq    %rsp, %rbp
        .seh_setframe    %rbp, 0
        addq    $-128, %rsp
        .seh_stackalloc    128
        .seh_endprologue
        movq    %rcx, 16(%rbp)
        movl    %edx, 24(%rbp)
        movl    $16, %eax
        movq    %rax, %rcx
        call    malloc
        movq    %rax, -16(%rbp)
        movl    $0, -4(%rbp)
    .L41:
        movl    24(%rbp), %eax
        leal    15(%rax), %edx
        testl    %eax, %eax
        cmovs    %edx, %eax
        sarl    $4, %eax
        cmpl    -4(%rbp), %eax
        jle    .L38
        movl    $0, -8(%rbp)
    .L40:
        cmpl    $15, -8(%rbp)
        jg    .L39
        movl    -4(%rbp), %eax
        sall    $4, %eax
        movl    %eax, %edx
        movl    -8(%rbp), %eax
        addl    %edx, %eax
        cltq
        leaq    0(,%rax,4), %rdx
        movq    16(%rbp), %rax
        addq    %rdx, %rax
        movl    (%rax), %edx
        movl    -8(%rbp), %eax
        cltq
        movl    %edx, -96(%rbp,%rax,4)
        addl    $1, -8(%rbp)
        jmp    .L40
    .L39:
        movl    _ZL1A(%rip), %eax
        movl    %eax, -20(%rbp)
        movl    _ZL1B(%rip), %eax
        movl    %eax, -24(%rbp)
        movl    _ZL1C(%rip), %eax
        movl    %eax, -28(%rbp)
        movl    _ZL1D(%rip), %eax
        movl    %eax, -32(%rbp)
        movl    _ZL1D(%rip), %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    -96(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %eax
        roll    $3, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1C(%rip), %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    -92(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %eax
        roll    $7, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1B(%rip), %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    -88(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %eax
        roll    $11, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1A(%rip), %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    -84(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %eax
        rorl    $13, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1D(%rip), %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    -80(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %eax
        roll    $3, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1C(%rip), %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    -76(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %eax
        roll    $7, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1B(%rip), %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    -72(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %eax
        roll    $11, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1A(%rip), %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    -68(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %eax
        rorl    $13, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1D(%rip), %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    -64(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %eax
        roll    $3, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1C(%rip), %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    -60(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %eax
        roll    $7, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1B(%rip), %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    -56(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %eax
        roll    $11, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1A(%rip), %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    -52(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %eax
        rorl    $13, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1D(%rip), %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    -48(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %eax
        roll    $3, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1C(%rip), %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    -44(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %eax
        roll    $7, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1B(%rip), %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    -40(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %eax
        roll    $11, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1A(%rip), %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        andl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    -36(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %eax
        rorl    $13, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1C(%rip), %edx
        movl    _ZL1D(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1C(%rip), %edx
        movl    _ZL1D(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -96(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %eax
        roll    $3, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1B(%rip), %edx
        movl    _ZL1C(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1B(%rip), %edx
        movl    _ZL1C(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -80(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %eax
        roll    $5, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1A(%rip), %edx
        movl    _ZL1B(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1A(%rip), %edx
        movl    _ZL1B(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -64(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %eax
        roll    $9, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1D(%rip), %edx
        movl    _ZL1A(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1D(%rip), %edx
        movl    _ZL1A(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -48(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %eax
        roll    $13, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1C(%rip), %edx
        movl    _ZL1D(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1C(%rip), %edx
        movl    _ZL1D(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -92(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %eax
        roll    $3, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1B(%rip), %edx
        movl    _ZL1C(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1B(%rip), %edx
        movl    _ZL1C(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -76(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %eax
        roll    $5, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1A(%rip), %edx
        movl    _ZL1B(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1A(%rip), %edx
        movl    _ZL1B(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -60(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %eax
        roll    $9, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1D(%rip), %edx
        movl    _ZL1A(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1D(%rip), %edx
        movl    _ZL1A(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -44(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %eax
        roll    $13, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1C(%rip), %edx
        movl    _ZL1D(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1C(%rip), %edx
        movl    _ZL1D(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -88(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %eax
        roll    $3, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1B(%rip), %edx
        movl    _ZL1C(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1B(%rip), %edx
        movl    _ZL1C(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -72(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %eax
        roll    $5, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1A(%rip), %edx
        movl    _ZL1B(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1A(%rip), %edx
        movl    _ZL1B(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -56(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %eax
        roll    $9, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1D(%rip), %edx
        movl    _ZL1A(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1D(%rip), %edx
        movl    _ZL1A(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -40(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %eax
        roll    $13, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1C(%rip), %edx
        movl    _ZL1D(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1C(%rip), %edx
        movl    _ZL1D(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -84(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %eax
        roll    $3, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1B(%rip), %edx
        movl    _ZL1C(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1B(%rip), %edx
        movl    _ZL1C(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -68(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %eax
        roll    $5, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1A(%rip), %edx
        movl    _ZL1B(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1A(%rip), %edx
        movl    _ZL1B(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -52(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %eax
        roll    $9, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1D(%rip), %edx
        movl    _ZL1A(%rip), %eax
        orl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        movl    %edx, %ecx
        andl    %eax, %ecx
        movl    _ZL1D(%rip), %edx
        movl    _ZL1A(%rip), %eax
        andl    %edx, %eax
        orl    %eax, %ecx
        movl    %ecx, %edx
        movl    -36(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        addl    %edx, %eax
        addl    $1518500249, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %eax
        roll    $13, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    -96(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %eax
        roll    $3, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    -64(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %eax
        roll    $9, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    -80(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %eax
        roll    $11, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    -48(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %eax
        roll    $15, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    -88(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %eax
        roll    $3, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    -56(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %eax
        roll    $9, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    -72(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %eax
        roll    $11, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    -40(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %eax
        roll    $15, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    -92(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %eax
        roll    $3, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    -60(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %eax
        roll    $9, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    -76(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %eax
        roll    $11, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    -44(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %eax
        roll    $15, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    -84(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %eax
        roll    $3, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1A(%rip), %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        xorl    %eax, %edx
        movl    -52(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1D(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %eax
        roll    $9, %eax
        movl    %eax, _ZL1D(%rip)
        movl    _ZL1D(%rip), %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        xorl    %eax, %edx
        movl    -68(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1C(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %eax
        roll    $11, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1C(%rip), %edx
        movl    _ZL1D(%rip), %eax
        xorl    %eax, %edx
        movl    _ZL1A(%rip), %eax
        xorl    %eax, %edx
        movl    -36(%rbp), %eax
        addl    %eax, %edx
        movl    _ZL1B(%rip), %eax
        addl    %edx, %eax
        addl    $1859775393, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1B(%rip), %eax
        roll    $15, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1A(%rip), %edx
        movl    -20(%rbp), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1A(%rip)
        movl    _ZL1B(%rip), %edx
        movl    -24(%rbp), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1B(%rip)
        movl    _ZL1C(%rip), %edx
        movl    -28(%rbp), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1C(%rip)
        movl    _ZL1D(%rip), %edx
        movl    -32(%rbp), %eax
        addl    %edx, %eax
        movl    %eax, _ZL1D(%rip)
        addl    $1, -4(%rbp)
        jmp    .L41
    .L38:
        movl    _ZL1A(%rip), %edx
        movq    -16(%rbp), %rax
        movl    %edx, (%rax)
        movq    -16(%rbp), %rax
        leaq    4(%rax), %rdx
        movl    _ZL1B(%rip), %eax
        movl    %eax, (%rdx)
        movq    -16(%rbp), %rax
        leaq    8(%rax), %rdx
        movl    _ZL1C(%rip), %eax
        movl    %eax, (%rdx)
        movq    -16(%rbp), %rax
        leaq    12(%rax), %rdx
        movl    _ZL1D(%rip), %eax
        movl    %eax, (%rdx)
        call    _ZL17resetMD4Registersv
        movq    -16(%rbp), %rax
        subq    $-128, %rsp
        popq    %rbp
        ret
        .seh_endproc
        .def    _ZL16changeEndiannessj;    .scl    3;    .type    32;    .endef
        .seh_proc    _ZL16changeEndiannessj
    _ZL16changeEndiannessj:
    .LFB25:
        pushq    %rbp
        .seh_pushreg    %rbp
        movq    %rsp, %rbp
        .seh_setframe    %rbp, 0
        .seh_endprologue
        movl    %ecx, 16(%rbp)
        movl    16(%rbp), %eax
        sall    $24, %eax
        movl    %eax, %edx
        movl    16(%rbp), %eax
        andl    $65280, %eax
        sall    $8, %eax
        orl    %eax, %edx
        movl    16(%rbp), %eax
        andl    $16711680, %eax
        shrl    $8, %eax
        orl    %eax, %edx
        movl    16(%rbp), %eax
        shrl    $24, %eax
        orl    %edx, %eax
        popq    %rbp
        ret
        .seh_endproc
        .def    _ZL15setMD4Registersjjjj;    .scl    3;    .type    32;    .endef
        .seh_proc    _ZL15setMD4Registersjjjj
    _ZL15setMD4Registersjjjj:
    .LFB26:
        pushq    %rbp
        .seh_pushreg    %rbp
        movq    %rsp, %rbp
        .seh_setframe    %rbp, 0
        .seh_endprologue
        movl    %ecx, 16(%rbp)
        movl    %edx, 24(%rbp)
        movl    %r8d, 32(%rbp)
        movl    %r9d, 40(%rbp)
        movl    16(%rbp), %eax
        movl    %eax, _ZL1A(%rip)
        movl    24(%rbp), %eax
        movl    %eax, _ZL1B(%rip)
        movl    32(%rbp), %eax
        movl    %eax, _ZL1C(%rip)
        movl    40(%rbp), %eax
        movl    %eax, _ZL1D(%rip)
        nop
        popq    %rbp
        ret
        .seh_endproc
        .def    _ZL17resetMD4Registersv;    .scl    3;    .type    32;    .endef
        .seh_proc    _ZL17resetMD4Registersv
    _ZL17resetMD4Registersv:
    .LFB27:
        pushq    %rbp
        .seh_pushreg    %rbp
        movq    %rsp, %rbp
        .seh_setframe    %rbp, 0
        subq    $32, %rsp
        .seh_stackalloc    32
        .seh_endprologue
        movl    $271733878, %r9d
        movl    $-1732584194, %r8d
        movl    $-271733879, %edx
        movl    $1732584193, %ecx
        call    _ZL15setMD4Registersjjjj
        nop
        addq    $32, %rsp
        popq    %rbp
        ret
        .seh_endproc
        .def    __main;    .scl    2;    .type    32;    .endef
        .section .rdata,"dr"
    .LC1:
        .ascii "Rosetta Code\0"
    .LC2:
        .ascii "hello world\0"
        .text
        .globl    main
        .def    main;    .scl    2;    .type    32;    .endef
        .seh_proc    main
    main:
    .LFB28:
        pushq    %rbp
        .seh_pushreg    %rbp
        movq    %rsp, %rbp
        .seh_setframe    %rbp, 0
        subq    $32, %rsp
        .seh_stackalloc    32
        .seh_endprologue
        movl    %ecx, 16(%rbp)
        movq    %rdx, 24(%rbp)
        call    __main
        movl    $12, %edx
        leaq    .LC1(%rip), %rcx
        call    _Z3MD4Pci
        movq    %rax, %rcx
        call    puts
        leaq    .LC2(%rip), %rcx
        call    puts
        movl    $0, %eax
        addq    $32, %rsp
        popq    %rbp
        ret
        .seh_endproc
        .ident    "GCC: (tdm64-1) 5.1.0"
        .def    strlen;    .scl    2;    .type    32;    .endef
        .def    malloc;    .scl    2;    .type    32;    .endef
        .def    memset;    .scl    2;    .type    32;    .endef
        .def    puts;    .scl    2;    .type    32;    .endef
    با

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت



    راحتتر می تونید دو فایل رو بررسی کنید.
    عزیزم من ایراد نگرفتم ازت
    میگم این کار خیلی جزئیات داره که باید بهش دقت بشه
    چه بسا گاهی اوقات یه چیزی که آدم حتی فکرش رو هم نمیکنه باعث و بانی این مسائل میشه
  6. #16
    2012/12/30
    بوشهر
    3,198
    1,100

    پاسخ : C یا C++؟ کدوم رو انتخاب کنم؟

    @

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت



    بله. کلا امبدد بخاطر همین چیزا پیچیده هستش.
    البته من هنوز قبول نکردم که C++ کدهای بیشتری نسبت به C ایجاد میکنه. ما الان داریم این موضوع رو بررسی میکنیم که چرا برای کدهای C هم که توی کامپایلرهای C++ کامپایل میشن، حجم متفاوتی میگیریم. من این قضیه برام عجیبه. ولی اینکه من شی گرائی استفاده کنم و با پارادایم رویه ای مقایسه کنم شاید کار درستی نباشه. من باید تحقیق کنم. باید ببینم اصلا شدنی هست و نتایج اون قابل قبول خواهد بود. چون همین طوری بدون تغییر در کدها، نتایج دارای کمی اختلاف هستش. گمون نمیکنم بشه شی گرائی در C++ رو با پارادایم رویه ای C مقایسه کرد. چون من خودم دوست دارم از شی گرائی اون استفاده کنم.وگرنه لزومی نبود دوباره C++ رو یاد بگیرم.
  7. #17
    2009/10/25
    تهران
    414
    24

    پاسخ : C یا C++؟ کدوم رو انتخاب کنم؟

    ببین عزیزم چیز عجیبی نیست
    زبان سی یک سری قابلیت هایی داره که زبان سی پلاس پلاس نداره
    کلا میگن زبان سی سطح پایین تر از زبان سی پلاس پلاس هستش. یعنی دستوراتی که استفاده میکنه خیلی وابسته به معماری کامپیوتر هستند و بیشتر از قابلیت های اسمبلی ماشین استفاده میکنه تا سی پلاس پلاس.
    به خاطر همین هم حجم کدی که میده کمتره و البته سریع تر اجرا میشه چون سطح پایین تر از سی پلاس پلاسه

    من فکر میکنم برای شما این ذهنیت به وجود اومده که سی پلاس پلاس همون زبان سی هست فقط با یک سری امکانات اضافه. این طرز فکر اشتباهه. زبان سی پلاس پلاس از سی مشتق شده ولی همون زبان نیست و خیلی با زبان سی فرق داره.
    ویرایش توسط hamidreza.nayeri : 2018/02/09 در ساعت 15:33
  8. #18
    2012/12/30
    بوشهر
    3,198
    1,100

    پاسخ : C یا C++؟ کدوم رو انتخاب کنم؟

    @

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت



    به نظرم بهتره بگیم C ویژگی داره که C++ نداره(وگرنه چه قابلیتی داره که C++ نداره؟). وقتی میگیم قابلیت انگار یه دستور خاصی داره یا کار خاصی انجام میده. البته اگه منظورت سطح پایین بودنشه که هر کسی یه چیزی میگه. حتی گاهی وقتا بعنوان هم سطح پایین و هم سطح بالا ازش یاد میشه.حالا C چه قابلیتی داره که C++ نداره؟

    اینا رو میدونم و سالهاست که باهاش کار میکنم. مهندس حرفهای سطح پایین نزن(اینا رو خیلی وقت پیش خوندیم). شما می خوای یه برنامه شی گرایی توی C++ رو با یه برنامه رویه ای توی C مقایسه کنی؟ چطوری؟ اگه نمی خوای مقایسه کنی پس گفتن هم کافی نیست.

    اگه شی گرایی C++ رو کنار بذاریم، این زبان با C در موارد کمی تفاوت دارن. تفاوت وجود داره ولی کمه. توی پست اول تاپیک گفتم. اگه برنامه نویسی توی C++ یه دنیای دیگه هستش، بخاطر شی گرائیش هستش. اصطلاحا میگن C++ یه Superset از C هستش. من مشتق شده ندیدم که به کار ببرن. اگه مشتق شده رو برای انگلیسی واژه derivative در نظر بگیریم. البته من خودم در عین حال قبول دارم که مسئله C++ رو باید از C جدا حساب کرد. حتی برای معرفی اون دو کتاب و آموزش هم گفتم این موضوع رو. قبلا جاهای دیگه هم گفتم. شاید تقصیر کار کتاب های توی کشور هستش که عنوان C/C++ دارن. فکر کنم توی زبان های دیگه و حتی انگلیسی زبان ها هم دیدم که عنوان کتاب رو اینجوری می ذارن که به نظرم کار درستی نیست.

    بحث رو زیاد به این قسمت ها نبریم. من در مورد این موضوعات هنوز تحقیق خواهم کرد. حتی اینکه می تونیم مقایسه کنیم یا نه. دوباره نتایج رو اینجا می ذارم.
    از اینکه توی این تاپیک با بنده همکاری میکنید بسیار خوشحالم.
  9. #19
    2014/05/29
    قدس
    1,201
    108

    پاسخ : C یا C++؟ کدوم رو انتخاب کنم؟

    نقل قول نوشته اصلی توسط hamidreza.nayeri

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    زبان سی یک سری قابلیت هایی داره که زبان سی پلاس پلاس نداره
    ممنون میشم بیشتر توضیح بدید ( غیز از کم بودن حجم کد در سی )

    من فکر میکنم برای شما این ذهنیت به وجود اومده که سی پلاس پلاس همون زبان سی هست فقط با یک سری امکانات اضافه. این طرز فکر اشتباهه.
    منم این ذهنیت رو دارم

    زبان سی پلاس پلاس از سی مشتق شده ولی همون زبان نیست و خیلی با زبان سی فرق داره
    من تا حالا فک میکردم در اکثر موارد شبیه هم هستند این دو ( البته خب یکی مث من حداکثرو 100 میبینه و میگه 70 تا یکسان هستند و لذا.... یکی هم حداکثر رو 1000 میبینه و میگه .... )
    ویرایش توسط md3848 : 2019/01/29 در ساعت 20:06
    اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

    اگه دوس دارید سریع به جواب برسید :
    1) قبل از پرسیدن سوال، بسرچید.
    2) سوالاتون رو با جزئیات کامل مطرح کنید.
  10. #20
    2017/02/06
    47
    6

    پاسخ : C یا C++؟ کدوم رو انتخاب کنم؟

    به نظرم سی پا سی پلاس پلاس فرقی ندارن اگر و تنها اگر(قضیه دوشرطی!)از کامپایلر گنو جی سی سی استفاده بشه.
    سی به جز اسمبلی پدر جد بیشتر زبان های امروزی هست.یادگیری سختی هم نداره بجر بخش پوینتر که نقطه قوتشه،ولی مخت رگ به رگ میشه تا درکش کنی!
    ولی من بشخصه سی رو بیشتر میپسندم البته تو جایی که الزامی به شی گرایی نباشه.مثلا خود دستور چاپ در سی و سی++.واقعا printf کارامد تر از cout هست.(البته نظر شخصی).البته باید توجه کرد که قراره برای میکرو نوشته بشه یا برای سیستم ها کامپیوتر.ویا به محیط گرافیکی که ویژوال استودیو در این زمینه حرف اول رو میزنه.
    در هرصورت عین این که اول گقتم ،هرکدمو میخواید انتخاب کنید ولی با کامپایلر استانداردشون کار کنید که بعدا واقعا مشکل خواهد شد.
صفحه 2 از 2 نخست 12
نمایش نتایج: از 11 به 20 از 20

موضوعات مشابه

  1. کدوم PLC ?
    توسط humauon در انجمن PLC
    پاسخ: 1
    آخرين نوشته: 2016/06/12, 22:54
  2. پاسخ: 1
    آخرين نوشته: 2016/04/17, 01:05
  3. کدوم آرم ،کدوم برد آموزشی و چرا؟
    توسط abolfazlk873 در انجمن پروسسورهای ARM
    پاسخ: 2
    آخرين نوشته: 2013/12/16, 09:23
  4. پاسخ: 1
    آخرين نوشته: 2013/06/08, 19:49
  5. انتخاب يک آمپلي فاير خوب (کدوم بهتره ؟) :wow:
    توسط maziyar123 در انجمن مدارات صوتي
    پاسخ: 16
    آخرين نوشته: 2011/07/16, 23:29

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •