MCPcopy Create free account
hub / github.com/assaultcube/AC / loop

Function loop

source/src/crypto.cpp:51–79  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

49 bb = b;
50 cc = c;
51 loop(pass_no, TIGER_PASSES)
52 {
53 if(pass_no)
54 {
55 x0 -= x7 ^ 0xA5A5A5A5A5A5A5A5ULL; x1 ^= x0; x2 += x1; x3 -= x2 ^ ((~x1)<<19);
56 x4 ^= x3; x5 += x4; x6 -= x5 ^ ((~x4)>>23); x7 ^= x6;
57 x0 += x7; x1 -= x0 ^ ((~x7)<<19); x2 ^= x1; x3 += x2;
58 x4 -= x3 ^ ((~x2)>>23); x5 ^= x4; x6 += x5; x7 -= x6 ^ 0x0123456789ABCDEFULL;
59 }
60
61#define sb1 (sboxes)
62#define sb2 (sboxes+256)
63#define sb3 (sboxes+256*2)
64#define sb4 (sboxes+256*3)
65
66#define tround(a, b, c, x) \
67 c ^= x; \
68 a -= sb1[((c)>>(0*8))&0xFF] ^ sb2[((c)>>(2*8))&0xFF] ^ \
69 sb3[((c)>>(4*8))&0xFF] ^ sb4[((c)>>(6*8))&0xFF] ; \
70 b += sb4[((c)>>(1*8))&0xFF] ^ sb3[((c)>>(3*8))&0xFF] ^ \
71 sb2[((c)>>(5*8))&0xFF] ^ sb1[((c)>>(7*8))&0xFF] ; \
72 b *= mul;
73
74 uint mul = !pass_no ? 5 : (pass_no==1 ? 7 : 9);
75 tround(a, b, c, x0) tround(b, c, a, x1) tround(c, a, b, x2) tround(a, b, c, x3)
76 tround(b, c, a, x4) tround(c, a, b, x5) tround(a, b, c, x6) tround(b, c, a, x7)
77
78 chunk tmp = a; a = c; c = b; b = tmp;
79 }
80
81 a ^= aa;
82 b -= bb;

Callers 1

gensboxesFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected