Uploaded February 2021 | Updated September 2026, 2 weeks ago
Support What's a Creel? on Patreon: patreon.com/whatsacreel
Office merch store: whats-a-creel-3.creator-spring.com
FaceBook: facebook.com/whatsacreel
In this video we’ll look at some of the most complex instructions available in x86/64 Assembly language.
I have checked against the manuals from Intel and AMD and results from hardware, but it is almost impossible to create a video without any mistakes. Please test the instructions yourself before you apply them in code.
Happy programming :)
References/Sources:
W. A. Mozart, Rondo from “Eine Kleine Nachtmusik”, Vienna Philharmonic, conducted by Bruno Walter: publicdomain4u.com/wolfgang-amadeus-mozart-eine-kleine-nachtmusik-classical-instrumental-music-mp3-download
Instruction timings: agner.org/optimize/#manuals
AMD programmer’s manuals: developer.amd.com/resources/developer-guides-manuals
Intel programmer’s manuals: software.intel.com/content/www/us/en/develop/articles/intel-sdm.html
Jim Morrison image from Wikipedia: en.wikipedia.org/wiki/Jim_Morrison
RDSEED object is based on “The Object” from Led Zeppelin’s Presence album.
Background images from animations from HDRI Haven: hdrihaven.com
Software used to make this vid:
Visual Studio 2019 Community: visualstudio.com/downloads
Blender: blender.org
Audacity: audacityteam.org
Davinci Resolve 16: blackmagicdesign.com/products/davinciresolve
OpenOffice: openoffice.org
Gimp: gimp.org
Support What's a Creel? on Patreon: patreon.com/whatsacreel
Office merch store: whats-a-creel-3.creator-spring.com
FaceBook: facebook.com/whatsacreel
In this video we’ll look at some of the most complex instructions available in x86/64 Assembly language.
I have checked against the manuals from Intel and AMD and results from hardware, but it is almost impossible to create a video without any mistakes. Please test the instructions yourself before you apply them in code.
Happy programming :)
References/Sources:
W. A. Mozart, Rondo from “Eine Kleine Nachtmusik”, Vienna Philharmonic, conducted by Bruno Walter: publicdomain4u.com/wolfgang-amadeus-mozart-eine-kleine-nachtmusik-classical-instrumental-music-mp3-download
Instruction timings: agner.org/optimize/#manuals
AMD programmer’s manuals: developer.amd.com/resources/developer-guides-manuals
Intel programmer’s manuals: software.intel.com/content/www/us/en/develop/articles/intel-sdm.html
Jim Morrison image from Wikipedia: en.wikipedia.org/wiki/Jim_Morrison
RDSEED object is based on “The Object” from Led Zeppelin’s Presence album.
Background images from animations from HDRI Haven: hdrihaven.com
Software used to make this vid:
Visual Studio 2019 Community: visualstudio.com/downloads
Blender: blender.org
Audacity: audacityteam.org
Davinci Resolve 16: blackmagicdesign.com/products/davinciresolve
OpenOffice: openoffice.org
Gimp: gimp.org









![AES Encryption 4: Matrix Multiplication
This is a short vid which shows the code for the matrix multiplication for the MixColumns step. I initially intended to make this vid and the previous AES one around the same length, but we actually covered almost everything in the previous vid!
Mix Columns Wikipedia Page:
https://en.wikipedia.org/wiki/Rijndael_mix_columns
Code for dot products:
tmp[0] = (unsigned char)(mul2[state[0]] ^ mul3[state[1]] ^ state[2] ^ state[3]);
tmp[1] = (unsigned char)(state[0] ^ mul2[state[1]] ^ mul3[state[2]] ^ state[3]);
tmp[2] = (unsigned char)(state[0] ^ state[1] ^ mul2[state[2]] ^ mul3[state[3]]);
tmp[3] = (unsigned char)(mul3[state[0]] ^ state[1] ^ state[2] ^ mul2[state[3]]);
tmp[4] = (unsigned char)(mul2[state[4]] ^ mul3[state[5]] ^ state[6] ^ state[7]);
tmp[5] = (unsigned char)(state[4] ^ mul2[state[5]] ^ mul3[state[6]] ^ state[7]);
tmp[6] = (unsigned char)(state[4] ^ state[5] ^ mul2[state[6]] ^ mul3[state[7]]);
tmp[7] = (unsigned char)(mul3[state[4]] ^ state[5] ^ state[6] ^ mul2[state[7]]);
tmp[8] = (unsigned char)(mul2[state[8]] ^ mul3[state[9]] ^ state[10] ^ state[11]);
tmp[9] = (unsigned char)(state[8] ^ mul2[state[9]] ^ mul3[state[10]] ^ state[11]);
tmp[10] = (unsigned char)(state[8] ^ state[9] ^ mul2[state[10]] ^ mul3[state[11]]);
tmp[11] = (unsigned char)(mul3[state[8]] ^ state[9] ^ state[10] ^ mul2[state[11]]);
tmp[12] = (unsigned char)(mul2[state[12]] ^ mul3[state[13]] ^ state[14] ^ state[15]);
tmp[13] = (unsigned char)(state[12] ^ mul2[state[13]] ^ mul3[state[14]] ^ state[15]);
tmp[14] = (unsigned char)(state[12] ^ state[13] ^ mul2[state[14]] ^ mul3[state[15]]);
tmp[15] = (unsigned char)(mul3[state[12]] ^ state[13] ^ state[14] ^ mul2[state[15]]);
Music Channel:
Sober:
https://youtu.be/Y2LCg3cGu7U
Gold Digger:
https://youtu.be/wAoXB8tg0co
Become a patron and support Whats a Creel programming vids on Patreon:
www.patreon.com/whatsacreel
FaceBook:
www.facebook.com/pages/WhatsaCreel/167732956665435 AES Encryption 4: Matrix Multiplication](https://i.ytimg.com/vi/bERjYzLqAfw/mqdefault.jpg)
