Inside Bitcoin
Opening the selected file…
Inside Bitcoin
Opening the selected file…
The code behind the network, with room to understand it.
Release published 2026-10-28 · Snapshot fetched 2026-11-01. Latest stable release at fetch time; development branches and Git history are excluded. Only the selected code window and visible folders load here.
751TMP0B = vaddq_u32(MSG2B, TMP);752TMP2A = STATE0A;753TMP2B = STATE0B;754MSG2A = vsha256su0q_u32(MSG2A, MSG3A);755MSG2B = vsha256su0q_u32(MSG2B, MSG3B);756STATE0A = vsha256hq_u32(STATE0A, STATE1A, TMP0A);757STATE0B = vsha256hq_u32(STATE0B, STATE1B, TMP0B);758STATE1A = vsha256h2q_u32(STATE1A, TMP2A, TMP0A);759STATE1B = vsha256h2q_u32(STATE1B, TMP2B, TMP0B);760MSG2A = vsha256su1q_u32(MSG2A, MSG0A, MSG1A);761MSG2B = vsha256su1q_u32(MSG2B, MSG0B, MSG1B);763// Transform 3: Rounds 29-32764TMP = vld1q_u32(&K[28]);765TMP0A = vaddq_u32(MSG3A, TMP);766TMP0B = vaddq_u32(MSG3B, TMP);767TMP2A = STATE0A;768TMP2B = STATE0B;769MSG3A = vsha256su0q_u32(MSG3A, MSG0A);770MSG3B = vsha256su0q_u32(MSG3B, MSG0B);771STATE0A = vsha256hq_u32(STATE0A, STATE1A, TMP0A);772STATE0B = vsha256hq_u32(STATE0B, STATE1B, TMP0B);773STATE1A = vsha256h2q_u32(STATE1A, TMP2A, TMP0A);774STATE1B = vsha256h2q_u32(STATE1B, TMP2B, TMP0B);775MSG3A = vsha256su1q_u32(MSG3A, MSG1A, MSG2A);776MSG3B = vsha256su1q_u32(MSG3B, MSG1B, MSG2B);778// Transform 3: Rounds 33-36779TMP = vld1q_u32(&K[32]);780TMP0A = vaddq_u32(MSG0A, TMP);781TMP0B = vaddq_u32(MSG0B, TMP);782TMP2A = STATE0A;783TMP2B = STATE0B;784MSG0A = vsha256su0q_u32(MSG0A, MSG1A);785MSG0B = vsha256su0q_u32(MSG0B, MSG1B);786STATE0A = vsha256hq_u32(STATE0A, STATE1A, TMP0A);787STATE0B = vsha256hq_u32(STATE0B, STATE1B, TMP0B);788STATE1A = vsha256h2q_u32(STATE1A, TMP2A, TMP0A);789STATE1B = vsha256h2q_u32(STATE1B, TMP2B, TMP0B);790MSG0A = vsha256su1q_u32(MSG0A, MSG2A, MSG3A);791MSG0B = vsha256su1q_u32(MSG0B, MSG2B, MSG3B);793// Transform 3: Rounds 37-40794TMP = vld1q_u32(&K[36]);795TMP0A = vaddq_u32(MSG1A, TMP);796TMP0B = vaddq_u32(MSG1B, TMP);797TMP2A = STATE0A;798TMP2B = STATE0B;799MSG1A = vsha256su0q_u32(MSG1A, MSG2A);800MSG1B = vsha256su0q_u32(MSG1B, MSG2B);801STATE0A = vsha256hq_u32(STATE0A, STATE1A, TMP0A);802STATE0B = vsha256hq_u32(STATE0B, STATE1B, TMP0B);803STATE1A = vsha256h2q_u32(STATE1A, TMP2A, TMP0A);804STATE1B = vsha256h2q_u32(STATE1B, TMP2B, TMP0B);805MSG1A = vsha256su1q_u32(MSG1A, MSG3A, MSG0A);806MSG1B = vsha256su1q_u32(MSG1B, MSG3B, MSG0B);808// Transform 3: Rounds 41-44809TMP = vld1q_u32(&K[40]);810TMP0A = vaddq_u32(MSG2A, TMP);811TMP0B = vaddq_u32(MSG2B, TMP);812TMP2A = STATE0A;813TMP2B = STATE0B;814MSG2A = vsha256su0q_u32(MSG2A, MSG3A);815MSG2B = vsha256su0q_u32(MSG2B, MSG3B);816STATE0A = vsha256hq_u32(STATE0A, STATE1A, TMP0A);817STATE0B = vsha256hq_u32(STATE0B, STATE1B, TMP0B);818STATE1A = vsha256h2q_u32(STATE1A, TMP2A, TMP0A);819STATE1B = vsha256h2q_u32(STATE1B, TMP2B, TMP0B);820MSG2A = vsha256su1q_u32(MSG2A, MSG0A, MSG1A);821MSG2B = vsha256su1q_u32(MSG2B, MSG0B, MSG1B);823// Transform 3: Rounds 45-48824TMP = vld1q_u32(&K[44]);825TMP0A = vaddq_u32(MSG3A, TMP);826TMP0B = vaddq_u32(MSG3B, TMP);827TMP2A = STATE0A;828TMP2B = STATE0B;829MSG3A = vsha256su0q_u32(MSG3A, MSG0A);830MSG3B = vsha256su0q_u32(MSG3B, MSG0B);831STATE0A = vsha256hq_u32(STATE0A, STATE1A, TMP0A);832STATE0B = vsha256hq_u32(STATE0B, STATE1B, TMP0B);833STATE1A = vsha256h2q_u32(STATE1A, TMP2A, TMP0A);834STATE1B = vsha256h2q_u32(STATE1B, TMP2B, TMP0B);835MSG3A = vsha256su1q_u32(MSG3A, MSG1A, MSG2A);836MSG3B = vsha256su1q_u32(MSG3B, MSG1B, MSG2B);838// Transform 3: Rounds 49-52839TMP = vld1q_u32(&K[48]);840TMP0A = vaddq_u32(MSG0A, TMP);841TMP0B = vaddq_u32(MSG0B, TMP);842TMP2A = STATE0A;843TMP2B = STATE0B;844STATE0A = vsha256hq_u32(STATE0A, STATE1A, TMP0A);845STATE0B = vsha256hq_u32(STATE0B, STATE1B, TMP0B);846STATE1A = vsha256h2q_u32(STATE1A, TMP2A, TMP0A);847STATE1B = vsha256h2q_u32(STATE1B, TMP2B, TMP0B);849// Transform 3: Rounds 53-56850TMP = vld1q_u32(&K[52]);851TMP0A = vaddq_u32(MSG1A, TMP);852TMP0B = vaddq_u32(MSG1B, TMP);853TMP2A = STATE0A;854TMP2B = STATE0B;855STATE0A = vsha256hq_u32(STATE0A, STATE1A, TMP0A);856STATE0B = vsha256hq_u32(STATE0B, STATE1B, TMP0B);857STATE1A = vsha256h2q_u32(STATE1A, TMP2A, TMP0A);858STATE1B = vsha256h2q_u32(STATE1B, TMP2B, TMP0B);860// Transform 3: Rounds 57-60861TMP = vld1q_u32(&K[56]);862TMP0A = vaddq_u32(MSG2A, TMP);863TMP0B = vaddq_u32(MSG2B, TMP);864TMP2A = STATE0A;865TMP2B = STATE0B;866STATE0A = vsha256hq_u32(STATE0A, STATE1A, TMP0A);867STATE0B = vsha256hq_u32(STATE0B, STATE1B, TMP0B);868STATE1A = vsha256h2q_u32(STATE1A, TMP2A, TMP0A);869STATE1B = vsha256h2q_u32(STATE1B, TMP2B, TMP0B);871// Transform 3: Rounds 61-64872TMP = vld1q_u32(&K[60]);873TMP0A = vaddq_u32(MSG3A, TMP);874TMP0B = vaddq_u32(MSG3B, TMP);875TMP2A = STATE0A;876TMP2B = STATE0B;877STATE0A = vsha256hq_u32(STATE0A, STATE1A, TMP0A);878STATE0B = vsha256hq_u32(STATE0B, STATE1B, TMP0B);879STATE1A = vsha256h2q_u32(STATE1A, TMP2A, TMP0A);880STATE1B = vsha256h2q_u32(STATE1B, TMP2B, TMP0B);882// Transform 3: Update state883TMP = vld1q_u32(&INIT[0]);884STATE0A = vaddq_u32(STATE0A, TMP);885STATE0B = vaddq_u32(STATE0B, TMP);886TMP = vld1q_u32(&INIT[4]);887STATE1A = vaddq_u32(STATE1A, TMP);888STATE1B = vaddq_u32(STATE1B, TMP);890// Store result891vst1q_u8(output, vrev32q_u8(vreinterpretq_u8_u32(STATE0A)));892vst1q_u8(output + 16, vrev32q_u8(vreinterpretq_u8_u32(STATE1A)));893vst1q_u8(output + 32, vrev32q_u8(vreinterpretq_u8_u32(STATE0B)));894vst1q_u8(output + 48, vrev32q_u8(vreinterpretq_u8_u32(STATE1B)));895}896}898#endif
Independent explanations by MyBitcoinExplorer. Not affiliated with or endorsed by Bitcoin Core. Guides are educational and do not replace the source or its tests.
Bitcoin Core source © its contributors, distributed under the MIT license. Original notices and bundled third-party licenses are retained in the source tree.