اطلاعیه

Collapse
No announcement yet.

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

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

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

    سلام
    خب بعد از ایجاد این تاپیک من متوجه یه مسئله جدید برای تازه کارها شدم:

    بهترین منابع آموزش زبان C و C++ چیست و چطور ازشون استفاده کنیم؟

    به نظر مبتدی ها و تازه کارها اول کار براشون این سوال پیش میاد که C یا C++ رو انتخاب کنن. البته اونایی که متوجه میشن که بین C و C++ تفاوت هایی وجود داره این سوال براشون پیش میاد. اگه هم توی گوگل جستجو کنید سایت های متفاوتی با این موضوع می بینید. من بعضی هاشون رو نگاه کردم. می خواستم اگه کسی نظر خوبی داده بذارم براتون که بخونید ولی مطلب خوبی پیدا نکردم. خیلی از مطالبی که پیدا کردم هم توش افراد تازه کار یا نا آشنا نظر داده بودن. من توی این تاپیک سعی میکنم آب پاکی رو روی دستتون بریزم.

    اول از همه بهتون بگم که این شما هستید که قدرت برنامه نویسی رو نشون میدید وگرنه همه شون زبان هستن و این هنر و ذوق و ابتکار شما هستش که قدرت کدنویسی رو نشون میده. شما ممکنه یه کدنویس C ببینید که از یه کدنویس C++ بهتر برنامه نویسی میکنه. تعجب نکنید. بله، همچین چیزی وجود داره. چون توان و تسلط برنامه نویس خیلی مهمه. ولی یه سوال وجود داره. آیا واقعا فرقی نداره که C یاد بگیریم یا C++؟
    ببنید تقریبا هرجا که C هست، C++ هم هست و بلعکس. خصوصا توی دنیای امبدد. ولی C++ امکانات بیشتری داره. تقریبا میشه گفت که هر چی C داره، C++ هم داره و OOP (شی گرائی) هم بهش اضافه شده( البته یه مقدار اون قسمت های C در C++ تغییر هم کرده). اگه پیج ویکی پدیا رو بخونید نوشته:

    ...ویژگی*های برنامه نویسی شی گرا، پیچیدگی کم، هزینه کم، امکان گسترش سریع برنامه با خطای کمتر نسبت به سایر پارادایم*های برنامه نویسی است.
    مسئله ای که وجود داشت این بود که روزی که کامپیوترها و زبان ها بوجود اومدن و یه سری کارها رو ساده کردن، نیاز ها و خواسته ها کوچیک بود. با گذشت زمان، روز به روز انتظار از این کامپیوتر ها و زبان ها بیشتر میشد. کامپیوترها قوی تر و با حافظه بیشتر تولید میشد تا نیاز ها رو برآورده کنه. خب برنامه ها هم باید بزرگتر میشد تا نیازهای بیشتری رو برآورده کنه. دانشمندان و محققانی که کنار کدنویس ها بودن متوجه شدن که این زبان های ساده که شی گرائی نداره(مثلا C) برای برنامه های بزرگتر مناسب نیستن. در واقع با بزرگ شدن برنامه ها که با این زبان ها نوشته شده بودن، پیچیدگی زیاد میشد و هزینه های زیادی خصوصا از لحاظ وقت می گرفت. اینا میان شی گرائی رو ایجاد میکنن. اینکه شی گرائی چطور کدنویسی رو ساده میکنه و هزینه ها رو کم میکنه بماند. بعدا اگه درگیرش شدید خودتون میفهمید. من برای شما که آشنایی ندارید هر چقدر بگم بازم متوجه نمیشید.
    پس تا اینجا هر دو زبان خوب هستن ولی C++ امکانات بیشتری داره و کار شما رو خصوصا در پروژه های بزرگتر ساده تر میکنه و بهتره بگم کمکتون میکنه. البته یه چیزی بگم، نحوه کدنویسی شی گرائی با پارادایم های دیگه متفاوته و برنامه ای که با C می نویسید(با پارادایم رویه ای)، اگه بخوایید با شی گرائی C++ بنویسید متفاوته. البته همون برنامه رو در C++ بدون شی گرائی هم می تونید شبیه C بنویسید. ولی استفاده از شی گرائی یه ویژگی هستش که استفاده ازش همون طور که گفته شد مفیده.
    خب الان که مقداری با C و C++ آشنا شدید و متوجه شدید که چه کم و کاستی هایی دارن بریم سراغ وضعیت فعلی دنیای امبدد. یعنی جایی که شما باید توش کار کنید و پول در بیارید.
    اگه بخوام در مورد وضعیت فعلی دنیای امبدد توضیح بدم، در یک کلمه میگم که واقعا بزرگ شده و داره توسعه پیدا میکنه و هر روز هم نیاز و خواست مشتری ها داره بیشتر میشه. میکروها قوی تر میشن و حافظه ها شون بیشتر میشه و مینی کامپیوتر ها هم به این قضیه اضافه شده. (مثلا اگه میخوایید یه نمونه رو ببینید، برید روند تولید میکروهای با هسته آرم شرکت های ST و یا تگزاس یا NXP رو توی سایتشون ببینید) این یعنی پیچیدگی بیشتر برنامه ها و کدنویسی سنگین. یکی از دوستان میگفت که این روزها نوشتن شصت هزار خط کد بصورت میانگین یه امر ساده در دنیای امبدد و کامپیوتر شده. خب، فکرش رو بکنید که بخوایید این حجم از کدنویسی رو با C انجام بدید. چرا با C++ ننویسید؟ در حالی که شی گرائی هم داره و برای این کار بسیار مناسب هستش. من با چند کدنویس و برنامه نویس حرفه ای C که صحبت کردم متوجه شدم که دارن C++ رو یاد میگیرن. خب انتخاب و راه درستی هستش. چرا این کار رو نکنن. من خودم جزو اون افراد هستم که دارم این کار رو میکنم. دلایلش هم معلومه. بالا گفتم. شما چه برنامه های کوچیک و چه برنامه های بزرگ رو با شی گرائی می تونید بنویسید. شرکت ها هم که استخدام میکنن اگه از شما بخوان که با C براشون کدنویسی کنید، بدون مشکل می تونید براشون بنویسید و اگه یه شرکتی هم ازتون بخواد با شی گرائی C++ بنویسید بازم می تونید. در واقع شما هر دو رو بلد هستید. حتی می تونید از کدهای C در کدهای C++ هم استفاده کنید. می تونید مخلوطشون کنید. تفاوت ها رو هم می تونید با بررسی استانداردهای هر دو زبان متوجه بشید و برای کدنویسی ازشون استفاده کنید.

    پس اگه از من بپرسید که کدوم رو انتخاب کنید، من میگم C++

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

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

    در هر صورت، در آخر این تاپیک باید بگم که انتخاب با شما هستش ولی با این تفاسیر و وضعیت فعلی باز هم توصیه میکنم که بچسبید به C++
    جدیدترین ویرایش توسط روح الامین; ۱۹:۵۹ ۱۳۹۶/۱۱/۱۳.

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

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

    دوستان یادتون باشه که هر کسی رو بعنوان کارشناس یک موضوع نپذیرید و حرفش رو قبول نکنید. خصوصا تو کشور ما و در مورد کدنویسی که کدنویس خوب و با تجربه زیاد نداریم.
    سلام دوست عزیز
    ببینید من الان بالغ بر ۱۵ ساله که دارم برنامه نویسی میکنم
    برنامه نویسی حرفه ای رو هم که ازش پول در می آوردم از سال ۸۹ شروع کردم یعنی ۷ ساله حرفه ای سی و سی پلاس پلاس کارم

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

    به عنوان یک نمونه عملی بحوام عرض کنم من الگوریتم های رمز نگاری رو خیلی با سی و سی پلاس پلاس پیاده سازی میکنم. وقتی یک الگوریتم رمزنگاری که با سی نوشته شده رو میدیم به کامپایلر سی پلاس پلاس تا همون کد رو کامپایل کنه یه چیزی حول و حوش دو تا سه برابر حجم آبجکت کدش میشه و همین مقدار هم به نظر زمانی افت داره
    بنابراین میشه واقعا ادعا کرد که سی خیلی سریعتر از سی پلاس پلاس هستش. ولی این سرعت بالاتر با یک هزینه همراهه و اون هم اینه که خود خدابیامرز ریچی هم اعتقاد داشت با سی نمیشه پروژه های بزرگ انجام داد فقط برای کارهای کوچیک و ماژول های ساده خوبه. تو کار پیشرفته چون namespace نداره تابع overload رو نمیشناسه و Object Oriented نیست عملا نمیشه باهاش کارهای بزرگ انجام داد

    دیدگاه


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

      نوشته اصلی توسط hamidreza.nayeri نمایش پست ها
      سلام دوست عزیز
      ببینید من الان بالغ بر ۱۵ ساله که دارم برنامه نویسی میکنم
      برنامه نویسی حرفه ای رو هم که ازش پول در می آوردم از سال ۸۹ شروع کردم یعنی ۷ ساله حرفه ای سی و سی پلاس پلاس کارم

      این حرفی که زده میشه متاسفانه حقیقت داره و چیزی نیست که بگیم از روی بی اطلاعی و چه بوده. آبجکت فایلی که سی درست میکنه تقریبا یک دوم و شاید حتی یک سوم آبجکت فایلیه که سی پلاس پلاس از همون برنامه درست میکنه.
      بنابراین واقعا میشه ادعا کرد که کد سی پلاس پلاس هم حجم بالاتری رو میگیره و هم سرعتش پایین تره...
      سلام آقای نییری(فامیلی تون رو درست نوشتم؟)
      من فکر کنم شما رو بشناسم. شما هم مثل من قدیمی هستید. فکر کنم قبلا شما رو توی ECA دیدم. شایدم اشتباه میکنم. من این فامیلی رو احساس میکنم خیلی شنیدم. اگه همون کاربر قدیمی هستید باید بگم که از ملاقات دوباره شما خوشبختم.
      آقای نییری من شما رو نمی شناسم زیاد ولی چند تا سوال ازتون می پرسم، جسارتا.
      اول اینکه شما مطمئن هستید که با کامپایلری که کار میکنید آشنایی کامل دارید؟
      کامپایلر شما قدیمی نیست؟ چقدر از قدرت کامپایلرتون مطمئن هستید؟

      آقای نییری به نظرم تو گفتن این موضوع خیلی احتیاط کنید. من خودم هر حرفی رو به راحتی قبول نمیکنم. این حرفی که زدم رو اگه قبول دارم بخاطر این هستش که از افراد درجه یک توی کدنویسی پرسیدم و خودم هم به چشم دیدم. داشتم می چرخیدم تا چندتا از سایت های قدیمی که قبلا دیدم رو براتون بذارم. مثلا این صفحه رو ببینید:


      After programming for a while in C, I decided to finally start to learn C++. This is sort of bothering me, as the standard 'hello world' in C is usually ~16KB, including all of the crud your compiler


      سوال کننده گفته معمولا کدهای hello world که میسازه حدودا 16کیلوبایت حجم داره و همین کد با C++ میشه 470کیلو. کاربرها براش توضیح دادن که چرا اینطوری میشه. یه کاربری با عنوان کاربری جری کوفین(فرد تقرییا قابل اعتمادی هستش برای استناد) توی این پست گفته که همین برنامه رو با فلگ های متفاوت در MS VC++ کامپایل کرده که از ~8K تا ~110K حجمی بوده که گرفته.

      After programming for a while in C, I decided to finally start to learn C++. This is sort of bothering me, as the standard 'hello world' in C is usually ~16KB, including all of the crud your compiler


      یعنی از میانگین C هم حتی کمتر گرفته!(8کیلو کجا و 16کیلو کجا) من خودم با کیل که کد می نویسم و با سطوح متفاوت کامپایل میکنم واقعا گاهی وقتا کامپایلر اینقدر دستکاری میکنه که حتی برنامه کار نمیکنه گاهی وقتا و دوباره باید خودم به کامپایلر بفهمونم که کجا رو دست نزنه یا یه روش دیگه استفاده کنم. من الان یه مقدار وقتم گرفته هستش و کامپایلر ندارم روی سیستمم وگرنه نشونتون میدادم. من دفترچه کامپایلرم رو تا حدودی خوندم. حتی ورژن کامپایلرها هم در برخی موارد برای کامپایل کردن فرق میکنن. تو اون لینک هم گفته. دیگه چه رسد به کامپایلرهای متفاوت.

      شما خودت می تونی یه نمونه کد بذاری و نشونمون بدی؟ با مدهای مختلف تست کنین و بذارید. شاید من و شما نتیجه خوبی بگیریم. فقط قبلش من رو مطمئن کنید که تسلط کافی روی کامپایلرتون دارید.

      دیدگاه


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

        نوشته اصلی توسط روح الامین نمایش پست ها
        سلام آقای نییری(فامیلی تون رو درست نوشتم؟)
        من فکر کنم شما رو بشناسم. شما هم مثل من قدیمی هستید. فکر کنم قبلا شما رو توی ECA دیدم. شایدم اشتباه میکنم. من این فامیلی رو احساس میکنم خیلی شنیدم. اگه همون کاربر قدیمی هستید باید بگم که از ملاقات دوباره شما خوشبختم.
        آقای نییری من شما رو نمی شناسم زیاد ولی چند تا سوال ازتون می پرسم، جسارتا.
        اول اینکه شما مطمئن هستید که با کامپایلری که کار میکنید آشنایی کامل دارید؟
        کامپایلر شما قدیمی نیست؟ چقدر از قدرت کامپایلرتون مطمئن هستید؟

        آقای نییری به نظرم تو گفتن این موضوع خیلی احتیاط کنید. من خودم هر حرفی رو به راحتی قبول نمیکنم. این حرفی که زدم رو اگه قبول دارم بخاطر این هستش که از افراد درجه یک توی کدنویسی پرسیدم و خودم هم به چشم دیدم. داشتم می چرخیدم تا چندتا از سایت های قدیمی که قبلا دیدم رو براتون بذارم. مثلا این صفحه رو ببینید:


        After programming for a while in C, I decided to finally start to learn C++. This is sort of bothering me, as the standard 'hello world' in C is usually ~16KB, including all of the crud your compiler


        سوال کننده گفته معمولا کدهای hello world که میسازه حدودا 16کیلوبایت حجم داره و همین کد با C++ میشه 470کیلو. کاربرها براش توضیح دادن که چرا اینطوری میشه. یه کاربری با عنوان کاربری جری کوفین(فرد تقرییا قابل اعتمادی هستش برای استناد) توی این پست گفته که همین برنامه رو با فلگ های متفاوت در MS VC++ کامپایل کرده که از ~8K تا ~110K حجمی بوده که گرفته.

        After programming for a while in C, I decided to finally start to learn C++. This is sort of bothering me, as the standard 'hello world' in C is usually ~16KB, including all of the crud your compiler


        یعنی از میانگین C هم حتی کمتر گرفته!(8کیلو کجا و 16کیلو کجا) من خودم با کیل که کد می نویسم و با سطوح متفاوت کامپایل میکنم واقعا گاهی وقتا کامپایلر اینقدر دستکاری میکنه که حتی برنامه کار نمیکنه گاهی وقتا و دوباره باید خودم به کامپایلر بفهمونم که کجا رو دست نزنه یا یه روش دیگه استفاده کنم. من الان یه مقدار وقتم گرفته هستش و کامپایلر ندارم روی سیستمم وگرنه نشونتون میدادم. من دفترچه کامپایلرم رو تا حدودی خوندم. حتی ورژن کامپایلرها هم در برخی موارد برای کامپایل کردن فرق میکنن. تو اون لینک هم گفته. دیگه چه رسد به کامپایلرهای متفاوت.

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

        ببین دوست عزیز من کامپایلرم رو میشناسم حالا اگر نگم خوب ولی بلدم کانفیگش کنم.من از کامپایلر gcc استفاده میکنم که یکی از خوش دست ترین و بهترین کامپایلر هایی است که برای سی و سی پلاس پلاس نوشته شده.
        اون موضوع کنار گذاشتن سیمبل ها رو بنده خیلی وقته دارم ازش استفاده میکنم. میتونم بگم بنده برنامه helloworld رو با gcc کامپایل کردم و من ۶ کیلوبایت تحویل گرفتم یعنی حدود همون C++ ولی دوست عزیز این برنامه معیار نیست چون هیچ فانکشنالیتی بخصوصی نداره
        اگر درست کامپایل بشه با فلگ های مناسب کامپایلر هم سی و هم سی پلاس پلاس باید یه حجم بدن تو این برنامه. ولی در دنیای واقعی برنامه ها واقعا فرق دارن با هم یک سری فانکشنالیتی هایی استفاده میشه ازشون که اونجا دیگه این مطلب صادق نیست و حجم آبجکت کد واقعا عوض میشه.
        من برای مثال بحث رمز نگاری رو خدمت تون عرض کردم دیگه. ببینید سی در واقعیت یه مقداری سطح پایین تر از سی پلاس پلاس هستش. شما امکاناتی تو سی دارید که توی سی پلاس پلاس ندارید مثلا امکان ست یا ریست کردن یک بیت در یک بایت توی سی وجود داره ولی من توی سی پلاس پلاس ندیدم. نمیگم نیست بلکه میگم من ندیدم

        علی ای حال من فقط تجربه شخصیم رو نوشتم. اگر مطلب معتبر علمی در این خصوص دارید لطف کنید اشتراک بگذارید ما هم یه چیزی یاد بگیریم ضمنا به stackoverflow و امثال این سایت ها بهتره خیلی ریفر ندید اینا غالبا برنامه نویس کم تجربه ان و خودشون هم خیلی چیزها رو بلد نیستن. یه مقدار هم فاشیستن کافیه باهاشون یه ذره کل کل کنی میذارنت کنار از سایت کلا.

        دیدگاه


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

          نوشته اصلی توسط hamidreza.nayeri نمایش پست ها
          من خیلی ساله تو این انجمن عضوم ولی یه چند سالی بود دیگه نمیومدم
          الان هم به نظرم میرسه بچه ها خیلی بی انگیزه شدن. قدیم من یادمه وقتی که میومدیم جواب بدیم تو حین نوشتن پاسخ دو سه نفری جواب میدادن الان متاسفانه هر سوالی یکی دو روز طول میکشه تا یه جواب اولیه بهش داده بشه...
          بله، همین طور بود. منم یادمه. اصلا بچه ها فعال بودن نه فقط کاربر.
          نوشته اصلی توسط hamidreza.nayeri نمایش پست ها
          ...ببین دوست عزیز من کامپایلرم رو میشناسم حالا اگر نگم خوب ولی بلدم کانفیگش کنم.من از کامپایلر gcc استفاده میکنم که یکی از خوش دست ترین و بهترین کامپایلر هایی است که برای سی و سی پلاس پلاس نوشته شده.
          اون موضوع کنار گذاشتن سیمبل ها رو بنده خیلی وقته دارم ازش استفاده میکنم. میتونم بگم بنده برنامه helloworld رو با gcc کامپایل کردم و من ۶ کیلوبایت تحویل گرفتم یعنی حدود همون C++ ولی دوست عزیز این برنامه معیار نیست چون هیچ فانکشنالیتی بخصوصی نداره
          اگر درست کامپایل بشه با فلگ های مناسب کامپایلر هم سی و هم سی پلاس پلاس باید یه حجم بدن تو این برنامه. ولی در دنیای واقعی برنامه ها واقعا فرق دارن با هم یک سری فانکشنالیتی هایی استفاده میشه ازشون که اونجا دیگه این مطلب صادق نیست و حجم آبجکت کد واقعا عوض میشه.
          من برای مثال بحث رمز نگاری رو خدمت تون عرض کردم دیگه. ببینید سی در واقعیت یه مقداری سطح پایین تر از سی پلاس پلاس هستش...
          بنده جرات نمیکنم بگم که کامپایلرم خوش دست هستش یا یکی از بهترین ها هستش چون بقیه رو امتحان نکردم(همه شون).
          بله، Hello world معیار نمیشه. حتی بقیه شون هم به این راحتی معیار نمیشه. بحث فانکشنالیتی نیست. اصلا ممکنه با پارادایم شی گرایی طور دیگه ای کامپایل کنه و با پارادایم رویه ای هم یه طور دیگه. یه جا ممکنه C++ کمتر بشه و جای دیگه با C
          به همین دلیل هستش که من هم به این راحتی حرف شما رو قبول نمیکنم. تا به اینجا هر چی من گذاشتم رو به خودم تحویل دادید و ثابت نکردید. جسارتا فقط حرف های عجیب زدید.

          نوشته اصلی توسط hamidreza.nayeri نمایش پست ها
          ...شما امکاناتی تو سی دارید که توی سی پلاس پلاس ندارید مثلا امکان ست یا ریست کردن یک بیت در یک بایت توی سی وجود داره ولی من توی سی پلاس پلاس ندیدم. نمیگم نیست بلکه میگم من ندیدم...
          هیچ مشکلی در کار با بیت ها در C++ وجود نداره. چه برای یه بایت و چه بقیه. شما کدوم ست یا ریست کردن توی C منظورتون هستش که توی C++ ندیدین؟
          هر چند که دوباره میگم هیچ مشکلی وجود نداره.

          نوشته اصلی توسط hamidreza.nayeri نمایش پست ها
          ...علی ای حال من فقط تجربه شخصیم رو نوشتم. اگر مطلب معتبر علمی در این خصوص دارید لطف کنید اشتراک بگذارید ما هم یه چیزی یاد بگیریم ضمنا به stackoverflow و امثال این سایت ها بهتره خیلی ریفر ندید اینا غالبا برنامه نویس کم تجربه ان و خودشون هم خیلی چیزها رو بلد نیستن. یه مقدار هم فاشیستن کافیه باهاشون یه ذره کل کل کنی میذارنت کنار از سایت کلا.
          من میگم هیچ کسی ثابت نکرده. هر کسی هم چیزی گفته در حد حرف بوده.
          سایت استک بسیار سایت خوب و معتبری هستش. هیچ چیزی به صورت مطلق خوب نیست ولی این استک فوق العاده عالی هستش. خصوصا تو کدنویسی
          برای پرسش و پاسخ بهترین هستش. برنامه نویس های عالی توش هستن. اصلا تعجب میکنم که این حرف رو میزنید. من با کارمندهای گوگل هم توش صحبت کردم. حقیقتا با سواد بودن. معمولا ایرانی ها زیاد توی این سایت ها دوام نمی یارن چون با این محیط ها و فرهنگ غرب آشنایی ندارن. به موقعش باید تند شد و به موقعش باید آروم و مودب بود.
          اگه شما رو بن(ban) کردن که نباید ناراحت بشید. من سالهاست که توش حضور دارم. واقعا عالیه.

          دیدگاه


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

            دوستان عزیز ، منهم میخواستم نظرم رو در این مورد بگم

            اینکه گفته میشه برنامه سی پلاس پلاس حجم بیشتری داره ، البته درسته
            در شی گرایی ما جدول توابع مجازی داریم ، قبل از احضار تابع باید
            عملیاتی انجام بشه تا مشخص بشه کدوم تابع باید اجرا بشه

            کلا ، سی پلاس پلاس سرباره بیشتری داره و حجم فایل اجرایی بیشتره
            ولی این لزوما به این معنی نیست که همواره سرعت برنامه سی پلاس پلاس
            کمتر از برنامه سی هستش

            اگه ما یه تابع در سی پلاس پلاس بنویسیم که تابع معمولی باشه و نه تابع مجازی
            و توش هم عملیات ریاضی و فراخوانی توابع معمولی باشه ، دلیلی نمیبینم که کمپایلر
            سی پلاس پلاس ، حجم کد بیشتری برای آن ایجاد کند !

            تا موقعی که توابع ما در حد زبان سی باشند و از مفاهیم شی گراییی در آنها
            استفاده نشده باشد، عینا مثل یک تابع سی معمولی کمپایل و اجرا خواهند شد

            مثلا میخوام بگم اگه شما دو تا متغیر صحیح را با هم جمع کنید
            آیا مترجم سی پلاس پلاس ، آن را به اسمبلی حجیم تری ترجمه میکند ؟
            آیا یک فراخوانی به تابع غیر مجازی ، کد بیشتری در سی پلاس پلاس تولید میکند ؟

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

            دیدگاه


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

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


              اما برگردیم به موضوع نخ خودمون. ببینید من برای نمونه یک تابع رو که اصلا مفاهیم حتی سی پلاس پلاس هم توش نداشت و به زبان سی نوشته شده بود رو با کامپایلر gcc کامپایل کردم. این کامپایلر قابلیت این رو داره که هم برای سی کامپایل کنه هم برای سی پلاس پلاس.
              من با همین کامپایلر و با فلگ های مروبط به سیمبل ها و اپتیمایزیشن یکسان، هم برای سی کامپایل کردم هم برای سی پلاس پلاس. اینی که دارم بهتون میگم تجربه است میتونید نپذیرید ولی من با تجربه دیدم که کدی که برای سی ایجاد شد هم حجمش کمتر بود (حدودا یک سوم) هم سرعت اجراش خیلی بیشتر بود.

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

              به عنوان یک نمونه عملی.
              من تابع md4 رو با فلگ های یکسان و شرایط مشابه کامپایل کردم این هم یک نتیجه عملی

              کد:
              -rw-rw-r-- 1 hamid hamid 4112 Feb  4 17:08 md4.c.o
              -rw-rw-r-- 1 hamid hamid 4176 Feb  4 17:10 md4.cpp.o

              همون طوری که میبینید حجم آبجکت کد سی حدودا ۶۴ بایت کمتر از آبجکت کد سی پلاس پلاس شده.
              ببینید من هم نمیگم این موضوع به صورت علمی چیزی رو اثبات میکنه فقط میخوام بگم اگر برنامه نویس ها میان و این حرف رو میزنن برای این هست که در تجربه عملی خودشون به یک همچین چیزهایی برحورده اند که میگن رو هوا که حرف نمیزنن
              این تجربه عملی جواب به این دوستمون هم هست چون این تابع در اصل برای زبان سی نوشته شده و هیچ شیئ گرایی هم توش نداشته
              نوشته اصلی توسط x935418 نمایش پست ها
              تا موقعی که توابع ما در حد زبان سی باشند و از مفاهیم شی گراییی در آنها
              استفاده نشده باشد، عینا مثل یک تابع سی معمولی کمپایل و اجرا خواهند شد
              تفاوت های سی و سی پلاس پلاس فقط در شیئ گرایی و اینها نیست. سی پلاس پلاس کلا جور دیگری کد رو هندل میکنه. علتش این است که امکانات اضافه ای داره که سی نداره لذا باید به شکل دیگری کد رو هندل کنه. از نحوه ورود به تابع main شما در نظر بگیرید تا نحوه terminate کردن نرم افزار و ....
              جدیدترین ویرایش توسط hamidreza.nayeri; ۱۷:۲۲ ۱۳۹۶/۱۱/۱۵.

              دیدگاه


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

                نوشته اصلی توسط hamidreza.nayeri نمایش پست ها
                همون طوری که میبینید حجم آبجکت کد سی حدودا ۶۴ بایت کمتر از آبجکت کد سی پلاس پلاس شده.
                جحم کل برنامه سی پلاس پلاس که مشخصه ، حتما بیشتر میشه

                شما که به gcc دسترسی دارید ، میتونید این ازمایشی که میگم رو انجام بدین:
                یک تابع خیلی ساده رو در نظر بگیرید ، ترجمه اسمبلی آن را در هر دو حالت نشان دهید
                مثلا تابع زیر را در نظر بگیرید:

                کد:
                int  x,y,z;
                void foo()
                {
                 x=5;
                 y=6;
                 z=x+y;
                }

                ترجمه اسمبلی این تابع (فقط این تابع) را در دو حالت سی و سی پلاس پلاس را برایمان بگذارید
                به نظر من هیچ فرقی نباید داشته باشند

                دیدگاه


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

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

                  در خصوص اون برنامه هم ببینید بنده عرض کردم تو برنامه های کوچیک خیلی تغییری حس نمیشه بیشتر وقتی که شما با برنامه های پیچیده طرف هستید این اتفاق می افته. ولو این که شیئ گرایی و ... هم نداشته باشه. اون برنامه کوچکی که شما نوشتید معلومه اسمبلی جفتش یکی در میاد. من برای اثبات حرفم آبجکت کد یک تابع پیچیده مثل md4 رو گذاشتم که فقط ۶۴ بایت اختلاف داشت ولی در هر حال اختلاف به وجود اومده یعنی نشون میده کامپایلر ها مثل هم کامپایل نمیکنند

                  با این فلگ ها هم کامپایل کردم
                  کد:
                  -Os -s
                  که تمامی نمادها رو بر میداره و کد رو برای حجم اپتیمایز میکنه اگر برای حجم اپتیمایز نشه سایزها میشن

                  کد:
                  -rw-rw-r-- 1 hamid hamid 4960 Feb  4 18:07 md4.c.o
                  -rw-rw-r-- 1 hamid hamid 5040 Feb  4 18:07 md4.cpp.o
                  همون طوری که میبینید واقعا کد اجرایی که توسط یک کامپایلر و برای دو زبان ایجاد شده کاملا با هم فرق داره. مطمئنا اگر اسمبلیش تولید بشه هم باز فرق میکنه چون آبجکت کد مخصوصا اگر سیمبل و امکانات دیباگینگ نداشته باشه همون کدی است که روی پردازنده اجرا میشه به عبارت دیگه اسمبل شده زبان اسمبلی است

                  و برای یک نمونه دیگه

                  کد:
                  -rw-rw-r-- 1 hamid hamid 31344 Feb  4 18:16 serpent.c.o
                  -rw-rw-r-- 1 hamid hamid 35896 Feb  4 18:27 serpent.cpp.o
                  ببینید این مربوط به یک تابع خیلی پیچیده تر به اسم Serpent هستش. میبینید که این دفعه یک چیزی حدود ۴ کیلوبایت تفاوت سایزشون هست. هر دو هم از یک فایل سی به وجود اومدن فقط زبان کامپایلشون با هم فرق داشته
                  ضمنا من فقط در مورد سایز قضاوت نمیکنم من این تابع رو مخصوصا ازش بنچ مارک هم گرفتم واقعا آبجکت کدی که با سی کامپایل شده بود به مراتب سریع تر از آبجکت کد سی پلاس پلاس اجرا میشد. این رو نمیشه منکر شد که برنامه هایی که با سی نوشته میشن بنا به دلایلی سریع تر از برنامه های سی پلاس پلاس اجرا میشن.

                  این قسمت هم جداول مربوط به نماد توابع هر دو آبجکت فایل هست

                  کد:
                  [hamid@localhost test]$ nm serpent.c.o 
                  0000000000001f2e T blockDecrypt
                  0000000000001ed3 T blockEncrypt
                                   U __isoc99_sscanf
                  0000000000000000 T makekey
                  0000000000006d10 T serpent_convert_from_string
                  0000000000006f3a T serpent_convert_to_string
                  0000000000004581 T serpent_decrypt
                  0000000000001f89 T serpent_encrypt
                                   U sprintf
                                   U strcat
                                   U strlen
                                   U strncpy
                  
                  [hamid@localhost test]$ nm serpent.cpp.o 
                                   U sprintf
                                   U sscanf
                  0000000000001fdf T _Z12blockDecryptP11keyInstancePhiS1_
                  0000000000001f89 T _Z12blockEncryptP11keyInstancePhiS1_
                  0000000000004f76 T _Z15serpent_decryptPjS_PA4_j
                  0000000000002035 T _Z15serpent_encryptPjS_PA4_j
                  0000000000008084 T _Z25serpent_convert_to_stringiPjPc
                  0000000000007e61 T _Z27serpent_convert_from_stringiPcPj
                                   U _Z6strcatPcS_
                                   U _Z6strlenPKc
                  0000000000000000 T _Z7makekeyP11keyInstanceiPc
                                   U _Z7strncpyPcPKcj
                  ببینید همون طور که میبینید توابع سی پلاس پلاس حجم بیشتری میگیره نوشتن اسمشون داخل فایل ولی این اختلاف به ۴ کیلو بایت واقعا نمیرسه
                  این نشون میده خود کد اجراییش بیشتره
                  جدیدترین ویرایش توسط hamidreza.nayeri; ۱۸:۴۳ ۱۳۹۶/۱۱/۱۵.

                  دیدگاه


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

                    [MENTION=66896]hamidreza.nayeri[/MENTION]
                    [MENTION=198194]x935418[/MENTION]

                    نه! یه جای کار میلنگه! آقای نیری این کامپایلر شما داره یه رفتاری از خودش نشون میده که قابل قبول نیست. من بعدا codelite رو نصب میکنم و یه کامپایلر هم کنارش نصب میکنم. باید خودم دوباره بررسی کنم. خصوصا اینکه میگید یه کد مشابه برای C و C++ حجم های متفاوتی داره.

                    دیدگاه


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

                      نوشته اصلی توسط روح الامین نمایش پست ها
                      @hamidreza.nayeri
                      @x935418

                      نه! یه جای کار میلنگه! آقای نیری این کامپایلر شما داره یه رفتاری از خودش نشون میده که قابل قبول نیست. من بعدا codelite رو نصب میکنم و یه کامپایلر هم کنارش نصب میکنم. باید خودم دوباره بررسی کنم. خصوصا اینکه میگید یه کد مشابه برای C و C++ حجم های متفاوتی داره.
                      خیلی هم خوبه. شما هم آزمایش کنید ببینید نتیجه چی میگیرید
                      همین کد md4 و serpent رو که تست بنچ من بود رو از اینترنت دانلود کنید و باهاش کار کنید که بتونیم نتایج رو درست با هم مقایسه کنیم

                      دیدگاه


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

                        نوشته اصلی توسط hamidreza.nayeri نمایش پست ها
                        خیلی هم خوبه. شما هم آزمایش کنید ببینید نتیجه چی میگیرید
                        همین کد md4 و serpent رو که تست بنچ من بود رو از اینترنت دانلود کنید و باهاش کار کنید که بتونیم نتایج رو درست با هم مقایسه کنیم
                        سلام
                        ببخشید دیر شد. (مشغله زیاده، مسافرت هم رفتم)
                        من
                        Codelite رو گرفتم(ورژن 11) و TDM-GCC رو نصب کردم(ورژن 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++ کامپایل کردم.


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

                        نظرتون چیه؟

                        دیدگاه


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

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


                          سلام
                          ببخشید دیر شد. (مشغله زیاده، مسافرت هم رفتم)
                          من
                          Codelite رو گرفتم(ورژن 11) و TDM-GCC رو نصب کردم(ورژن 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; ۱۱:۴۲ ۱۳۹۶/۱۱/۲۰.

                          دیدگاه


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

                            [MENTION=66896]hamidreza.nayeri[/MENTION]

                            سلام
                            خواهش میکنم. مهندس زیاد ایراد نگیر ازم چون بخدا هم وقتم کمه و هم سعی میکنم حتما به سوال ها و درخواست هام تا جای ممکن جواب بدم. به محض نصب کامپایلر و 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
                            با

                            Diffchecker will compare text to find the difference between two text files. Just paste your files and click Find Difference!


                            راحتتر می تونید دو فایل رو بررسی کنید.

                            دیدگاه


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

                              نوشته اصلی توسط روح الامین نمایش پست ها
                              @hamidreza.nayeri

                              سلام
                              خواهش میکنم. مهندس زیاد ایراد نگیر ازم چون بخدا هم وقتم کمه و هم سعی میکنم حتما به سوال ها و درخواست هام تا جای ممکن جواب بدم. به محض نصب کامپایلر و 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
                              با

                              Diffchecker will compare text to find the difference between two text files. Just paste your files and click Find Difference!


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

                              دیدگاه

                              لطفا صبر کنید...
                              X