| 1058 | // ---------------------------------------------------------------------------- |
| 1059 | |
| 1060 | void VanitySearch::checkAddressesSSE(bool compressed,Int key, int i, Point p1, Point p2, Point p3, Point p4) { |
| 1061 | |
| 1062 | unsigned char h0[20]; |
| 1063 | unsigned char h1[20]; |
| 1064 | unsigned char h2[20]; |
| 1065 | unsigned char h3[20]; |
| 1066 | Point pte1[4]; |
| 1067 | Point pte2[4]; |
| 1068 | prefix_t pr0; |
| 1069 | prefix_t pr1; |
| 1070 | prefix_t pr2; |
| 1071 | prefix_t pr3; |
| 1072 | |
| 1073 | // Point ------------------------------------------------------------------------- |
| 1074 | secp->GetHash160(searchType, compressed, p1, p2, p3, p4, h0, h1, h2, h3); |
| 1075 | |
| 1076 | if (!hasPattern) { |
| 1077 | |
| 1078 | pr0 = *(prefix_t *)h0; |
| 1079 | pr1 = *(prefix_t *)h1; |
| 1080 | pr2 = *(prefix_t *)h2; |
| 1081 | pr3 = *(prefix_t *)h3; |
| 1082 | |
| 1083 | if (prefixes[pr0].items) |
| 1084 | checkAddr(pr0, h0, key, i, 0, compressed); |
| 1085 | if (prefixes[pr1].items) |
| 1086 | checkAddr(pr1, h1, key, i + 1, 0, compressed); |
| 1087 | if (prefixes[pr2].items) |
| 1088 | checkAddr(pr2, h2, key, i + 2, 0, compressed); |
| 1089 | if (prefixes[pr3].items) |
| 1090 | checkAddr(pr3, h3, key, i + 3, 0, compressed); |
| 1091 | |
| 1092 | } else { |
| 1093 | |
| 1094 | checkAddrSSE(h0,h1,h2,h3,i,i+1,i+2,i+3,key,0,compressed); |
| 1095 | |
| 1096 | } |
| 1097 | |
| 1098 | // Endomorphism #1 |
| 1099 | // if (x, y) = k * G, then (beta*x, y) = lambda*k*G |
| 1100 | pte1[0].x.ModMulK1(&p1.x, &beta); |
| 1101 | pte1[0].y.Set(&p1.y); |
| 1102 | pte1[1].x.ModMulK1(&p2.x, &beta); |
| 1103 | pte1[1].y.Set(&p2.y); |
| 1104 | pte1[2].x.ModMulK1(&p3.x, &beta); |
| 1105 | pte1[2].y.Set(&p3.y); |
| 1106 | pte1[3].x.ModMulK1(&p4.x, &beta); |
| 1107 | pte1[3].y.Set(&p4.y); |
| 1108 | |
| 1109 | secp->GetHash160(searchType, compressed, pte1[0], pte1[1], pte1[2], pte1[3], h0, h1, h2, h3); |
| 1110 | |
| 1111 | if (!hasPattern) { |
| 1112 | |
| 1113 | pr0 = *(prefix_t *)h0; |
| 1114 | pr1 = *(prefix_t *)h1; |
| 1115 | pr2 = *(prefix_t *)h2; |
| 1116 | pr3 = *(prefix_t *)h3; |
| 1117 |
nothing calls this directly
no test coverage detected