Bitcoin Forum

Alternate cryptocurrencies => Mining (Altcoins) => Topic started by: smolen on October 15, 2013, 11:41:28 AM



Title: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: smolen on October 15, 2013, 11:41:28 AM
Since 2013 this thread was home for Smelter, the first public GPU miner for (then hot and great) Quark coin. Time passed, Quark almost faded away, open-source miners catched up, OpenCL code of Smelter got published and now old good Smelter for Quark algo is retired. Now I'm returning to this project to make an universal, versatile and hopefully the fastest miner. Currently it's way behind sgminer and friends in area of usability and GPU control. (At the moment of writing it's just ugly, to say the truth)

The current 0.7 version (https://mega.co.nz/#!vQgzCCxY!iprRvA5CsiouU5EfrY6ptct8dFuE1_Y-vZnGkjcI_Kc) is released with WhirlpoolX kernel and can mine only Vanillacoin.
This version is free, there is no hidden fee, enforced donations or speed reduction. Also there is no solo mining (use Stratum proxy if you really need it) and Linux version (wait, it's going to be release)
Tested only with single 280x, but those cards should work:
   Juniper (6770, 6750, 5750, 5770)
   Pitcairn (7850, 7870, Curacao: 265, 270, 270X)
   Tahiti (7870, 7950, 7970, 280, 280X)
   Hawaii (290, 290X)
   Tonga (285)

[TODO: collect and put here reported hashing speeds; my 280x gets ~540MH/s with overclocking]

 Download zip archive, unpack, edit cmd file with pool address, username and password and launch edited cmd.

To get the best performance first find the best worksize for your GPU by changing '-W 64' in .cmd file to -W 128 or 256, select the best value, lower memclock and start to raise core clock. Keep an eye '5s:' speed, it catches up quickly.

Code:
Program options:
  -? [ --help ]           This help message
  --copyrights            Print libraries copyright message(s)
  -o [ --url ] arg        pool url (ex: -o http://pool:port )
  -u [ --user ] arg       Pool username
  -p [ --pass ] arg       Pool password
  -w [ --worksize ] arg   Worksize
  -g [ --gputhreads ] arg Threads per GPU
  -D [ --debug ]          Enable debug output

There isn't much to be configured. User can play with worksize (64, 128 and 256) and number of threads. To flood the screen with tons of diagnostics use --debug. Before claiming that I violated GPL, take a look at 'smelter --copyrights' output. To exit, use control-C or type any letter and then ENTER.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: pyromaniac on October 15, 2013, 12:14:36 PM
I can't download it from there using both of my browsers (Opera 12 and IE 10). Please, upload it to any other hosting.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: ig0tik3d on October 15, 2013, 12:24:51 PM
when start got some erorrs...
and on my hd7850 speed 520kh )) on the same pc cpu miner on a10-5800k got 420kh ))
http://s004.radikal.ru/i207/1310/5d/4b35e21a627e.jpg


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on October 15, 2013, 12:25:56 PM
I can't download it from there using both of my browsers (Opera 12 and IE 10). Please, upload it to any other hosting.

http://rghost.net/49379672 (http://rghost.net/49379672)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on October 15, 2013, 12:31:06 PM
when start got some erorrs...
and on my hd7850 speed 520kh )) on the same pc cpu miner on a10-5800k got 420kh ))
http://s004.radikal.ru/i207/1310/5d/4b35e21a627e.jpg
~1.2 MH/s here on my 6770, I released it without any testing on other GPUs:(


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: dragon695 on October 15, 2013, 01:08:16 PM
Closed source, steals 1/8, possible malware, what could go wrong? ::)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: paymetodostuff on October 15, 2013, 01:17:18 PM
Testing this out. 2.58MH on my 6970.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: pyromaniac on October 15, 2013, 01:38:01 PM
I can't download it from there using both of my browsers (Opera 12 and IE 10). Please, upload it to any other hosting.

http://rghost.net/49379672
Thanks!


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: pyromaniac on October 15, 2013, 02:01:20 PM
http://s019.radikal.ru/i643/1310/ec/0b7d7b0ca92c.png
7970


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on October 15, 2013, 02:04:19 PM
:(
Looks like it's almost useless on GCN cards...


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: shaber122 on October 15, 2013, 05:05:54 PM
7970+7850+5870=3.79MH/s


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Grogorash on October 15, 2013, 05:15:20 PM
Can smelter be used in mining pool or solo only?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on October 15, 2013, 05:27:31 PM
Can smelter be used in mining pool or solo only?
Only solo is possible now. I have plans to implement pool/miner combo, but don't expect it soon, the progress is very slow...


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on October 15, 2013, 05:29:57 PM
Profit estimation per 1 MH/s for Quark and Securecoin:
QRK:1000000*60*60*24*128*0.00000110/16777216/124 = 0.00584 BTC/day
SRC:1000000*60*60*24*5*0.00041263/16777216/1462 = 0.00726 BTC/day


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: shaber122 on October 15, 2013, 06:07:15 PM
smolen
a little lower intensity?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on October 15, 2013, 06:09:31 PM
smolen
a little lower intensity?
It's in my TODO list


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: 3dcgminer on October 15, 2013, 06:14:38 PM
Wanted to check if NVIDIA cards may be of any use, but I get:
"The procedure entry point clRetinDevice could not be located in the dynamic link library."
Updating the driver...

Edit, updated from 320.00 to 320.86, no change, driver is supposed to support OpenCL 1.1, is it too old?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on October 15, 2013, 06:19:53 PM
Updating the driver...
Don't do it, NVidia is not supported anyway. (I'd better update the first post)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: murraypaul on October 15, 2013, 06:26:55 PM
Crashes after about 20-30 seconds for me.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: 3dcgminer on October 15, 2013, 06:30:31 PM
Updating the driver...
Don't do it, NVidia is not supported anyway. (I'd better update the first post)

Answering myself:
Looks like it may be the old nvidia opencl driver that is the problem:
http://stackoverflow.com/questions/15456987/opencl-could-not-find-clretaindevice-in-dll

It happens when you use the C++ bindings header file with OpenCL 1.2 header. For instance, when you run an application compiled with AMD SDK (OpenCL 1.2) on NVIDIA platform (OpenCL 1.1 only).
As fast and dirty work around, you can just edit the AMD SDK cl.h header and undef "CL_VERSION_1_2" preprocessor symbol. If you are not interested to 1.2 features, it should fix your problem.


Any chance of a quick and dirty fix?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on October 15, 2013, 06:30:48 PM
Crashes after about 20-30 seconds for me.
Next version will come with debug log writer, I was too lazy to implement it properly in the first version :)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on October 15, 2013, 06:47:30 PM
Don't do it, NVidia is not supported anyway. (I'd better update the first post)
Any chance of a quick and dirty fix?
No :(
I work now on Primecoin miner. With all respect to mtrtl, the release of his reaper-prime was a fiasco. When my miner will be ready (let's hope it will:)), I'm going to release it to the public and get some profit. Apparently, taking preorders or donations is a wrong way, and this Quark miner was created to test waters with profit-splitting scheme (and also give miner host some real-world testing). There is some copy-protection embedded in precompiled kernel and I cannot implement it for NVidia cards without actual hardware in my hands. So no, don't expect NVidia support soon :(


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: 3dcgminer on October 15, 2013, 06:59:13 PM
Would prefer a finished Quark miner with pool support, before getting another new miner...
At 12.5% fee, you should get the cash to buy a mid-range NVIDIA card in no time at all.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: 3dcgminer on October 15, 2013, 07:03:21 PM
Runs fine and fast for 15 minutes on 7970, but 0 blocks for me and 0 payout for the author.
Please add pool support.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on October 15, 2013, 07:06:12 PM
Runs fine and fast for 15 minutes on 7970, but 0 blocks for me and 0 payout for the author.
Please add pool support.
I have plans to implement pool/miner combo, but don't expect it soon, the progress is very slow...


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Wubbllez on October 15, 2013, 07:15:17 PM
This could be really good for the coin, or really really bad


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: ivanlabrie on October 15, 2013, 07:31:23 PM
This should help the coins...xpm needs this as well.
Props for making this op.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: victzhang on October 15, 2013, 08:16:10 PM
Right now it produces almost equal hash rate on my CPU and GPU. I am still doing CPU mining to avoid the royalty. However, as it is just a preview, I think there is still great potential to improve this miner.
I personally like open-source miners, and in this way more people can be involved to improve this miner further. The author can still accept donations and offer early access to donors, like what the author of XPM GPU miner did.
Even though right now the price of Quark is cheap, but I believe it has great potential. The GPU miner will not kill it; rather, it helps promote this coin and discourage botnet miners.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on October 16, 2013, 08:08:57 AM
The author can still accept donations and offer early access to donors, like what the author of XPM GPU miner did.

With profit splitting miner I'm getting my reward at the same moment as the owner of hardware. I'd be happy to take preorders/grants/donations in advance, but it's really, really bad idea. Just take a look here:

What happened to mtrlt? Did he just scam us of 75 BTC? (https://bitcointalk.org/index.php?topic=279096.0)
What happened to mtrlt?: A continuing story (https://bitcointalk.org/index.php?topic=280201.0)
[XPM] mtrlt Primecoin OCL GPU Miner, Communication problem ???  (https://bitcointalk.org/index.php?topic=283021.0)
WARNING suspicious behavior with mtrlt (https://bitcointalk.org/index.php?topic=273743.0)
I'm sorry mtrlt XPM GPU miners but... (https://bitcointalk.org/index.php?topic=273731.0)
How much money has mtrlt made from the Primecoin GPU Miner? (https://bitcointalk.org/index.php?topic=288526.0)
Open Discussion for mtrlt's:"[XPM] Working on a GPU miner for Primecoin" (https://bitcointalk.org/index.php?topic=277497.0)
[POLL] Opinions about the Primecoin GPU Miner (https://bitcointalk.org/index.php?topic=296780.0)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: ivanlabrie on October 16, 2013, 01:55:08 PM
The author can still accept donations and offer early access to donors, like what the author of XPM GPU miner did.

With profit splitting miner I'm getting my reward at the same moment as the owner of hardware. I'd be happy to take preorders/grants/donations in advance, but it's really, really bad idea. Just take a look here:

What happened to mtrlt? Did he just scam us of 75 BTC? (https://bitcointalk.org/index.php?topic=279096.0)
What happened to mtrlt?: A continuing story (https://bitcointalk.org/index.php?topic=280201.0)
[XPM] mtrlt Primecoin OCL GPU Miner, Communication problem ???  (https://bitcointalk.org/index.php?topic=283021.0)
WARNING suspicious behavior with mtrlt (https://bitcointalk.org/index.php?topic=273743.0)
I'm sorry mtrlt XPM GPU miners but... (https://bitcointalk.org/index.php?topic=273731.0)
How much money has mtrlt made from the Primecoin GPU Miner? (https://bitcointalk.org/index.php?topic=288526.0)
Open Discussion for mtrlt's:"[XPM] Working on a GPU miner for Primecoin" (https://bitcointalk.org/index.php?topic=277497.0)
[POLL] Opinions about the Primecoin GPU Miner (https://bitcointalk.org/index.php?topic=296780.0)


I think it's fine as long as the fee isn't too big and it's clearly stated and proven in the source code...Problem is, yeah, sharing the source code would make this pointless.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: ilostcoins on October 16, 2013, 02:16:16 PM
I think the profit sharing scheme makes sense. If the results are good and people like to use it, they naturally pay for it. If you try it a bit and don't like the results, you don't need to pay for it. Payment scales with the software's productivity.

(I'd also like to mention my interest in an Nvidia version.)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on October 16, 2013, 05:23:21 PM
With profit splitting miner I'm getting my reward at the same moment as the owner of hardware.

I think it's fine as long as the fee isn't too big and it's clearly stated and proven in the source code...Problem is, yeah, sharing the source code would make this pointless.
Well, Smelter can be audited even without source code. There is no extra network connections, all generated blocks can be seen in the block explorer, wallet debug log can be examined. Good idea would be to run it in restricted environment with empty wallet without any funds.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: ivanlabrie on October 16, 2013, 06:35:59 PM
With profit splitting miner I'm getting my reward at the same moment as the owner of hardware.

I think it's fine as long as the fee isn't too big and it's clearly stated and proven in the source code...Problem is, yeah, sharing the source code would make this pointless.
Well, Smelter can be audited even without source code. There is no extra network connections, all generated blocks can be seen in the block explorer, wallet debug log can be examined. Good idea would be to run it in restricted environment with empty wallet without any funds.

Right, good call...at least for solo mining it should be easy to monitor it.
I'll give it a shot as soon as I get a proper gpu again mate.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Orrechorre on October 16, 2013, 09:43:12 PM
Im only getting 800kh/s on my 7870, any way you can run this on muliple card on the same machine?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: macmac__ on October 16, 2013, 11:24:30 PM
Working here so far, just 1.05MH/s thou (7950) tomorrow morning we'll see if it has generated a block :)
If yes +1,
if no, waiting for adjustable intensity and +0.5  :P
E:And we have a block! All we need now is adjustable intensity ;)
https://i.imgur.com/dC02Glys.png (https://i.imgur.com/dC02Gly.png)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: pyromaniac on October 17, 2013, 01:41:44 PM
Working here so far, just 1.05MH/s thou (7950) tomorrow morning we'll see if it has generated a block :)
If yes +1,
if no, waiting for adjustable intensity and +0.5  :P
E:And we have a block! All we need now is adjustable intensity ;)
https://i.imgur.com/dC02Glys.png (https://i.imgur.com/dC02Gly.png)

What CPU miner did you using?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: macmac__ on October 17, 2013, 04:03:53 PM

minerd_qv2.2_sse4, found if from somewhere in quarkcoin thread.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: cryptrol on October 17, 2013, 05:21:15 PM
What is the power drawn by mining with GPU ? I don't think GPU mining makes any sense with this performance.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: macmac__ on October 17, 2013, 06:46:35 PM
Around 40% of scrypts usage (atleast on my 7950)
[Following data pulled from HWinfo]
Quark: Core 57W Memory 14W Combined 71W
Scrypt: Core 135W Memory 35W Combined 170W

These powers are measured after VRM modules so total card consumption is higher, around 200W in scrypt  and  85W in quark. (Rough approximation with bad multimeter)


Hopefully the miner gets updated to support GCN cards as soon as possible, I'd be more than happy if it would pull 2.5MH/s with 200W power usage, but as performance of 6000-series is great,over 2.5MH/s with 6970, I'm hoping for over 4MH/s when it gets optimized ^^


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: ivanlabrie on October 17, 2013, 07:11:20 PM
Around 40% of scrypts usage (atleast on my 7950)
[Following data pulled from HWinfo]
Quark: Core 57W Memory 14W Combined 71W
Scrypt: Core 135W Memory 35W Combined 170W

These powers are measured after VRM modules so total card consumption is higher, around 200W in scrypt  and  85W in quark. (Rough approximation with bad multimeter)


Hopefully the miner gets updated to support GCN cards as soon as possible, I'd be more than happy if it would pull 2.5MH/s with 200W power usage, but as performance of 6000-series is great,over 2.5MH/s with 6970, I'm hoping for over 4MH/s when it gets optimized ^^

That would be amazing! :D


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on October 17, 2013, 07:37:49 PM
I read the thread :) expect new version soon


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: lemons on October 18, 2013, 07:01:51 AM
Profit estimation per 1 MH/s for Quark and Securecoin:
QRK:1000000*60*60*24*128*0.00000110/16777216/124 = 0.00584 BTC/day
SRC:1000000*60*60*24*5*0.00041263/16777216/1462 = 0.00726 BTC/day


Profit less  than CPU miner ?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Hilux74 on October 18, 2013, 07:31:26 PM
Good work on the program.  I tried it for a couple hours crunching Quark and scored a block with it getting 1.2MH/s with an XFX 7970.  Looking forward to the improvments and optimizations that will come with future versions.

I think the idea of a percent fee is an excellent idea akin to pool operators.  The 1/8 (12.5%) fee is fine for the first few early versions to make development worthwile but I think something in the 2-4% would be much more reasonable once it is more widely released with a wider user base.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: soulmann on October 18, 2013, 08:39:15 PM
7970 is mining LTC at 700 Kilohash/s - it is about 0.68 LTC/day or 0.0082 BTC/day. 1.2 Mhash/s Quark mining  is about 5000 QRK/day or 0.0051 BTC/day and 12.5% to author. So it is more profitable to mine LTC or FTC, then Quark with GPU.

Am I right?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: macmac__ on October 18, 2013, 09:21:07 PM
Yes.



Simple question and simple answer ;)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: dragon695 on October 18, 2013, 10:16:29 PM
Yes.



Simple question and simple answer ;)
Obviously, skimming 1/8 is highway robbery.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: macmac__ on October 18, 2013, 11:59:08 PM
Snip
Obviously, skimming 1/8 is highway robbery.
I wouldn't say it's robbing to get paid for what you do, 12.5% of income is alot but consider this: you wouldn't get any income if he wouldn't have shared his miner, on 6000-series gpus it's highly profitable even with the fee at the moment


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on October 19, 2013, 08:16:57 PM
7970 is mining LTC at 700 Kilohash/s - it is about 0.68 LTC/day or 0.0082 BTC/day. 1.2 Mhash/s Quark mining  is about 5000 QRK/day or 0.0051 BTC/day and 12.5% to author. So it is more profitable to mine LTC or FTC, then Quark with GPU.

Am I right?
That's correct. My trick with groestl hash works well for VLIW5, but not for GCN :(

I think the idea of a percent fee is an excellent idea akin to pool operators.
Thank you! (And there is no risk of 51% attack from me :))

Obviously, skimming 1/8 is highway robbery.
12.5% of mined Quarks is a lot, but I hope that 12.5% of mined Primecoins will be generous. I'll lower royalty percent in the next Quark kernel.



Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: cinnamon_carter on October 19, 2013, 09:14:30 PM
My thoughts exactly, There are countless people in the world trying to hustle money away from each other. This is a good example.

Closed source, steals 1/8, possible malware, what could go wrong? ::)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: picbb1 on October 20, 2013, 04:57:23 PM
6930+6770=3.2MH/s


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: macmac__ on October 24, 2013, 10:13:53 AM
When can we expect to see a new version?
I haven't been able to mine as the intensity is way too high to be run in background.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: cyruss on October 26, 2013, 03:21:47 AM
smelter miner give 112 quark of 128 block bounty, but in Block explorer absent transaction difference. Where is 16 quark?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on October 26, 2013, 01:08:17 PM
When can we expect to see a new version?
I haven't been able to mine as the intensity is way too high to be run in background.
I hope to release new version tomorrow. (The kernel was done on August 2nd, the first smelter version was ready on October 15th. You got the idea about the development speed :))

smelter miner give 112 quark of 128 block bounty, but in Block explorer absent transaction difference. Where is 16 quark?
They are in my wallet :) I'll lower royalty a bit in the next version.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on October 27, 2013, 11:33:46 PM
New version is ready, download it here (http://rghost.net/49771017)
Royalty decreased from 12.5% to 10%
Kernel speed improved for ~40%, from 1.04 to 1.47 MH/s on my 6770
New command line options
-w - worksize, can be 32,64,128 or 256
-g - number of GPU threads
-i - intensity, measures as milliseconds to run the kernel. Don't worry, 100 is pretty small value :)
Happy mining!


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: picbb1 on October 28, 2013, 04:34:00 AM
6930+6770=3.7MH/s speed improved for 15%


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: feeleep on October 28, 2013, 04:58:13 AM
New version is ready, download it here (http://rghost.net/49771017)
Royalty decreased from 12.5% to 10%
Kernel speed improved for ~40%, from 1.04 to 1.47 MH/s on my 6770
New command line options
-w - worksize, can be 32,64,128 or 256
-g - number of GPU threads
-i - intensity, measures as milliseconds to run the kernel. Don't worry, 100 is pretty small value :)
Happy mining!

linux version available?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: ivanlabrie on October 28, 2013, 08:37:21 AM
Gonna try it...we need pool support.
I think 10% is a fair cut for a capable gpu miner.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on October 28, 2013, 08:50:39 AM
6930+6770=3.7MH/s speed improved for 15%
Worse than expected :(
Quark and Securecoin fall faster than I can boost the kernel, I'll wait and watch exchange rate before putting more work into Quark kernel...

linux version available?
Which flavor of Linux do you use? Actually, smelter is developed on Linux :) I must check that nothing GPL'ed gets into the binary and setup VMs for most popular distributions.

I think 10% is a fair cut for a capable gpu miner.
10% is a fair cut for the only gpu miner, a good competing miner will force me to drop the royalty. Or improve the speed :)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: feeleep on October 28, 2013, 08:55:21 AM
linux version available?

I am using ubuntu


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on October 28, 2013, 09:06:38 AM
I am using ubuntu
Saucy Salamander, x64?
(I'm on debian, may be there is some way to build universal linux binary, but VM route would be faster)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: feeleep on October 28, 2013, 09:26:01 AM
I am using ubuntu
Saucy Salamander, x64?
(I'm on debian, may be there is some way to build universal linux binary, but VM route would be faster)

actually 12.10 x64


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: applsdev on October 28, 2013, 10:23:23 AM
Saucy Salamander, x64?
(I'm on debian, may be there is some way to build universal linux binary, but VM route would be faster)

Simple build miner and link with all static libraries gcc -static (libc, libstdc++, boost, curl, openssl & e.t.c. ) ... 
(Or build two versions static+dynamic linked)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Orrechorre on October 28, 2013, 12:31:20 PM
my 7870 went from 880kh/s to 1.20mh/s with the new version :D

which flags do everyone use? i use -w128 -g4



Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: abdulmad on October 28, 2013, 12:33:45 PM
Solo or poolmine with the latest version?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: macmac__ on October 28, 2013, 09:05:04 PM
Great update!
Got a 32% boost AND a fluid desktop, awesome  :D

Running at following settings:
https://i.imgur.com/LyulNT8l.jpg (http://imgur.com/LyulNT8.jpg)
I can keep it running at all times with no effect to my work/media experience and that's why I'll keep it running 'till the end of the world :)
When I want to play something I just pause the miner with Process Explorer and when I'm finished I'll let it to roll again.

Solo or poolmine with the latest version?
It's solo

E: Tested Intensity's effect to performance, short 60 second rounds, so it's not 100% waterproof, but it shows to me that going over about 20-30 doesn't give a considerable boots: (yeah, it's low resolution data but it tells something)
[Spreadsheet] (https://docs.google.com/spreadsheet/pub?key=0AkBCneF7q_t6dHBQSm44MVVvbVFISVlRMFgwS2JmbWc&output=html)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: cyruss on October 30, 2013, 04:49:23 PM
best i1000


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Hilux74 on October 30, 2013, 08:31:47 PM
Latest version works great.  Computer remains usable and no freezing so far.  Now we just need QRK price to @$#&ing go up!  ;D


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on October 30, 2013, 09:09:36 PM
Saucy Salamander, x64?
(I'm on debian, may be there is some way to build universal linux binary, but VM route would be faster)

Simple build miner and link with all static libraries gcc -static (libc, libstdc++, boost, curl, openssl & e.t.c. )
libstdc++ and libgcc have special license exceptions for closed-source software, but glibc is under pure LGPL :(

Solo or poolmine with the latest version?
Solo only, at least for the foreseeable future

Got a 32% boost AND a fluid desktop, awesome  :D
Really, desktop smoothness took more efforts than kernel tweaks, but it well worth it

Latest version works great.  Computer remains usable and no freezing so far.  Now we just need QRK price to @$#&ing go up!  ;D
Let's hope, after the last reward halving traders can trade with no fear for big influx of freshly minted coins :)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: int3ractivodular on October 30, 2013, 09:41:26 PM
Gonna give this a try later today, haven't mined QRK in a while.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: awoland on October 31, 2013, 06:22:14 AM
libstdc++ and libgcc have special license exceptions for closed-source software, but glibc is under pure LGPL :(
I know many examples of commercial software with a closed-source for Linux, which does not interfere with licensing restrictions GPL. Such as Autodesk Maya.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: csa1234 on November 01, 2013, 02:49:15 PM
Problem: I run the miner on desktop PC, it opens and then close the miner after 5 secs. No mining at all and no error message, it just quit back to cmd prompt

http://s15.postimg.org/xak3qxlsb/Sin_t_tulo.png (http://postimage.org/)
imag (http://postimage.org/index.php?lang=spanish)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on November 01, 2013, 05:13:34 PM
libstdc++ and libgcc have special license exceptions for closed-source software, but glibc is under pure LGPL :(
I know many examples of commercial software with a closed-source for Linux, which does not interfere with licensing restrictions GPL. Such as Autodesk Maya.
They have armies of lawyers, I'd better be paranoid :)

Problem: I run the miner on desktop PC, it opens and then close the miner after 5 secs. No mining at all and no error message, it just quit back to cmd prompt
Most probably your GPU is not supported. Sorry, no efforts were put into UI, error diagnostics and such things. Well, that's preview and I hope to improve my miner in the future.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: csa1234 on November 01, 2013, 05:30:14 PM
on my notebook with ATI 5870 it does work at 1,20 MH/s but on my desktop with ATI 5970 it doesnt


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on November 01, 2013, 05:44:31 PM
on my notebook with ATI 5870 it does work at 1,20 MH/s but on my desktop with ATI 5970 it doesnt
Oops, there is a problem. Seems that Hemlock (59xx) support is missing from my ATI SDK. If you mine any other coins with 5970 with cgminer or reaper, what are the names of .bin files in miner directory? If they are named Cypress_something.bin there is a hope to resolve the issue without too much efforts.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: csa1234 on November 01, 2013, 07:19:25 PM
scrypt130511Cypressglg2tc8000w256l4.bin


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: feeleep on November 01, 2013, 07:21:03 PM
libstdc++ and libgcc have special license exceptions for closed-source software, but glibc is under pure LGPL :(
I know many examples of commercial software with a closed-source for Linux, which does not interfere with licensing restrictions GPL. Such as Autodesk Maya.

so - will we have linux version?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on November 01, 2013, 07:32:13 PM
so - will we have linux version?
Yes, on this weekends. Actually, it's ready, but I want to push some changes into release.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: dragon695 on November 02, 2013, 01:18:45 AM
Saucy Salamander, x64?
(I'm on debian, may be there is some way to build universal linux binary, but VM route would be faster)

Simple build miner and link with all static libraries gcc -static (libc, libstdc++, boost, curl, openssl & e.t.c. ) ... 
(Or build two versions static+dynamic linked)
Or he could just stop being greedy and release a modified version of cgminer like YaCoin does so you can compile it yourself.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: mattle74 on November 02, 2013, 12:37:20 PM
So my GPU's are mining at 5.2 Mh/s. How often should I find a block at that rate on average?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: csa1234 on November 02, 2013, 09:36:30 PM
any news on the fixed miner version for ATI 5970?

on my notebook with ATI 5870 it does work at 1,20 MH/s but on my desktop with ATI 5970 it doesnt
Oops, there is a problem. Seems that Hemlock (59xx) support is missing from my ATI SDK. If you mine any other coins with 5970 with cgminer or reaper, what are the names of .bin files in miner directory? If they are named Cypress_something.bin there is a hope to resolve the issue without too much efforts.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on November 04, 2013, 08:48:02 PM
New version (http://rghost.net/49938413) is out
The code went through massive refactoring (if everything is OK, nobody will notice :)), no kernel updates, statically linked linux x64 binary added, new command line switch --debug for troubleshooting.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on November 04, 2013, 09:12:45 PM
Or he could just stop being greedy and release a modified version of cgminer like YaCoin does so you can compile it yourself.
Guess what will happen if I release all the code under BSD/MIT license? The end of free miners era, that's what - every kernel author will wrap their cl code into my monetization framework. Now this scenarion is prevented by GPL, it protects cgminer and reaper from such hijacking.
Regarding Quark mining kernel - it eventually be released, but give me some time to roll out new miner for another coin :)

So my GPU's are mining at 5.2 Mh/s. How often should I find a block at that rate on average?
Let's see, Quark difficulty is 128, one 1-diff share gets 2^24 hashes, so on average it should take 128*16777216/5200000 = 413 seconds to find a block.

any news on the fixed miner version for ATI 5970?
Run new version with --debug, it will produce a lot of debugging garbage messages, I hope there will be some hints to solve this problem.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on November 05, 2013, 12:40:35 AM
Sorry, I've messed up with the release, new binaries are here (http://rghost.net/49940688)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: csa1234 on November 05, 2013, 04:58:11 PM
Royalty is 1/10, shouldnt it be 1/8?

Sorry, I've messed up with the release, new binaries are here (http://rghost.net/49940688)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: csa1234 on November 05, 2013, 05:18:51 PM
This are the results of the debug for my 5970

Code:
c:\smelter>smelter -o http://127.0.0.1:8385 -u user -p password -w 64 -g 1 -i 20
0 -a sTpJCcM1QhotTWd51RjK4dYRZkGVbNdmMK --debug
smelter v0.3 (c) Smolen
Royalty: 1/10
Pool::Start()
Pool::ThreadFunc() started
nPlatforms==1
Platform #0 id:65FD4514
CL_PLATFORM_PROFILE:FULL_PROFILE
CL_PLATFORM_VERSION:OpenCL 1.2 AMD-APP (923.1)
CL_PLATFORM_NAME:AMD Accelerated Parallel Processing
CL_PLATFORM_VENDOR:Advanced Micro Devices, Inc.
CL_PLATFORM_EXTENSIONS:cl_khr_icd cl_amd_event_callback cl_amd_offline_devices c
l_khr_d3d10_sharing
# of devices: 2
        Device #0 id==00D20FD0
        CL_DEVICE_NAME:Cypress
        CL_DEVICE_VENDOR:Advanced Micro Devices, Inc.
        CL_DEVICE_VERSION:OpenCL 1.2 AMD-APP (923.1)
        CL_DRIVER_VERSION:CAL 1.4.1720 (VM)
        CL_DEVICE_ADDRESS_BITS:32
        CL_DEVICE_AVAILABLE:1
        CL_DEVICE_COMPILER_AVAILABLE:1
        CL_DEVICE_ENDIAN_LITTLE:1
        CL_DEVICE_ERROR_CORRECTION_SUPPORT:0
        CL_DEVICE_EXTENSIONS:cl_khr_fp64 cl_amd_fp64 cl_khr_global_int32_base_at
omics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_kh
r_local_int32_extended_atomics cl_khr_3d_image_writes cl_khr_byte_addressable_st
ore cl_khr_gl_sharing cl_ext_atomic_counters_32 cl_amd_device_attribute_query cl
_amd_vec3 cl_amd_printf cl_amd_media_ops cl_amd_popcnt cl_khr_d3d10_sharing
        CL_DEVICE_GLOBAL_MEM_CACHE_SIZE:0
        CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE:0
        CL_DEVICE_GLOBAL_MEM_SIZE:1073741824
        CL_DEVICE_LOCAL_MEM_SIZE:32768
        CL_DEVICE_MAX_CLOCK_FREQUENCY:725
        CL_DEVICE_MAX_COMPUTE_UNITS:20
        CL_DEVICE_MAX_CONSTANT_ARGS:8
        CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE:65536
        CL_DEVICE_MAX_MEM_ALLOC_SIZE:536870912
        CL_DEVICE_MAX_PARAMETER_SIZE:1024
        CL_DEVICE_MAX_WORK_GROUP_SIZE:256
        CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS:3
        CL_DEVICE_MEM_BASE_ADDR_ALIGN:2048

Loaded from archive
Building from binary quark0td_Cypress_W64.bin
Building from binary done: quark0td_Cypress_W64.bin
SummonProgram done
        Device #1 id==052AF868
        CL_DEVICE_NAME:Cypress
        CL_DEVICE_VENDOR:Advanced Micro Devices, Inc.
        CL_DEVICE_VERSION:OpenCL 1.2 AMD-APP (923.1)
        CL_DRIVER_VERSION:CAL 1.4.1720 (VM)
        CL_DEVICE_ADDRESS_BITS:32
        CL_DEVICE_AVAILABLE:1
        CL_DEVICE_COMPILER_AVAILABLE:1
        CL_DEVICE_ENDIAN_LITTLE:1
        CL_DEVICE_ERROR_CORRECTION_SUPPORT:0
        CL_DEVICE_EXTENSIONS:cl_khr_fp64 cl_amd_fp64 cl_khr_global_int32_base_at
omics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_kh
r_local_int32_extended_atomics cl_khr_3d_image_writes cl_khr_byte_addressable_st
ore cl_khr_gl_sharing cl_ext_atomic_counters_32 cl_amd_device_attribute_query cl
_amd_vec3 cl_amd_printf cl_amd_media_ops cl_amd_popcnt cl_khr_d3d10_sharing
        CL_DEVICE_GLOBAL_MEM_CACHE_SIZE:0
        CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE:0
        CL_DEVICE_GLOBAL_MEM_SIZE:1073741824
        CL_DEVICE_LOCAL_MEM_SIZE:32768
        CL_DEVICE_MAX_CLOCK_FREQUENCY:725
        CL_DEVICE_MAX_COMPUTE_UNITS:20
        CL_DEVICE_MAX_CONSTANT_ARGS:8
        CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE:65536
        CL_DEVICE_MAX_MEM_ALLOC_SIZE:536870912
        CL_DEVICE_MAX_PARAMETER_SIZE:1024
        CL_DEVICE_MAX_WORK_GROUP_SIZE:256
        CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS:3
        CL_DEVICE_MEM_BASE_ADDR_ALIGN:2048

Loaded from archive
Building from binary quark0td_Cypress_W64.bin

c:\smelter>


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on November 05, 2013, 05:27:39 PM
Royalty is 1/10, shouldnt it be 1/8?
I reduced my royalty, 10% is lesser than 12.5%

This are the results of the debug for my 5970
Thank you, I'll take a look at it. Something is wrong with OpenCL or with a way I use it :)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Orrechorre on November 05, 2013, 10:26:13 PM
how can 5870 get the same mh/s as my 7870? im also getting 1.20mh/s


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Hilux74 on November 05, 2013, 11:19:40 PM
Another usage update for shits n giggles:

I have been using Version2 (not the latest update) for a while now and it seems to run as long as I want without issues on system#1 (Windows7 64 4x MSI 7950s total 5.9Mhash/s) and system #2 (Windows7 64 2x PowerColour 7970 + 1x PowerColour 6970 Total 4.7MHash/s) but tends to freeze up within 30minutes on system #3 (Windows8 64 1x XFX 7970 1.7MHash/s).  Not sure why it isn't happy on system#3.



Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Spoetnik on November 06, 2013, 03:16:42 AM
Or he could just stop being greedy and release a modified version of cgminer like YaCoin does so you can compile it yourself.
Guess what will happen if I release all the code under BSD/MIT license? The end of free miners era, that's what - every kernel author will wrap their cl code into my monetization framework. Now this scenarion is prevented by GPL, it protects cgminer and reaper from such hijacking.
Regarding Quark mining kernel - it eventually be released, but give me some time to roll out new miner for another coin :)

So my GPU's are mining at 5.2 Mh/s. How often should I find a block at that rate on average?
Let's see, Quark difficulty is 128, one 1-diff share gets 2^24 hashes, so on average it should take 128*16777216/5200000 = 413 seconds to find a block.

any news on the fixed miner version for ATI 5970?
Run new version with --debug, it will produce a lot of debugging garbage messages, I hope there will be some hints to solve this problem.

The end of free miners era ? ahaahahahaa


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: verloren on November 06, 2013, 04:05:37 AM
how can 5870 get the same mh/s as my 7870? im also getting 1.20mh/s
Miner seems to be gpu-clock limited atm. I've been hitting 1.4Mh/s with a 7950 set at 1000/1250. Intensity of 100 (or thereabouts).


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: FlipPro on November 06, 2013, 06:24:29 AM
How much QRK would it take you to open source this bad boy ?

[serious question] response appreciated.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: OZR on November 06, 2013, 07:22:09 AM
Thx   ;)

- Error on start "smelter has stopped working"

Debug message. "correctly"

Code:
smelter v0.3 (c) Smolen
Royalty: 1/10
Pool::Start()
Pool::ThreadFunc() started
nPlatforms==1
Platform #0 id:65F93864
CL_PLATFORM_PROFILE:FULL_PROFILE
CL_PLATFORM_VERSION:OpenCL 1.2 AMD-APP (1084.2)
CL_PLATFORM_NAME:AMD Accelerated Parallel Processing
CL_PLATFORM_VENDOR:Advanced Micro Devices, Inc.
CL_PLATFORM_EXTENSIONS:cl_khr_icd cl_amd_event_callback cl_amd_offline_devices c
l_khr_d3d10_sharing cl_khr_d3d11_sharing cl_khr_dx9_media_sharing
# of devices: 1
        Device #0 id==04BEE818
        CL_DEVICE_NAME:Pitcairn
        CL_DEVICE_VENDOR:Advanced Micro Devices, Inc.
        CL_DEVICE_VERSION:OpenCL 1.2 AMD-APP (1084.2)
        CL_DRIVER_VERSION:1084.2 (VM)
        CL_DEVICE_ADDRESS_BITS:32
        CL_DEVICE_AVAILABLE:1
        CL_DEVICE_COMPILER_AVAILABLE:1
        CL_DEVICE_ENDIAN_LITTLE:1
        CL_DEVICE_ERROR_CORRECTION_SUPPORT:0
        CL_DEVICE_EXTENSIONS:cl_khr_fp64 cl_amd_fp64 cl_khr_global_int32_base_at
omics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_kh
r_local_int32_extended_atomics cl_khr_int64_base_atomics cl_khr_int64_extended_a
tomics cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_gl_sharing cl
_ext_atomic_counters_32 cl_amd_device_attribute_query cl_amd_vec3 cl_amd_printf
cl_amd_media_ops cl_amd_popcnt cl_khr_d3d10_sharing cl_khr_dx9_media_sharing cl_
amd_c1x_atomics
        CL_DEVICE_GLOBAL_MEM_CACHE_SIZE:16384
        CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE:64
        CL_DEVICE_GLOBAL_MEM_SIZE:1073741824
        CL_DEVICE_LOCAL_MEM_SIZE:32768
        CL_DEVICE_MAX_CLOCK_FREQUENCY:950
        CL_DEVICE_MAX_COMPUTE_UNITS:16
        CL_DEVICE_MAX_CONSTANT_ARGS:8
        CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE:65536
        CL_DEVICE_MAX_MEM_ALLOC_SIZE:804257792
        CL_DEVICE_MAX_PARAMETER_SIZE:1024
        CL_DEVICE_MAX_WORK_GROUP_SIZE:256
        CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS:3
        CL_DEVICE_MEM_BASE_ADDR_ALIGN:2048

Loaded from archive
Building from binary quark0td_Pitcairn_W64.bin
Building from binary done: quark0td_Pitcairn_W64.bin
SummonProgram done
main loop
ThreadHost::Thread() started
1:0 A:0 R:0 HW:0 Speed: 745.47KH/s 5s: 747.10KH/s
Exi^CTerminate batch job (Y/N)? y


Debug message. "Error"

Code:
smelter v0.3 (c) Smolen
Royalty: 1/10
Pool::Start()
Pool::ThreadFunc() started
nPlatforms==1
Platform #0 id:65F93864
CL_PLATFORM_PROFILE:FULL_PROFILE
CL_PLATFORM_VERSION:OpenCL 1.2 AMD-APP (1084.2)
CL_PLATFORM_NAME:AMD Accelerated Parallel Processing
CL_PLATFORM_VENDOR:Advanced Micro Devices, Inc.
CL_PLATFORM_EXTENSIONS:cl_khr_icd cl_amd_event_callback cl_amd_offline_devices c
l_khr_d3d10_sharing cl_khr_d3d11_sharing cl_khr_dx9_media_sharing
# of devices: 1
        Device #0 id==04BEE818
        CL_DEVICE_NAME:Pitcairn
        CL_DEVICE_VENDOR:Advanced Micro Devices, Inc.
        CL_DEVICE_VERSION:OpenCL 1.2 AMD-APP (1084.2)
        CL_DRIVER_VERSION:1084.2 (VM)
        CL_DEVICE_ADDRESS_BITS:32
        CL_DEVICE_AVAILABLE:1
        CL_DEVICE_COMPILER_AVAILABLE:1
        CL_DEVICE_ENDIAN_LITTLE:1
        CL_DEVICE_ERROR_CORRECTION_SUPPORT:0
        CL_DEVICE_EXTENSIONS:cl_khr_fp64 cl_amd_fp64 cl_khr_global_int32_base_at
omics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_kh
r_local_int32_extended_atomics cl_khr_int64_base_atomics cl_khr_int64_extended_a
tomics cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_gl_sharing cl
_ext_atomic_counters_32 cl_amd_device_attribute_query cl_amd_vec3 cl_amd_printf
cl_amd_media_ops cl_amd_popcnt cl_khr_d3d10_sharing cl_khr_dx9_media_sharing cl_
amd_c1x_atomics
        CL_DEVICE_GLOBAL_MEM_CACHE_SIZE:16384
        CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE:64
        CL_DEVICE_GLOBAL_MEM_SIZE:1073741824
        CL_DEVICE_LOCAL_MEM_SIZE:32768
        CL_DEVICE_MAX_CLOCK_FREQUENCY:950
        CL_DEVICE_MAX_COMPUTE_UNITS:16
        CL_DEVICE_MAX_CONSTANT_ARGS:8
        CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE:65536
        CL_DEVICE_MAX_MEM_ALLOC_SIZE:804257792
        CL_DEVICE_MAX_PARAMETER_SIZE:1024
        CL_DEVICE_MAX_WORK_GROUP_SIZE:256
        CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS:3
        CL_DEVICE_MEM_BASE_ADDR_ALIGN:2048

Loaded from archive
Building from binary quark0td_Pitcairn_W64.bin

I want to support nvidia. (amd and so works on the script)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on November 06, 2013, 04:56:01 PM
how can 5870 get the same mh/s as my 7870? im also getting 1.20mh/s
My trick with groestl hash works well for VLIW5, but not for GCN :(

- Error on start "smelter has stopped working"
Debug message. "Error"
Code:
Loaded from archive
Building from binary quark0td_Pitcairn_W64.bin
Seems the same error as with 5970, a crash inside clBuildProgram(). I'm looking into it.
Code:
	logDbg << "Building from binary " << strBinaryFilename << endl;
try
{
WRAPOPENCL::clBuildProgram(program, 1, &paramCreate.device, NULL, NULL, NULL );
logDbg << "Building from binary done: " << strBinaryFilename << endl;
return program;
}
catch(const SMError &err)
{
logErr << "clBuildProgram call failed, error:" << err.what() << endl;
logErr << "Build log:" << endl << SMCL::GetBuildLog(program, paramCreate.device) << endl;
}


I want to support nvidia. (amd and so works on the script)
Not with current Quark price, it's too low :(

How much QRK would it take you to open source this bad boy ?

[serious question] response appreciated.
How much QRK would it take to pass the software to good QA lab? And I'm getting good bug reports for free :)
Regarding Quark mining kernel - it eventually be released, but give me some time to roll out new miner for another coin :)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: ivanlabrie on November 06, 2013, 09:07:59 PM
Mate, couldn't get this to run on dual 7970s using win 8. :(
What settings do you reccomend? Maybe I need to install distributables and whatnot...fresh win 8 install.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: pyromaniac on November 07, 2013, 03:39:20 PM
Mate, couldn't get this to run on dual 7970s using win 8. :(
What settings do you reccomend? Maybe I need to install distributables and whatnot...fresh win 8 install.
I have a same problem with the same card. It's didn't work for me.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: feeleep on November 07, 2013, 03:57:40 PM
tried to run it on ubuntu but got this error:

Code:
Royalty: 1/10
Pool::Start()
Pool::ThreadFunc() started
nPlatforms==1
Platform #0 id:0x7f9ae3ca5ee0
CL_PLATFORM_PROFILE:FULL_PROFILE
CL_PLATFORM_VERSION:OpenCL 1.2 AMD-APP (1084.4)
CL_PLATFORM_NAME:AMD Accelerated Parallel Processing
CL_PLATFORM_VENDOR:Advanced Micro Devices, Inc.
CL_PLATFORM_EXTENSIONS:cl_khr_icd cl_amd_event_callback cl_amd_offline_devices
# of devices: 2
        Device #0 id==0x1eab3a0
        CL_DEVICE_NAME:Cypress
        CL_DEVICE_VENDOR:Advanced Micro Devices, Inc.
        CL_DEVICE_VERSION:OpenCL 1.2 AMD-APP (1084.4)
        CL_DRIVER_VERSION:1084.4
        CL_DEVICE_ADDRESS_BITS:32
        CL_DEVICE_AVAILABLE:1
        CL_DEVICE_COMPILER_AVAILABLE:1
        CL_DEVICE_ENDIAN_LITTLE:1
        CL_DEVICE_ERROR_CORRECTION_SUPPORT:0
        CL_DEVICE_EXTENSIONS:cl_khr_fp64 cl_amd_fp64 cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_gl_sharing cl_ext_atomic_counters_32 cl_amd_device_attribute_query cl_amd_vec3 cl_amd_printf cl_amd_media_ops cl_amd_media_ops2 cl_amd_popcnt
        CL_DEVICE_GLOBAL_MEM_CACHE_SIZE:0
        CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE:0
        CL_DEVICE_GLOBAL_MEM_SIZE:536870912
        CL_DEVICE_LOCAL_MEM_SIZE:32768
        CL_DEVICE_MAX_CLOCK_FREQUENCY:785
        CL_DEVICE_MAX_COMPUTE_UNITS:20
        CL_DEVICE_MAX_CONSTANT_ARGS:8
        CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE:65536
        CL_DEVICE_MAX_MEM_ALLOC_SIZE:536870912
        CL_DEVICE_MAX_PARAMETER_SIZE:1024
        CL_DEVICE_MAX_WORK_GROUP_SIZE:256
        CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS:3
        CL_DEVICE_MEM_BASE_ADDR_ALIGN:2048

No binary found: quark0td_Cypress_W64.bin
Failed to read source file: ./quark0td/kernel/kernelQuark.cl
SummonProgram failed
        Device #1 id==0x1f75600
        CL_DEVICE_NAME:Cypress
        CL_DEVICE_VENDOR:Advanced Micro Devices, Inc.
        CL_DEVICE_VERSION:OpenCL 1.2 AMD-APP (1084.4)
        CL_DRIVER_VERSION:1084.4
        CL_DEVICE_ADDRESS_BITS:32
        CL_DEVICE_AVAILABLE:1
        CL_DEVICE_COMPILER_AVAILABLE:1
        CL_DEVICE_ENDIAN_LITTLE:1
        CL_DEVICE_ERROR_CORRECTION_SUPPORT:0
        CL_DEVICE_EXTENSIONS:cl_khr_fp64 cl_amd_fp64 cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_gl_sharing cl_ext_atomic_counters_32 cl_amd_device_attribute_query cl_amd_vec3 cl_amd_printf cl_amd_media_ops cl_amd_media_ops2 cl_amd_popcnt
        CL_DEVICE_GLOBAL_MEM_CACHE_SIZE:0
        CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE:0
        CL_DEVICE_GLOBAL_MEM_SIZE:536870912
        CL_DEVICE_LOCAL_MEM_SIZE:32768
        CL_DEVICE_MAX_CLOCK_FREQUENCY:785
        CL_DEVICE_MAX_COMPUTE_UNITS:18
        CL_DEVICE_MAX_CONSTANT_ARGS:8
        CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE:65536
        CL_DEVICE_MAX_MEM_ALLOC_SIZE:536870912
        CL_DEVICE_MAX_PARAMETER_SIZE:1024
        CL_DEVICE_MAX_WORK_GROUP_SIZE:256
        CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS:3
        CL_DEVICE_MEM_BASE_ADDR_ALIGN:2048

No binary found: quark0td_Cypress_W64.bin
Failed to read source file: ./quark0td/kernel/kernelQuark.cl
SummonProgram failed
main loop
ThreadHost::Thread() started
ThreadHost::Thread() started
ThreadHost::Thread() unexpected exception:clCreateKernel call failed
ThreadHost::Thread() finished
ThreadHost::Thread() unexpected exception:clCreateKernel call failed
ThreadHost::Thread() finished



Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: csa1234 on November 08, 2013, 03:30:27 AM
any release fix for the ATI 5970? cmon, i dont wanna go with the other miner guy


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Hilux74 on November 08, 2013, 09:01:53 PM
After my last post I am now tending to get eventual freezes on any system with a 7970 in it anywhere from 30 minutes to 8 hours after start.  The 7950s run for days with no issues.

One thing I like about Smelter is that is is obvously much less stressing on teh video cards than running Scrypt miners.  They stay 50-60oC with no additional fans blowing on them.  For me this is great as it is quiter and cooler and my wife doesn't freak out having them running overnight.  So I can scrypt in the day and smelt at night...


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: ivanlabrie on November 08, 2013, 10:58:00 PM
After my last post I am now tending to get eventual freezes on any system with a 7970 in it anywhere from 30 minutes to 8 hours after start.  The 7950s run for days with no issues.

One thing I like about Smelter is that is is obvously much less stressing on teh video cards than running Scrypt miners.  They stay 50-60oC with no additional fans blowing on them.  For me this is great as it is quiter and cooler and my wife doesn't freak out having them running overnight.  So I can scrypt in the day and smelt at night...

Scrypt and smelt! :D

Can you help me out with settings for 7970s? I couldn't get it to run, do I need any extra dependencies or libraries for win 8?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Hilux74 on November 09, 2013, 12:11:55 AM
I have not had to do anything extra to get it running on the 7970s but as I mentioned it does seem prone to freezing after some time on any of my systems that have 1 or more 7970s on them.  The only optional flag commands I use are -g 2.

I don't know if it is the XFX vs PowerColour or Windows8 vs Windows7 but the system I have the most trouble with is Windows8 with a single XFX 7970.  Smelter freezes a lot on it but it always starts up fine.  If I start it running before going to work this system will have always frozen at some point before getting back home.  The Windows7 PowerColour system can usually go 8hrs+ but the few times I have tried to let it run 24hrs/day it will freeze at some point.

What brand of 7970 do you have out of interest?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: ivanlabrie on November 09, 2013, 01:38:21 AM
I have not had to do anything extra to get it running on the 7970s but as I mentioned it does seem prone to freezing after some time on any of my systems that have 1 or more 7970s on them.  The only optional flag commands I use are -g 2.

I don't know if it is the XFX vs PowerColour or Windows8 vs Windows7 but the system I have the most trouble with is Windows8 with a single XFX 7970.  Smelter freezes a lot on it but it always starts up fine.  If I start it running before going to work this system will have always frozen at some point before getting back home.  The Windows7 PowerColour system can usually go 8hrs+ but the few times I have tried to let it run 24hrs/day it will freeze at some point.

What brand of 7970 do you have out of interest?

A friend has two msi 7970 ref pcb, older revisions. 925/1375 stock clocks and driver 13.4 with win 8 64.
I can't get it to start and mine. Maybe my conf is wrong?
Can you post your quarkcoin conf and the smelter cmd?
Thanks! I'll tip ya :p


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: csa1234 on November 09, 2013, 05:48:11 AM
smelter .03 1.20 Mh/s only (config: smelter -o http://127.0.0.1:8770 -u username -p password -w 64 -g 1 -i 1000)

ATI Mobility 5870 with latest ATI BETA driver

http://s8.postimg.org/k8qbyjrv9/smelter.png (http://postimage.org/)
sube (http://postimage.org/index.php?lang=spanish)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: asor on November 15, 2013, 04:00:23 PM
Any chance to add the parameter/argument d like cgminer has to use a specific device?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: pvkpgp on November 21, 2013, 01:08:33 AM
Problem: I run the miner on desktop PC, http://


Failed to read source file: ./quark0td/kernel/kernelQuark.cl
SummonProgram failed
ThreadHost::Thread() unexpected exception:clCreateKernel call failed
Error: curl_easy_perform() failed: Couldn't connect to server


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: csa1234 on November 21, 2013, 02:43:30 AM
this thread is dead


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: nikmal on November 25, 2013, 05:04:23 PM

Hi. When to expect the development of miner? With the growth of the received many users, solo mining there will be no result. Need a miner, working with the pool.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: dE_logics on November 26, 2013, 03:49:35 AM
Closed source Windows malware.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Spoetnik on November 26, 2013, 10:37:10 PM
busted


scam


gpl

yadaddadadada


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on November 27, 2013, 05:26:41 AM
Sorry for abandoning the thread. I have working Protoshares kernel (once profitable but now useless), half-done Primecoin kernel and no time to finish the work and do a new release :(


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Spoetnik on November 27, 2013, 05:51:18 AM
i hear ya man

i worked soooooooo bloody much on my miner mod i got Super burnt out and needed a break
this stuff is exhausting. especially with tech support lol

gl


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Pure-Gold on November 27, 2013, 08:55:51 PM
I'm getting the error:
Quote
Request error:Server report an error, request:{"result":null,"error":{"code":-10,"message":"Quarkcoi
n is downloading blocks..."},"id":null}

https://i.imgur.com/Rr5cJpG.png


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: SpeedDemon13 on November 27, 2013, 11:52:43 PM
Does this work fine for a HD 5870? Does this work both for solo and pools?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: duuuuude on November 27, 2013, 11:58:04 PM
nope solo only, which makes it almost worthless now, it was pretty good while the difficulty was low though.

J


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: SpeedDemon13 on November 28, 2013, 12:42:18 AM
nope solo only, which makes it almost worthless now, it was pretty good while the difficulty was low though.

J

That's kind of sucks. This can be adapted for a pool, if someone wanted to take that challenge on.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Fablio2 on November 28, 2013, 09:08:41 AM
Is it  possible to mine with GPU miner on pool?
What pool works with GPU-miner?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: lemons on November 28, 2013, 02:18:26 PM
Sorry for abandoning the thread. I have working Protoshares kernel (once profitable but now useless), half-done Primecoin kernel and no time to finish the work and do a new release :(


GPU miner for Protoshare / Primecoin ?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: flayway on November 28, 2013, 04:39:58 PM
Working this with GeForce GTX 650 Ti Boost?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Spoetnik on November 28, 2013, 05:59:30 PM
read page 1 guys ;)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Fablio2 on November 29, 2013, 06:09:20 AM
read page 1 guys ;)
SOLO mine works well, but GPU mining on pool doesn't work. If You know something about mining on pool - please write, but we don't need comments like this  - "read page 1 guys".


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: ||bit on November 30, 2013, 02:06:49 PM
I finally got rid from the last pieces of GPL'ed code in my own miner and can now release it to the public. This miner is not free, a royalty of 1/8 (12.5%) is deducted from every mined block. (Coinbase transaction have 2 outputs, so I get my fee at exactly the same moment you'll get your coins).

Download link:https://mega.co.nz/#!QMMEFBYY!AgH4OGrKaRHkRjiVfVXXzxBHbTIlgdD5o3ak2VFuU78

Edit quarkcoin.conf (or Offering.conf, or securecoin.conf) file of your wallet to enable solo-mining, put your own username and password there:
listen=1
rpcallowip=127.0.0.1
rpcuser=username
rpcpassword=password
rpcport=8772
server=1

Edit sm.cmd from downloaded archive, put your own username, password and wallet address there:
smelter -o http://127.0.0.1:8772 -u username -p password -a QNiGvoYctyMwzV1ZjNbjhEoKdQVzFKsmVw

This is pre-alpha software, expect all kinds of bugs to be found, don't hesitate to report it here!
NVidia and old/rare AMD cards are not supported. Please, give me some time to iron out bugs :)

Where is this quarkcoin.conf file located exactly? Searching the computer finds nothing. Nothing in the wallet data folder or the folder that launches the wallet executable.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Wubbllez on December 01, 2013, 03:00:13 AM
what card gets the best hashes?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: macmac__ on December 02, 2013, 05:35:52 AM
/snip/

Where is this quarkcoin.conf file located exactly? Searching the computer finds nothing. Nothing in the wallet data folder or the folder that launches the wallet executable.

It does not exist by default, you must create it at %appdata%/Quarkcoin/quarkcoin.conf (wallet data folder)

what card gets the best hashes?

Radeon 5000 and 6000 series cards run great. The best single die gpu would be 6970, I think


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: zoro on December 02, 2013, 06:25:03 AM
2x5870 = 4MH
good or bad?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: BitcoinBA on December 03, 2013, 03:42:46 PM
Hi guys,

just wanted to give it a try but keep getting this message:

https://i.imgur.com/r66vGeh.png

NVIDIA GeForce GT 220M (old laptop)

Any ideas?

Thank you!



Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: macmac__ on December 04, 2013, 12:27:39 AM
2x5870 = 4MH
good or bad?

That's really nice!
It equates to around 73 quarks per day and 14 SRCs at current difficulty. (Minus the 10% royalty)

Hi guys,

just wanted to give it a try but keep getting this message:

https://i.imgur.com/r66vGeh.png

NVIDIA GeForce GT 220M (old laptop)

Any ideas?

Thank you!

You should've read the 1st post completely


NVidia and old/rare AMD cards are not supported.



Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Iced on December 04, 2013, 01:37:23 AM
Posting to follow up this thread :)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: busoni on December 05, 2013, 01:30:29 AM
This seems to work pretty well. My 5850s get about 2.5MH/s each. If the reported hash rate is accurate, then SecureCoin is the most profitable coin to mine with GPUs now. Not sure about the reality yet; I've only found one block, and it has been about 7 hours. With my total of 18MH/s, I should be getting a block about every 2.7 hours. We shall see.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Remember remember the 5th of November on December 05, 2013, 04:47:09 AM
The ability to specify which gpu to mine would be great..I use my 5870 for normal activities and my second card for mining.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: fyubr on December 05, 2013, 08:58:54 AM
I am getting

https://i.imgur.com/hCVlg5B.png (http://imgur.com/hCVlg5B)

Created the config file and everything


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: busoni on December 05, 2013, 09:43:59 PM
I am getting

...

Created the config file and everything

Looks like you're using an old version. The newest version (I think) is here: http://rghost.net/49940688

(See smolen's post a couple pages back if you don't trust me)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: crazyearner on December 05, 2013, 10:18:59 PM
Help needed. On the latest verison I see that -I is set to 200 is this a typeo or actualy ment to be 200


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: verloren on December 06, 2013, 03:39:36 AM
Help needed. On the latest verison I see that -I is set to 200 is this a typeo or actualy ment to be 200
Meant to be 200. The intensity scaling for Smelter has a bigger range than cgminer or guiminer.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: gizzig on December 06, 2013, 04:39:05 PM
Any idea how to use a pool?
In "solo" mode is just impossible to get a block!
perhaps using a proxy?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Pk9499 on December 07, 2013, 01:00:51 AM
You're not the only one - I've not managed to overcome the "couldn't connect to server" issue.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: tucksmcgucks on December 07, 2013, 07:32:22 AM
Looks like someone beat the OP to the catch on a QRK GPU miner that connects to a pool!

http://quarkcoin.tumblr.com/ (http://quarkcoin.tumblr.com/)

http://media.tumblr.com/b6587b360e66fb135e70ba7f4e52d42c/tumblr_inline_mxc4l3C4CH1s4bsfk.png

http://media.tumblr.com/be79715796dff543e4bbc056869c6084/tumblr_inline_mxc4ldGK6Q1s4bsfk.png

Download link:  http://rghost.net/50746534 (http://rghost.net/50746534)

I just found this tonight, and it appears to be very recent. Not sure if I trust it yet, however....


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: rmhuntley on December 07, 2013, 07:38:17 AM
I'll try it on a crashbox


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: rmhuntley on December 07, 2013, 08:22:23 AM
ok, I'm running it and it appears to be mining. though I don't see any activity on qrk.coinmine.pl. I"ll let it run overnight and see what it does.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Tenchi on December 07, 2013, 08:27:19 AM
the GPU miner from ScarletRose only detects the Intel HD 4000 GPU of my CPU and not my Radeon 7850... anyone knows how to change that?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: rmhuntley on December 07, 2013, 08:33:26 AM
how do you tell what it finds?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Tenchi on December 07, 2013, 08:41:25 AM
when you start the program it writes:
#Detecting GPU....


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: rmhuntley on December 07, 2013, 09:26:18 AM
hmm, it doesn't list anything when it does that for me. just says detecting gpu[]


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: hobbster on December 07, 2013, 10:23:54 AM
miner found by tucksmcgucks works and reports findings (yay !!!) but nothing appears in http://www.coinmine.pl/qrk??

Anyone got QRK from this?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Pk9499 on December 07, 2013, 12:41:36 PM


Re: ScarletRose miner - it does show a hash rate of about ~700-800 and has activity but AMD Catalyst shows 0% GPU activity whilst it's running AND the hashrate on my Quark CPU miner seems to more than halve.

No other GPUs, on board or otherwise in this system.

Oh and qcore64.dll was still active in Task Manager after closing the ScarletRose miner.... no thanks.  I wish I could get Smelter working but I still have the "couldn't connect to server" issue.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: MBTY on December 07, 2013, 01:38:56 PM
How long should I wait to mine quark in solo mode?
Code:
1:1262 A:0 R:0 HW:0 Speed: 1.47MH/s 5s: 1.46MH/s

Sb.bat is
Code:
smelter -o http://127.0.0.1:8772 -u username -p password -a QPuJArgxtDD997qUmkxLehRhxf7QST3SY8 -w 64 -g 2 -i 200


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: rmhuntley on December 07, 2013, 02:14:44 PM


Re: ScarletRose miner - it does show a hash rate of about ~700-800 and has activity but AMD Catalyst shows 0% GPU activity whilst it's running AND the hashrate on my Quark CPU miner seems to more than halve.

No other GPUs, on board or otherwise in this system.

Oh and qcore64.dll was still active in Task Manager after closing the ScarletRose miner.... no thanks.  I wish I could get Smelter working but I still have the "couldn't connect to server" issue.

yup, exact same here. it's gone


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: macmac__ on December 07, 2013, 06:23:10 PM
Looks like someone beat the OP to the catch on a QRK GPU miner that connects to a pool!

Download link:  http://rghost.net/50746534 (http://rghost.net/50746534)

I just found this tonight, and it appears to be very recent. Not sure if I trust it yet, however....
as others have found out too:

SCAM ALERT

1. Libsnd is a email tool.
2. Qminer gets detected as a backdoor
3. You can give it any username/password combo you want, it doesn't care of authenticity
4. Fake stats
  1) No gpu usage at all, cards power consumption same as in idle
  2) qcore uses cpu to mine something, or just to cover it's steps, but the shown khash/s doesn't correlate in any way to either cpu, gpu or integrated gpu speed.
5. Libsnd starts to send data to a russian email server (smtp.yandex.ru)

So if you've run this, on a machine with a wallets, I suggest you to move coins away from your current wallets!
Your coinmine passwords are compromised too, so change them as soon as the site comes back.
Some have fallen to this, atleast the account shown in miner window, if it's legit, has gotten some balance to it :/
http://176.221.46.81/address/QWu8maYVxDAmLG9VUyq7kdRQXLP8jksTNM (http://176.221.46.81/address/QWu8maYVxDAmLG9VUyq7kdRQXLP8jksTNM)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: hobbster on December 07, 2013, 08:23:39 PM
Hello,

i downloaded and used the scarletrose-thing around 11:00. I just synced my Quarkcoin Wallet and found a transaction to QXVK7V3vEEMPe8DaVTyqcSbDJ6WKGzcPHS
I just wanted to start with a crypto and now lost my whole balance

Status: 1177 Bestätigungen
Datum: 07.12.2013 11:58
An: QXVK7V3vEEMPe8DaVTyqcSbDJ6WKGzcPHS
Belastung: -17.9964 QRK
Nettobetrag: -17.9964 QRK
Transaktions-ID: 4364a8b239fa4e0aae34afc0727e8c450182996c6f736a9b646195935e945aa9

I could kick myself :( I just wanted to trade something around, now my trust and work is useless

SCAM :/


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Tenchi on December 07, 2013, 08:27:55 PM
have used it to but no transactions so far. have you encrypted your wallet? because I have.



Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: hobbster on December 07, 2013, 08:36:56 PM
No,

i just started with cryptocurrencys 6 days ago. I just mined with the cpu of my laptop

Anyone know how to remove this? Maybe macmac__?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: rmhuntley on December 07, 2013, 10:01:38 PM
luckily, I had no quarks to hijack


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: hobbster on December 07, 2013, 10:06:32 PM
did you have other unencrypted wallets?

Was something stolen from them?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: macmac__ on December 07, 2013, 10:13:49 PM
Sorry for you loss  :(
I just finished analyzing the app' doings and atleast in my crapbox it did the following,
1) Grabbed the dummy wallets, (bitcoin, litecoin, quark)
2) Sent them to russia
3) Started mining with the cpu and sent the shares to a kimisufi server.

It did not create any files or install watchers or keyloggers so you should (I take no responsibility thou) be safe when you delete the files and create a new wallet.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: macmac__ on December 07, 2013, 10:29:05 PM
Did more research and the server that it sents the the shares is this: ks211165.kimsufi.com:6010
and when you access you get redirected to http://www.coinmine.pl/yacp/
So he is mining YaCoins...
If he is the miner with highest hashrate in the pool he has a power of three 2600ks in his control.

Here is a capture of the program doing it's dirty work, cought it red handed :)
https://i.imgur.com/RKYQlrol.png (http://imgur.com/RKYQlro)
and here it's getting job from pool:
https://i.imgur.com/Gpnadw0l.png (http://imgur.com/Gpnadw0)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: theprofileth on December 07, 2013, 10:52:15 PM
http://quarkcoin.tumblr.com/
^^^^^^^^^^^^^^^^^
this motherfucker don't download, pay or use anything from them I just had 880 quark stolen from my wallet  :'(
and all sent to QWu8maYVxDAmLG9VUyq7kdRQXLP8jksTNM which is the donation address for that person  >:( fucking bullshit


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: macmac__ on December 07, 2013, 11:08:20 PM
You lost the most in this pulloff :/
So far he has gotten 1,6k quarks of this and who knows how many bitcoins, litecoins and whatever coins...
Block explorer:
http://176.221.46.81/address/QWu8maYVxDAmLG9VUyq7kdRQXLP8jksTNM (http://176.221.46.81/address/QWu8maYVxDAmLG9VUyq7kdRQXLP8jksTNM)

[Yeah, this is a fair bit OT but... (Speaking words of wisdom, let it be / Let it be, let it be / Let it be, let it be / Whisper words of wisdom / Let it be)]

E: His bitcoin donation address is empty so far, he hasn't moved anything there yet
E2: Simple googling with that qrk address shows us that he has posted the same shit in some russian forums, good thing is that it didn't catch a flame and burn everyone with no encryption


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: hobbster on December 07, 2013, 11:35:29 PM
macmac__ you are awesome!

Although i and others lost something, i am somewhat happy for your posts. Thank you for your Work!

And you are right, its lost. It will be the best to arrange with it and look forward. Luckily deleting is enough, and luckily i did not have any bitcoin or litecoin, what i had was my main Treasure, lol

Keep on being awesome macmac__!




BTW: virustotal says Backdoor.Win32.Hupigon (v)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: theprofileth on December 08, 2013, 12:19:55 AM
Well from the logs in the pictures above I thought it had corrupted the files
C:\Windows\SysWOW64\tzres.dll
C:\Windows\System32\WSHTCPIP.DLL
So I am hesitant to say just deleting is enough  :'(
moral of the story is lock all your wallets, quarks were the only one that I have much in that wasn't locked and now well doesnt have anything


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: TBoneLouie on December 08, 2013, 06:35:28 AM
It's a shame about the ScarletRose scam.  I know we were all looking for something that was (at least for now) too good to be true.  I imagine smolen is probably snickering at us all right now  ;)

A question about smelter, then, specifically worksize.  When I am pool mining with scrypt, I notice that when I raise my worksize the pool server notes a higher share rate even though my hashrate is less than if I lower my worksize.  Is the same true with solo mining for QRK or SRC with smelter? I notice a hashrate drop of 40% when I increase my WS from 128 -> 256, but will this translate to a 40% drop in block discovery rate or does the worksize compensate for that?

I have managed to find 1 block of SRC with smelter, so I am definitely looking forward to future development of this project.  Keep up the good work.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: hobbster on December 08, 2013, 07:29:50 AM
Well from the logs in the pictures above I thought it had corrupted the files
C:\Windows\SysWOW64\tzres.dll
C:\Windows\System32\WSHTCPIP.DLL

Both files have a "last changed" Date in 2009 and 2010, so there could not have been a modification or am i wrong?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: macmac__ on December 08, 2013, 11:06:50 AM
Well from the logs in the pictures above I thought it had corrupted the files
C:\Windows\SysWOW64\tzres.dll
C:\Windows\System32\WSHTCPIP.DLL
So I am hesitant to say just deleting is enough  :'(
moral of the story is lock all your wallets, quarks were the only one that I have much in that wasn't locked and now well doesnt have anything

Nope, it doesn't corrupt the files,
it just opens them to access the dll's features.
WSHTCPIP.dll is a WinSock Helper plugin, used in networking.
Tzres.dll is used to manage timezones.

Changing files last modified date back to what it was before is easy.
Attribute changer 7 (http://www.petges.lu/home/)

E: Here are logs from CGminer doing the same things to the dlls
https://i.imgur.com/CvoeqUIl.png (http://imgur.com/CvoeqUI.png)
https://i.imgur.com/T4CGshEl.png (http://imgur.com/T4CGshE.png)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: hobbster on December 08, 2013, 12:16:16 PM
again ty :)

i think about crypting my wallets and put testpayments from the pools before getting all from the pool


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Pk9499 on December 09, 2013, 10:39:39 AM
Is there a specific location I should be saving Smelter and its files to in order to avoid the "couldn't connect to server" issue?  Should it be in with the Quark QT wallet or something?

btw - I didn't get stung by that nasty Quark Stealing fake miner even though I downloaded it. I guess I'd deleted its files before it took the opportunity to steal from my formerly unencrypted wallet.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on December 09, 2013, 01:28:34 PM
I imagine smolen is probably snickering at us all right now  ;)
Smolen is pulling his hair being out of all recent events on altcrypto world :)

A question about smelter, then, specifically worksize.  When I am pool mining with scrypt, I notice that when I raise my worksize the pool server notes a higher share rate even though my hashrate is less than if I lower my worksize.  Is the same true with solo mining for QRK or SRC with smelter? I notice a hashrate drop of 40% when I increase my WS from 128 -> 256, but will this translate to a 40% drop in block discovery rate or does the worksize compensate for that?
The best indicator is reported hashrate, adjust your settings for the best hashrate, there is no "compensation" or any other accounting tricks. Quark kernel uses too much registers, so increasing worksize lead to so-called "register spill" and GPU power is wasted on useless memory <-> register file transfers.

The ability to specify which gpu to mine would be great..I use my 5870 for normal activities and my second card for mining.
Already in my TODO list :)

Help needed. On the latest verison I see that -I is set to 200 is this a typeo or actualy ment to be 200
Meant to be 200. The intensity scaling for Smelter has a bigger range than cgminer or guiminer.
Intensity value is time for a single clEnqueueNDRangeKernel call in milliseconds. 200 ms is a good value for dedicated mining PC, but you'd lower it to gain better desktop interactivity.

Any idea how to use a pool?
Currently Smelter is for solo mining only, don't expect pool server soon :(

Downloaded the latest version of smelter, edited the sm file, and get "couldn't connect to server"
Try adding "--debug" option, may be there will be a hint in log messages. Error diagnostics in Smelter is rudimentary, I know :(


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: verloren on December 09, 2013, 02:13:09 PM
Possible to get a version for the Hawaii GPUs?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: STT on December 10, 2013, 03:20:15 AM
4500 - I shouldnt bother trying to use this on such a lowly gpu I guess


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: danbi on December 10, 2013, 07:08:44 PM
Tried both 0.3 and 0.3a and they both quit with

Failed to read source file: ./quark0td/kernel/kernelQuark.cl
SummonProgram failed
ThreadHost::Thread() unexpected exception:clCreateKernel call failed



Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: shark255 on December 11, 2013, 05:45:39 PM
there is no linux version of smolens gpu miner - am i right?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: CoinBuzz on December 11, 2013, 10:10:40 PM
how much is it's performance for example for a 7950 ?

How much better than pure cpu ?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: macmac__ on December 11, 2013, 10:29:43 PM
Tried both 0.3 and 0.3a and they both quit with

Failed to read source file: ./quark0td/kernel/kernelQuark.cl
SummonProgram failed
ThreadHost::Thread() unexpected exception:clCreateKernel call failed



Try 0.2, it has the same features and speed

there is no linux version of smolens gpu miner - am i right?

yes, there is no common build available

how much is it's performance for example for a 7950 ?

How much better than pure cpu ?

My sapphire 7950 used to mine around 1,45Mhash/s at 1050/1400 clocks at 1.1v
3570k running at 4,2GHz got to 750khash/s

Mining SRC or QRK is pretty much waste of time considering network speeds and block rewards, if one without botnet wants those, best way would to buy them and mine something more profitable´or usable (like curecoin ^^)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: FSB on December 12, 2013, 05:11:35 AM
After 2-3 hours miner work, speed suddenly drops to "0". GPU load is also 0%. Helps only restart miner. What could be the problem?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: roganbear on December 13, 2013, 04:16:31 AM
Really hoping pool support is in the works  :)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Pk9499 on December 13, 2013, 11:41:42 AM
I really want to get this working and I've tried so many times and failed due to the "Cannot connect to server issue". I've decided to delete everything and start again, hopefully someone can tell me where I'm going wrong!

1. Downloaded Smelter 0.3a from http://rghost.net/49940688
2. Found the folder where my Quark QT wallet is installed and extracted the 3 files from the zip into this folder:
  • smd.cmd
  • smelter
  • smelter.exe
3. In the same folder I created quarkcoin.conf, Offering.conf and securecoin.conf and added the following information
Quote
listen=1
rpcallowip=127.0.0.1
rpcuser=username
rpcpassword=password
rpcport=8772
server=1
4. Checked the smd.cmd file to make sure it had the same username/password. I didn't alter this file, even left the original wallet file is as this is just a test.
5. Double clicked smd.cmd.... Smelter opens.... Error: curl_easy_perform() failed: Couldn't connect to server

http://i43.tinypic.com/2d0ynt4.png

HELP! PLEASE! I'm going insane

6. Added --debug to the smd.cmd file and ran again and got the following:

http://i40.tinypic.com/2hz242v.png


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: verloren on December 13, 2013, 02:26:48 PM
I really want to get this working and I've tried so many times and failed due to the "Cannot connect to server issue". I've decided to delete everything and start again, hopefully someone can tell me where I'm going wrong!

3. In the same folder I created quarkcoin.conf, Offering.conf and securecoin.conf and added the following information
Quote
listen=1
rpcallowip=127.0.0.1
rpcuser=username
rpcpassword=password
rpcport=8772
server=1
4. Checked the smd.cmd file to make sure it had the same username/password. I didn't alter this file, even left the original wallet file is as this is just a test.
5. Double clicked smd.cmd.... Smelter opens.... Error: curl_easy_perform() failed: Couldn't connect to server


quarkcoin.conf goes in C:\Users\[USERNAME]\AppData\Roaming\Quarkcoin


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Pk9499 on December 13, 2013, 07:30:42 PM
Thanks, moved the file to that folder and I got the same problem - Cannot connect to server.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: roganbear on December 13, 2013, 07:48:05 PM
Thanks, moved the file to that folder and I got the same problem - Cannot connect to server.

Try changing the port in your cmd file to the one you have in your .conf file.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Hilux74 on December 13, 2013, 08:23:17 PM
I really want to get this working and I've tried so many times and failed due to the "Cannot connect to server issue". I've decided to delete everything and start again, hopefully someone can tell me where I'm going wrong!

1. Downloaded Smelter 0.3a from http://rghost.net/49940688
2. Found the folder where my Quark QT wallet is installed and extracted the 3 files from the zip into this folder:
  • smd.cmd
  • smelter
  • smelter.exe
3. In the same folder I created quarkcoin.conf, Offering.conf and securecoin.conf and added the following information
Quote
listen=1
rpcallowip=127.0.0.1
rpcuser=username
rpcpassword=password
rpcport=8772
server=1
4. Checked the smd.cmd file to make sure it had the same username/password. I didn't alter this file, even left the original wallet file is as this is just a test.
5. Double clicked smd.cmd.... Smelter opens.... Error: curl_easy_perform() failed: Couldn't connect to server

http://i43.tinypic.com/2d0ynt4.png

HELP! PLEASE! I'm going insane

6. Added --debug to the smd.cmd file and ran again and got the following:

http://i40.tinypic.com/2hz242v.png


You have your Quark wallet open right?  It has to be running and up to date. :)

Also your smd.cmd file shows 8385 as port while your config files shows 8772.  They have to match to connect.

Also your .conf files should be in the respective coins appdata folder not in teh smelter folder.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: MrMirkin on December 13, 2013, 08:25:48 PM
Tried both 0.3 and 0.3a and they both quit with

Failed to read source file: ./quark0td/kernel/kernelQuark.cl
SummonProgram failed
ThreadHost::Thread() unexpected exception:clCreateKernel call failed



Try 0.2, it has the same features and speed

there is no linux version of smolens gpu miner - am i right?

yes, there is no common build available

how much is it's performance for example for a 7950 ?

How much better than pure cpu ?

My sapphire 7950 used to mine around 1,45Mhash/s at 1050/1400 clocks at 1.1v
3570k running at 4,2GHz got to 750khash/s

Mining SRC or QRK is pretty much waste of time considering network speeds and block rewards, if one without botnet wants those, best way would to buy them and mine something more profitable´or usable (like curecoin ^^)


So what kind rewards on average do you guys get?  Average time to find a block?  Im interested, but seems the rewards is pretty low atm?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: LiteMine on December 13, 2013, 09:35:49 PM
Will this fire up all GPU's by default, or only by a particular command?

Thank you


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: TheMightyX on December 13, 2013, 10:25:41 PM
Hey Smolen,
Thanks for your work on these miners.
I'm not sure how I feel about the 1/10th reward share at this time (as I'm not able to run the miner), but in theory I think its a viable business model.
That being said I have a decent Radeon 4850 and a Nvideo 280 GTX. Not new by any standards but decent ass cards.

Unfortunately I'm getting the errors:
Failed to read source file: ./quark0td/kernel/kernelQuark.cl
SummonProgram failed
ThreadHost::Thread() unexpected exception:clCreateKernel call failed

Any chance of getting this to run on my rigs or is it a lost cause?
I've tried v2 and v3.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Hilux74 on December 13, 2013, 10:45:03 PM
Hey Smolen,
Thanks for your work on these miners.
I'm not sure how I feel about the 1/10th reward share at this time (as I'm not able to run the miner), but in theory I think its a viable business model.
That being said I have a decent Radeon 4850 and a Nvideo 280 GTX. Not new by any standards but decent ass cards.

Unfortunately I'm getting the errors:
Failed to read source file: ./quark0td/kernel/kernelQuark.cl
SummonProgram failed
ThreadHost::Thread() unexpected exception:clCreateKernel call failed

Any chance of getting this to run on my rigs or is it a lost cause?
I've tried v2 and v3.

page 1 post 1


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: TheMightyX on December 13, 2013, 10:59:27 PM
Hey Smolen,
Thanks for your work on these miners.
I'm not sure how I feel about the 1/10th reward share at this time (as I'm not able to run the miner), but in theory I think its a viable business model.
That being said I have a decent Radeon 4850 and a Nvideo 280 GTX. Not new by any standards but decent ass cards.

Unfortunately I'm getting the errors:
Failed to read source file: ./quark0td/kernel/kernelQuark.cl
SummonProgram failed
ThreadHost::Thread() unexpected exception:clCreateKernel call failed

Any chance of getting this to run on my rigs or is it a lost cause?
I've tried v2 and v3.

page 1 post 1
Not helpful but yes, I can read, no nvidia support. But one of my cards is radeon.
Also I didn't mention the nvidia gets a different error:
http://i44.tinypic.com/6tgxhl.jpg


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Pk9499 on December 13, 2013, 11:39:58 PM
FIXED!! Thank you guys, I love you and I want to have your children xx

EDIT: Here's my rate on a 5830. Makes the computer laggy as hell, typing this was painful, but I guess these settings will do for overnight mining.  Now if I only knew what 1: A: R: and HW: meant!

Code:
F:\quarkcoin083r6win>smelter -o http://127.0.0.1:8385 -u username -p password -w
 64 -g 1 -i 200 -a XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
smelter v0.3 (c) Smolen
Royalty: 1/10
1:0 A:0 R:0 HW:0 Speed: 1.58MH/s 5s: 1.86MH/s
1:0 A:0 R:0 HW:0 Speed: 1.72MH/s 5s: 1.88MH/s
1:0 A:0 R:0 HW:0 Speed: 1.78MH/s 5s: 1.89MH/s
1:0 A:0 R:0 HW:0 Speed: 1.81MH/s 5s: 1.91MH/s
1:0 A:0 R:0 HW:0 Speed: 1.81MH/s 5s: 1.84MH/s
1:1 A:0 R:0 HW:0 Speed: 1.83MH/s 5s: 1.90MH/s
1:2 A:0 R:0 HW:0 Speed: 1.85MH/s 5s: 1.96MH/s
1:2 A:0 R:0 HW:0 Speed: 1.85MH/s 5s: 1.89MH/s
1:2 A:0 R:0 HW:0 Speed: 1.86MH/s 5s: 1.89MH/s
1:3 A:0 R:0 HW:0 Speed: 1.85MH/s 5s: 1.85MH/s
1:4 A:0 R:0 HW:0 Speed: 1.86MH/s 5s: 1.89MH/s
1:4 A:0 R:0 HW:0 Speed: 1.86MH/s 5s: 1.89MH/s
1:4 A:0 R:0 HW:0 Speed: 1.87MH/s 5s: 1.96MH/s
1:4 A:0 R:0 HW:0 Speed: 1.87MH/s 5s: 1.89MH/s
1:4 A:0 R:0 HW:0 Speed: 1.87MH/s 5s: 1.86MH/s
1:5 A:0 R:0 HW:0 Speed: 1.87MH/s 5s: 1.86MH/s
1:5 A:0 R:0 HW:0 Speed: 1.87MH/s 5s: 1.90MH/s
1:7 A:0 R:0 HW:0 Speed: 1.87MH/s 5s: 1.88MH/s
1:8 A:0 R:0 HW:0 Speed: 1.87MH/s 5s: 1.89MH/s
1:9 A:0 R:0 HW:0 Speed: 1.87MH/s 5s: 1.90MH/s
1:10 A:0 R:0 HW:0 Speed: 1.88MH/s 5s: 1.91MH/s
1:11 A:0 R:0 HW:0 Speed: 1.88MH/s 5s: 1.90MH/s


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Hilux74 on December 14, 2013, 12:30:18 AM
A= Accepted (ie you solved a block ding ding winner winner chicken dinner!!)
R= Rejected (ie you solved a block but someone else did faster than you...doh!)
HW = Hardware Errors (do not want to see this change from 0)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: verloren on December 14, 2013, 03:39:56 AM
Hey Smolen,
Thanks for your work on these miners.
I'm not sure how I feel about the 1/10th reward share at this time (as I'm not able to run the miner), but in theory I think its a viable business model.
That being said I have a decent Radeon 4850 and a Nvideo 280 GTX. Not new by any standards but decent ass cards.

Unfortunately I'm getting the errors:
Failed to read source file: ./quark0td/kernel/kernelQuark.cl
SummonProgram failed
ThreadHost::Thread() unexpected exception:clCreateKernel call failed

Any chance of getting this to run on my rigs or is it a lost cause?
I've tried v2 and v3.
Certain Radeon series don't work. Oldest reported working GPU is a 58xx.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: TheMightyX on December 14, 2013, 05:40:33 AM
Hey Smolen,
Thanks for your work on these miners.
I'm not sure how I feel about the 1/10th reward share at this time (as I'm not able to run the miner), but in theory I think its a viable business model.
That being said I have a decent Radeon 4850 and a Nvideo 280 GTX. Not new by any standards but decent ass cards.

Unfortunately I'm getting the errors:
Failed to read source file: ./quark0td/kernel/kernelQuark.cl
SummonProgram failed
ThreadHost::Thread() unexpected exception:clCreateKernel call failed

Any chance of getting this to run on my rigs or is it a lost cause?
I've tried v2 and v3.
Certain Radeon series don't work. Oldest reported working GPU is a 58xx.

Ahh thank you very much for that info.
That should be added to the OP.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Pk9499 on December 14, 2013, 09:22:46 AM
Thanks Hilux74 :)

....10 hours after I first got it to work.....

Code:
1:3554 A:0 R:0 HW:0 Speed: 1.78MH/s 5s: 1.88MH/s

Aww man, I was expecting to be rolling in Quarks now!  Is the effort of this cumulative in some way, ie if I switch it off now will I have lost some progress?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Hilux74 on December 14, 2013, 09:34:35 AM
Thanks Hilux74 :)

....10 hours after I first got it to work.....

Code:
1:3554 A:0 R:0 HW:0 Speed: 1.78MH/s 5s: 1.88MH/s

Aww man, I was expecting to be rolling in Quarks now!  Is the effort of this cumulative in some way, ie if I switch it off now will I have lost some progress?

Very hard to get solo Quark or SecureCoin blocks now.  Best use for Smelter on a single GPU now is Cthulu or Frozen and hope one of them gets worth something...hopefully Cthulu.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Pk9499 on December 14, 2013, 01:20:51 PM
Thanks Hilux, you rock.  I hope someone creates a QRK pool GPU miner soon though I guess Smolen isn't too motivated as she/he might lose their cut that they skim off at the moment.

I'd never heard of Cthulu or Frozen crypto coins before. I think I'll leave Smelter running on Quark and just hope I'm lucky - just under 2MHs doesn't seem too bad.  How many million (!) QRK could I expect to receive if I found a block?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: ptraf on December 15, 2013, 09:15:58 PM
Please add the support for graphics cards Hawaii ( Radeon R290, 290X)
Now when you run any version gives an error

Failed to read source file: ./quark0td/kernel/kernelQuark.cl
SummonProgram failed
ThreadHost::Thread() unexpected exception:clCreateKernel call failed


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: busoni on December 16, 2013, 09:04:45 PM

Certain Radeon series don't work. Oldest reported working GPU is a 58xx.

I'm not sure if they're older, but I have several 5750s mining with smelter, and they work very well.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Fletch on December 16, 2013, 09:36:03 PM
I'm not sure if they're older, but I have several 5750s mining with smelter, and they work very well.
What kind of hashrates are you getting? Solving any blocks?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: busoni on December 17, 2013, 12:57:08 AM
I'm not sure if they're older, but I have several 5750s mining with smelter, and they work very well.
What kind of hashrates are you getting? Solving any blocks?

My 5750s get about 1.38MH/s each; my 5850s get about 2.5MH/s each. (I overclock them.)

All my cards together amount to about 18MH/s, and I find plenty of blocks--about what I should according to the estimates on pools. Of course, there is a huge amount of random variance in solo mining. Some days I find twice as many as I should, other days I find just one.

It is still the most profitable use of these cards, but that may change soon, as the price drops and the difficulty rises.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Pk9499 on December 17, 2013, 09:28:48 AM
I'm running a 5830 and get ~1.8Mh/s and have been running it overnight every night for about 5 nights. I found my first block last night and got 14.4QRKS :)

I'm thinking that I should try and overclock my card. It's currently at GPU 825MHz Memory 1025MHz running at 65 degrees. I'll have a play around and report back.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Fletch on December 17, 2013, 09:35:09 AM
I'm running a 5830 and get ~1.8Mh/s and have been running it overnight every night for about 5 nights. I found my first block last night and got 14.4QRKS :)
You'd get a lot more CPU-mining with a pool. You could then use the GPU to mine litecoin or any other scrypt based crypto.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Pk9499 on December 17, 2013, 11:35:57 AM
I have my CPU, i7 920, mining 24/7 at 250KH/s with http://qrk.mine-pool.net p2p.  I was mining at http://www.coinmine.pl/qrk/index.php but changed over.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: STT on December 18, 2013, 02:37:23 AM
Does cpu use less watts then a gpu, my guess is a i7 is similar to a 7950


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: ptraf on December 18, 2013, 12:48:12 PM
Smelter
when will the new version? supporting hawaii ???


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: rahlquist on December 18, 2013, 06:24:31 PM
Certain Radeon series don't work. Oldest reported working GPU is a 58xx.
My 5770 worked ;)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Pk9499 on December 19, 2013, 10:03:56 AM
Ooo I came down this morning to see what Smelter has had two blocks accepted over night. Easily a personal best for me. I saw the Quarkcoin QT wallet system tray note flash up with a transaction but unfortunately it vanished as soon as I moved my mouse. Looking in the transaction history of the wallet shows no transactions though  >:(

I checked my cmd file and the wallet address is correct. I closed and reopened my Quark wallet and it claims to be up to date. Where'd my QRKs go :( ?

http://i39.tinypic.com/30jn4go.png



Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: picbb1 on December 19, 2013, 12:24:49 PM
Ooo I came down this morning to see what Smelter has had two blocks accepted over night. Easily a personal best for me. I saw the Quarkcoin QT wallet system tray note flash up with a transaction but unfortunately it vanished as soon as I moved my mouse. Looking in the transaction history of the wallet shows no transactions though  >:(

I checked my cmd file and the wallet address is correct. I closed and reopened my Quark wallet and it claims to be up to date. Where'd my QRKs go :( ?

http://i39.tinypic.com/30jn4go.png


+


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: theprofileth on December 20, 2013, 02:48:15 AM
Those my friend, are called orphans, they suck just like Quark.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Pk9499 on December 23, 2013, 08:37:03 AM
Well that sucks!

Went away for about 36 hours, dropped the intensity slightly and left Smelter running.  Pff!

http://i44.tinypic.com/2v1mfdt.jpg


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: lonesoul on December 23, 2013, 11:09:18 AM
not quite sure what im doing wrong here but it would appear that my cards want to mine at 20GH-70GH for 3 attempts then the miner crashes.

it seems like something is wrong due to getting such high rates!

has anyone discovered this?  (its almost like when you forget to include the --scrypt when mining with cgminer)

any help would be great thank you :-)

picture of the error
 http://s21.postimg.org/d1wee9pt3/crash.png


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: NUFCrichard on December 23, 2013, 11:39:16 AM
So is GPU Mining actually better than CPU mining for quarks? I haven't seen any great sucess stories yet.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Shadow_Runner on December 23, 2013, 11:46:07 AM
Please add choose second videocard option like in CGMiner, for people who use GeForce for games and Radeon for mining.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: hud on December 23, 2013, 04:35:24 PM

installation in ubuntu help.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: casper77 on December 24, 2013, 03:33:33 AM
I don't understand - if smelter could mine solo to adress 127.0.0.1, why its could't mine at any other one ? such as adress of some pool ?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: busoni on December 25, 2013, 07:44:43 PM
So is GPU Mining actually better than CPU mining for quarks? I haven't seen any great sucess stories yet.

Yes, it is much better if you have 5xxx cards.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Pk9499 on December 27, 2013, 09:56:55 AM
Got up to 3500 submissions overnight on my 5830 with nothing accepted :(  5xxx aren't that good!


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: subhead on December 27, 2013, 09:17:04 PM
i can´t get this miner running with my r9 290. any advices?

error v2:
Code:
smelter v0.2 (c) Smolen
Royalty: 1/10
Failed to read source file: ./quark0td/kernelQuark.cl
SummonProgram failed
clCreateKernel call failed!


error v3:
Code:
smelter v0.3 (c) Smolen
Royalty: 1/10
Failed to read source file: ./quark0td/kernel/kernelQuark.cl
SummonProgram failed
ThreadHost::Thread() unexpected exception:clCreateKernel call failed


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: verloren on December 28, 2013, 02:26:30 AM
i can´t get this miner running with my r9 290. any advices?

error v2:
Code:
smelter v0.2 (c) Smolen
Royalty: 1/10
Failed to read source file: ./quark0td/kernelQuark.cl
SummonProgram failed
clCreateKernel call failed!


error v3:
Code:
smelter v0.3 (c) Smolen
Royalty: 1/10
Failed to read source file: ./quark0td/kernel/kernelQuark.cl
SummonProgram failed
ThreadHost::Thread() unexpected exception:clCreateKernel call failed
Smelter doesn't work with Hawaii (290 or 290x) GPUs yet.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Pk9499 on December 28, 2013, 10:56:01 AM
Another stack of submissions and nothing accepted - has the difficulty shot up, am I unlucky, is my 5830 rubbish or is this just a total waste of time?

http://i43.tinypic.com/2zzop06.jpg

Quark's aren't moving much on volume either http://coinmarketcap.com/


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: verloren on December 28, 2013, 11:50:34 AM
Another stack of submissions and nothing accepted - has the difficulty shot up, am I unlucky, is my 5830 rubbish or is this just a total waste of time?

http://i43.tinypic.com/2zzop06.jpg

Quark's aren't moving much on volume either http://coinmarketcap.com/
The accepted value in Smelter is for blocks solved, not shares accepted.

Law of averages states that you will get x amount of QRK/SRC per day over the long run, when comparing the same hash rate to the pool.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Pk9499 on December 28, 2013, 12:12:30 PM
And the 1: value is what?  Maybe submissions was the wrong word - attempts at blocks?

I understand it's luck of the draw - hence the questions about my luck. How do you do?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: chip99 on December 31, 2013, 08:38:02 AM
something is very wrong with your miner  >:( i thought its supposed to take only 12.5% as fee and not all the coins ??
mined a coin where a block is 50k reward. here is what is left

http://puu.sh/64tBQ/4fefc838c9.png 6.1k is version1 posted from OP and v2 is 6.5k


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: verloren on December 31, 2013, 09:18:07 AM
And the 1: value is what?  Maybe submissions was the wrong word - attempts at blocks?

I understand it's luck of the draw - hence the questions about my luck. How do you do?

The 1: [Number] refers to the number of blocks that have passed by since you started Smelter.

A: [Number] - Number of solved blocks (including orphans).

R: [Number] - Rejected.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: mtbitcoin on December 31, 2013, 01:21:46 PM
something is very wrong with your miner  >:( i thought its supposed to take only 12.5% as fee and not all the coins ??
mined a coin where a block is 50k reward. here is what is left

http://puu.sh/64tBQ/4fefc838c9.png 6.1k is version1 posted from OP and v2 is 6.5k

It most likely unable to send the actual amount because it was designed for Quark and not Particle. So you only get the donation amount and not the full amount


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Pk9499 on December 31, 2013, 03:15:17 PM
And the 1: value is what?  Maybe submissions was the wrong word - attempts at blocks?

I understand it's luck of the draw - hence the questions about my luck. How do you do?

The 1: [Number] refers to the number of blocks that have passed by since you started Smelter.

A: [Number] - Number of solved blocks (including orphans).

R: [Number] - Rejected.

Thank you. Well I've had 3 solved blocks now that have resulted in payments of 14.4, 7.20009 and 7.20.  To be honest I'm wondering whether it's worth it.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: coingeter on December 31, 2013, 04:12:45 PM
something is very wrong with your miner  >:( i thought its supposed to take only 12.5% as fee and not all the coins ??
mined a coin where a block is 50k reward. here is what is left

http://puu.sh/64tBQ/4fefc838c9.png 6.1k is version1 posted from OP and v2 is 6.5k

It most likely unable to send the actual amount because it was designed for Quark and not Particle. So you only get the donation amount and not the full amount

How to solve the problem


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: nuno12345 on January 02, 2014, 01:05:28 AM
Just my 2 cents.

I wonder if we can get this to work on a pool with ypool.net xptProxy.
Source: https://github.com/jh000/xptProxy

Its used to mine dogecoin and "converts" the protocol into json.
Currently it supports sha-256, scrypt and primecoin algos.
There are no arguments to provide and connects by default on ypool.net port 10034 and rpc port 8332.

I made some changes to the source to allow arguments such as pool port rpcport.

main.cpp(int function, modified)
Code:
int main(int argc, char** argv)
{
printf("\xC9\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBB\n");
printf("\xBA  xptProxy (v0.2b)                                \xBA\n");
printf("\xBA  contributors: jh                                \xBA\n");
printf("\xBA  local protocols: getwork(8332)+longpoll         \xBA\n");
printf("\xBA  algorithms: scrypt                              \xBA\n");
printf("\xBA  params: xptProxy.exe pool port rpcport          \xBA\n");
printf("\xC8\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBC\n");
printf("Launching proxy...\n");

char* poolURL = "ypool.net";
if(argv[1])
{
poolURL = argv[1];
}

proxySettings.poolPort = 10034;
if(argv[2])
{
proxySettings.poolPort = atoi(argv[2]);
}


proxySettings.rpcPort = 8332;
if(argv[3])
{
proxySettings.rpcPort = atoi(argv[3]);
}
// init winsock
WSADATA wsa;
WSAStartup(MAKEWORD(2,2),&wsa);

hostent* hostInfo = gethostbyname(poolURL);
if( hostInfo == NULL )
{
printf("Cannot resolve '%s'. Is it a valid URL?\n", poolURL);
exit(-1);
}
void** ipListPtr = (void**)hostInfo->h_addr_list;
uint32 ip = 0xFFFFFFFF;
if( ipListPtr[0] )
{
ip = *(uint32*)ipListPtr[0];
}
char ipText[32];
sprintf(ipText, "%d.%d.%d.%d", ((ip>>0)&0xFF), ((ip>>8)&0xFF), ((ip>>16)&0xFF), ((ip>>24)&0xFF));
// set default proxy settings (todo: Add config)
proxySettings.poolIP = ipText;
// init xpt proxy stuff
xptProxy_init();
// start json server thread
printf("Starting JSON-RPC server on port %d...\n", proxySettings.rpcPort);
jsonRpcServer_t* jrs = jsonRpc_createServer(proxySettings.rpcPort);
if( jrs == NULL )
{
printf("Failed to open a server on port %d, try again\n", proxySettings.rpcPort);
return -1;
}
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)jsonRpc_run, jrs, 0, NULL);
// start processing xpt clients
printf("xptProxy ready to accept connections!\n");
xptProxy_mainloop();
return 0;
}

After the changes it compiles and runs successfully with "xptProxy ypool.net 10034 8332"

I also added all the quark files/algos to the project and they needed no changes at all
Got the files from miner, https://github.com/Neisklar/quarkcoin-cpuminer
Files: blake.c, bmw.c, groestl.c, jh.c, keccak.c, skein.c, the respective sph_headers.h and sph_types.h

The file wich actually exports quark hash and verify functions(quark.c) gives a missing function error

After the quark hashing functions can included without errors i think there are just some minor changes to do at xptProxy itself to actually recognize the algorithm.
A simple search shows:
xptClient.cpp
Code:
else if( xptShareToSubmit->algorithm == ALGORITHM_SHA256 || xptShareToSubmit->algorithm == ALGORITHM_SCRYPT )

xptProxy.cpp
Code:
if( xpc->algorithm == ALGORITHM_SCRYPT )

Not sure if the protocols are the same but maybe some one more skilled can give this a try?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on January 03, 2014, 05:49:09 PM
something is very wrong with your miner  >:( i thought its supposed to take only 12.5% as fee and not all the coins ??
mined a coin where a block is 50k reward. here is what is left

6.1k is version1 posted from OP and v2 is 6.5k
I think something is wrong with the wallet code :) Posted response with technical details here (https://bitcointalk.org/index.php?topic=392804.msg4291870#msg4291870), let's hope Particle developers will take a look at it.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: ocminer on January 04, 2014, 11:16:15 PM
If you guys are still looking for a (backup) pool try:

https://qrk.suprnova.cc for Quark

or

https://prt.suprnova.cc for Particle.

I'm testing new stratum/vardiff code there, would really appreciate some more power than few cpu's in there.

If you need a pool for an other coinbase, message me.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: oox on January 08, 2014, 06:28:21 PM
Hi all

Are there any details on what cards don't work or do work with settings & performance ?

I'm looking to put a new low profile card into a slim pc that i can dabble with smelter & quark based coins. Seems to be 7750, 6670, 6450 & 5450 low profile cards available mainly 1GB & a 2GB 6450.

p.s. Also if vital info could be edited into the 1st post it would make it a lot easier for everyone to find the latest version, for example, instead of having to read the whole topic looking ;)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: rmhuntley on January 08, 2014, 06:53:22 PM
I'm trying to mine frozen w/ a 5850, smelter crashes almost immediately. Is this a compatible card?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Benezivas on January 10, 2014, 01:23:20 AM
I am currently trying to mine Offerings with smelter, while I was successful with getting it to work with frozen, I can't seem to find the error here:

offering.conf:
Code:
[...]
listen=1
rpcuser=1
rpcpassword=x
rpcallowip=127.0.0.1
rpcport=1928
server=1
[...]

And calling smelter with open wallet (same directory as .conf, of course) and:

Code:
smelter -o http://127.0.0.1:1928 -u 1 -p x -w 64 -g 1 -i 200 -a QQcS8oJyWH2UiTZUN6qBZjYBWXtWFzhC4J

getting the following result:

Code:
Path/to/smelter>smelter -o http://127.0.0.1:1928 -u 1 -p
 x -w 64 -g 1 -i 200 -a QQcS8oJyWH2UiTZUN6qBZjYBWXtWFzhC4J
smelter v0.3 (c) Smolen
Royalty: 1/10
Failed to read source file: ./quark0td/kernel/kernelQuark.cl
SummonProgram failed
ThreadHost::Thread() unexpected exception:clCreateKernel call failed
Error: Parse error, request:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transit
ional//EN"
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML>
<HEAD>
<TITLE>Error</TITLE>
<META HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=ISO-8859-1'>
</HEAD>
<BODY><H1>401 Unauthorized.</H1></BODY>
</HTML>

Error: Parse error, request:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transit
ional//EN"
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML>
<HEAD>
<TITLE>Error</TITLE>
<META HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=ISO-8859-1'>
</HEAD>
<BODY><H1>401 Unauthorized.</H1></BODY>
</HTML>

Error: Parse error, request:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transit
ional//EN"
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML>
<HEAD>
<TITLE>Error</TITLE>
<META HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=ISO-8859-1'>
</HEAD>
<BODY><H1>401 Unauthorized.</H1></BODY>
</HTML>
And so on, resulting in a crash. Did I mess up the config?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: rmhuntley on January 10, 2014, 02:57:36 AM
the the smelter files have to be in the same dir as the wallet? that could be my issue


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Its About Sharing on January 10, 2014, 10:46:29 AM
i can´t get this miner running with my r9 290. any advices?

error v2:
Code:
smelter v0.2 (c) Smolen
Royalty: 1/10
Failed to read source file: ./quark0td/kernelQuark.cl
SummonProgram failed
clCreateKernel call failed!


error v3:
Code:
smelter v0.3 (c) Smolen
Royalty: 1/10
Failed to read source file: ./quark0td/kernel/kernelQuark.cl
SummonProgram failed
ThreadHost::Thread() unexpected exception:clCreateKernel call failed
Smelter doesn't work with Hawaii (290 or 290x) GPUs yet.

Any idea on when we might get Smelter working on the 290's?
(I will be using my CPU for Quarks and the 290 for LTC until then.)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on January 10, 2014, 12:13:25 PM
Are there any details on what cards don't work or do work with settings & performance ?

p.s. Also if vital info could be edited into the 1st post it would make it a lot easier for everyone to find the latest version, for example, instead of having to read the whole topic looking ;)

Any idea on when we might get Smelter working on the 290's?
(I will be using my CPU for Quarks and the 290 for LTC until then.)

Sorry again for abandoning the thread. My short term plans are:
- buy new GPU (They all are sold out now :( And to finish PTS miner I need 64 bit atomics missed in VLIW5)
- get the code in good shape and open source it (Hoping for community review :) And right now the code does not even compile :))
- make new closed-source release for PTS or XPM
So soon there will be open-source, commission-free Quark miner not bounded to any particular GPU. Just wait a bit.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on January 10, 2014, 12:18:31 PM
401 Unauthorized
Something wrong with authorization, may be username '1' is parsed as a number. Try naming your user 'user'.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on January 10, 2014, 12:22:57 PM
I'm trying to mine frozen w/ a 5850, smelter crashes almost immediately. Is this a compatible card?
5850 is supported. Try --debug switch, debug output can give an idea what's wrong.

Just in case, the list of currently supported GPUs:
Code:
        const char *arrDevices[] =
        {
                "Cypress", // 5830, 5850, 5870
                "Cayman", // Radeon HD 6900:  Radeon HD 6950 and Radeon HD 6970
                "Barts", // HD 6850 HD 6870
                "Turks", // HD 6570 and HD 6670, 7510, 7570, 7670
                "Juniper", // 6770 and 6750, 5750, 5770
                "Tahiti", // 7870, 7950, 7970
                "Pitcairn", // 7850, 7870
                "Capeverde", // 7730, 7750, 7770
                "Bonaire", // 7790
                0
        };


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Benezivas on January 10, 2014, 12:37:35 PM
401 Unauthorized
Something wrong with authorization, may be username '1' is parsed as a number. Try naming your user 'user'.

Edited my conf:
Code:
rpcuser=user
rpcpassword=pass

And the sm.cmd:

Code:
smelter -o http://127.0.0.1:1928 -u 1 -p x -a QQcS8oJyWH2UiTZUN6qBZjYBWXtWFzhC4J

And yet, this: (btw: running on a 6870)
Code:
Path/to/smelter>smelter -o http://127.0.0.1:1928 -u user
 -p pass -w 64 -g 1 -i 200 -a QQcS8oJyWH2UiTZUN6qBZjYBWXtWFzhC4J
smelter v0.3 (c) Smolen
Royalty: 1/10
Error: Parse error, request:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transit
ional//EN"
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML>
<HEAD>
<TITLE>Error</TITLE>
<META HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=ISO-8859-1'>
</HEAD>
<BODY><H1>401 Unauthorized.</H1></BODY>
</HTML>

Failed to read source file: ./quark0td/kernel/kernelQuark.cl
SummonProgram failed
ThreadHost::Thread() unexpected exception:clCreateKernel call failed
Error: Parse error, request:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transit
ional//EN"
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML>
<HEAD>
<TITLE>Error</TITLE>
<META HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=ISO-8859-1'>
</HEAD>
<BODY><H1>401 Unauthorized.</H1></BODY>
</HTML>

I think that aside from the 401 these lines may be of interest as well:
Code:
Failed to read source file: ./quark0td/kernel/kernelQuark.cl
SummonProgram failed
ThreadHost::Thread() unexpected exception:clCreateKernel call failed


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: surphactone on January 10, 2014, 02:47:47 PM
1:11 A:0 R:0 MW:0 speed : 1.13mh/s ... what's this ? oO

why it's in MH/s ?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: verloren on January 10, 2014, 03:04:41 PM
1:11 A:0 R:0 MW:0 speed : 1.13mh/s ... what's this ? oO

why it's in MH/s ?
Quark doesn't rely completely on scrypt.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Benezivas on January 10, 2014, 05:44:19 PM
401 Unauthorized
Something wrong with authorization, may be username '1' is parsed as a number. Try naming your user 'user'.

Edited my conf:
Code:
rpcuser=user
rpcpassword=pass

And the sm.cmd:

Code:
smelter -o http://127.0.0.1:1928 -u 1 -p x -a QQcS8oJyWH2UiTZUN6qBZjYBWXtWFzhC4J

And yet, this: (btw: running on a 6870)
Code:
Path/to/smelter>smelter -o http://127.0.0.1:1928 -u user
 -p pass -w 64 -g 1 -i 200 -a QQcS8oJyWH2UiTZUN6qBZjYBWXtWFzhC4J
smelter v0.3 (c) Smolen
Royalty: 1/10
Error: Parse error, request:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transit
ional//EN"
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML>
<HEAD>
<TITLE>Error</TITLE>
<META HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=ISO-8859-1'>
</HEAD>
<BODY><H1>401 Unauthorized.</H1></BODY>
</HTML>

Failed to read source file: ./quark0td/kernel/kernelQuark.cl
SummonProgram failed
ThreadHost::Thread() unexpected exception:clCreateKernel call failed
Error: Parse error, request:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transit
ional//EN"
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML>
<HEAD>
<TITLE>Error</TITLE>
<META HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=ISO-8859-1'>
</HEAD>
<BODY><H1>401 Unauthorized.</H1></BODY>
</HTML>

I think that aside from the 401 these lines may be of interest as well:
Code:
Failed to read source file: ./quark0td/kernel/kernelQuark.cl
SummonProgram failed
ThreadHost::Thread() unexpected exception:clCreateKernel call failed


Willing to pay 1 Block (5 offerings) to the one that can help me get it running.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Benezivas on January 11, 2014, 06:46:57 PM

Willing to pay 1 Block (5 offerings) to the one that can help me get it running.

Raising the reward to 2 blocks, see above.

EDIT: Found the fix myself. It turns out that I shouldn't have openened the wallet with
Code:
Offerings-qt.exe -server
. Duh.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: renegadepcsolutions on January 12, 2014, 08:23:41 PM
You know... after having some issues with your program here... as well as an issue that you want to take 1/8th of everyone's work... I decided to pull this apart.

"This program cannot be run in DOS mode"

Really? A DOS program that can't be run in DOS? Silly me...


"Smolen.Royalty: 1/8....main loop...Exit!"

Explain this one...          ^             ^
I can understand the royalty, because you were up-front about it...

But I've ran this program on my quarkcoinQT server for 24 hours, and didn't get a single quark out of it on my 7870 pitcairn. On top of that... to be quite honest... it's more profitable to mine with a good i7 or xeon cpu than it is with any gpu due to power usage.



Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on January 13, 2014, 11:35:30 PM
You know... after having some issues with your program here... as well as an issue that you want to take 1/8th of everyone's work... I decided to pull this apart.

"This program cannot be run in DOS mode"

Really? A DOS program that can't be run in DOS? Silly me...
I deserve a better cracker for my masterpiece, this one even don't know about PE format! :D Seriously, if you want to hack away 10% royalty, you have to hack GPU code, not only x86 one.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on January 13, 2014, 11:59:41 PM
ok, so this is the output I get w/ debug.

C:\fzn>smelter --debug -o http://127.0.0.1:18450 -u frozenrpc -p x -w 64 -g 1 -i
Building from binary done: quark0td_Cypress_W64.bin
1:0 A:0 R:0 HW:0 Speed: 2.72GH/s 5s: 5.28GH/s
NONCE overflow
Thank you for the report - and sorry, I don't know what's going on. The speed is unbelievably good, most probably the compiled Quark kernel is empty, it makes no real calculation and reports hashes as done without actual hashing. So, wait and may be give Smelter next try when it will be open-sourced :(


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: rmhuntley on January 14, 2014, 12:15:57 AM
No worries. and I agree, the speed was phenomenal. it would make solo mining easy. lol. I think I'll try dropping the intensity down to likr 3 and work up from there


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on January 14, 2014, 12:26:04 AM
No worries. and I agree, the speed was phenomenal. it would make solo mining easy. lol. I think I'll try dropping the intensity down to likr 3 and work up from there
Not sure if it helps, most probably something went wrong when I compiled OpenCL sources into binary blob. Just in case, what version of drivers do you have installed?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Hilux74 on January 14, 2014, 01:04:29 AM
Anyone have hash rate results for a 7770 card?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: renegadepcsolutions on January 14, 2014, 08:13:31 AM
You know... after having some issues with your program here... as well as an issue that you want to take 1/8th of everyone's work... I decided to pull this apart.

"This program cannot be run in DOS mode"

Really? A DOS program that can't be run in DOS? Silly me...
I deserve a better cracker for my masterpiece, this one even don't know about PE format! :D Seriously, if you want to hack away 10% royalty, you have to hack GPU code, not only x86 one.


Thought I'd catch your attention with that one. ;)

Nah, I'm not gonna hack your 10% away.

Hell... if you can get one up and running that supports stratum pools... I'll toss you 10 QRK for every 50 QRK that I mine for the next 3 months. :)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: rmhuntley on January 14, 2014, 08:41:10 AM
No worries. and I agree, the speed was phenomenal. it would make solo mining easy. lol. I think I'll try dropping the intensity down to likr 3 and work up from there
Not sure if it helps, most probably something went wrong when I compiled OpenCL sources into binary blob. Just in case, what version of drivers do you have installed?

I"m running 12.8


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: soulmann on January 14, 2014, 08:50:01 AM
- make new closed-source release for PTS

Will it be faster then the existed one?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on January 14, 2014, 07:55:58 PM
I"m running 12.8
Thank you, It gives a hope that the error is on AMD side :) I used 13.x to compile the kernel, may be the support for old version is rusted. Well, let's postpone bughunting a bit.

- make new closed-source release for PTS
Will it be faster then the existed one?
That depends on the exact meaning of the word 'will' :) If it will be superior to the existing miners, it will not be released so there will be no Smelter for PTS :)

Hell... if you can get one up and running that supports stratum pools... I'll toss you 10 QRK for every 50 QRK that I mine for the next 3 months. :)
Quark mining is almost over, if you really want to reward me - wait for the sources and invent better trick around Groestl hash, I'd like to see how this beast can be tamed :)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: rmhuntley on January 14, 2014, 08:40:27 PM
I can update my drivers easy enough, and if things don't work, roll back to 12.8. that's not an issue.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on January 14, 2014, 09:22:58 PM
I can update my drivers easy enough, and if things don't work, roll back to 12.8. that's not an issue.
TL;DR - just wait
It's not going to help - the problem is most probably caused by drivers on my PC, where I did compile OpenCL sources into binary blobs. The right way to fix it (at least, to try to fix) would be releasing kernel sources and compiling it on your PC, with your drivers. I want to withhold some parts of the kernel (mostly related to copy-protection), to do it I have to do some programming and testing and that is postponed until arrival of new GPU.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: rmhuntley on January 15, 2014, 02:44:14 AM
No worries. I have no idea how to compile things anyway.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: sameev29 on January 15, 2014, 03:06:16 AM
Can we mine any cpu coin with this?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: tucksmcgucks on January 16, 2014, 03:20:51 AM
Can we mine any cpu coin with this?

You can mine any CPU coin that uses quark algorithm. i.e. PRT, Offerings, ATOM, FRQ, etc..


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: sameev29 on January 16, 2014, 03:26:45 AM
Profit estimation per 1 MH/s for Quark and Securecoin:
QRK:1000000*60*60*24*128*0.00000110/16777216/124 = 0.00584 BTC/day
SRC:1000000*60*60*24*5*0.00041263/16777216/1462 = 0.00726 BTC/day


How much accurate is this?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: verloren on January 16, 2014, 06:39:31 AM
Profit estimation per 1 MH/s for Quark and Securecoin:
QRK:1000000*60*60*24*128*0.00000110/16777216/124 = 0.00584 BTC/day
SRC:1000000*60*60*24*5*0.00041263/16777216/1462 = 0.00726 BTC/day


How much accurate is this?
That's from October. Profit is much less now because of increased hash rates on QRK and SRC.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: chowdan on January 17, 2014, 02:27:24 AM
something is very wrong with your miner  >:( i thought its supposed to take only 12.5% as fee and not all the coins ??
mined a coin where a block is 50k reward. here is what is left

http://puu.sh/64tBQ/4fefc838c9.png 6.1k is version1 posted from OP and v2 is 6.5k

It most likely unable to send the actual amount because it was designed for Quark and not Particle. So you only get the donation amount and not the full amount

How to solve the problem

I'm curious how you are mining through PRT wallet? Shouldnt it display the transaction as a incoming transaction icon and not mining icons?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: sameev29 on January 17, 2014, 02:30:35 AM
Profit estimation per 1 MH/s for Quark and Securecoin:
QRK:1000000*60*60*24*128*0.00000110/16777216/124 = 0.00584 BTC/day
SRC:1000000*60*60*24*5*0.00041263/16777216/1462 = 0.00726 BTC/day


How much accurate is this?
That's from October. Profit is much less now because of increased hash rates on QRK and SRC.

How many SRC and QRK can we generate at current difficulty with 1MH/sec?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: verloren on January 17, 2014, 03:39:54 AM
Profit estimation per 1 MH/s for Quark and Securecoin:
QRK:1000000*60*60*24*128*0.00000110/16777216/124 = 0.00584 BTC/day
SRC:1000000*60*60*24*5*0.00041263/16777216/1462 = 0.00726 BTC/day


How much accurate is this?
That's from October. Profit is much less now because of increased hash rates on QRK and SRC.

How many SRC and QRK can we generate at current difficulty with 1MH/sec?
Will average 7QRK or 0.8SRC a day.

Since Smelter doesn't work with pools, it averages out to:
~2 QRK blocks a day.
1 block on SRC every 5 days


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Pk9499 on January 17, 2014, 09:06:56 AM
I'm down to 3.6 QRK for every block that smelter finds now  :'(


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: verloren on January 19, 2014, 11:45:33 AM
I'm down to 3.6 QRK for every block that smelter finds now  :'(
I forgot to take into account the 10% royalty..


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: HencHMaN on January 20, 2014, 10:19:43 AM
Anyone have hash rate results for a 7770 card?
Im have 500 khash
Code:
-w 256 -g 1 -i 200


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: BitCoinPokerBro on January 20, 2014, 12:33:24 PM
Can someone make a tutorial for tech illiterate types? I know it's difficult, but surely someone can dumb themselves down for a minute or two to help.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Drewdy on January 21, 2014, 09:57:00 PM
Any chance you have a version ready for beta testing that supports the r9-290x cards?  PM me if you do.
Thanks.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: axiong on January 22, 2014, 07:25:58 AM
Any chance you have a version ready for beta testing that supports the r9-290x cards?  PM me if you do.
Thanks.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: pyromaniac on January 22, 2014, 02:51:56 PM
Anyone have hash rate results for a 7770 card?
Im have 500 khash
Code:
-w 256 -g 1 -i 200
It's much slower, than my CPU.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: ycui7 on January 23, 2014, 01:20:10 AM
I'm trying to mine frozen w/ a 5850, smelter crashes almost immediately. Is this a compatible card?
5850 is supported. Try --debug switch, debug output can give an idea what's wrong.

Just in case, the list of currently supported GPUs:
Code:
        const char *arrDevices[] =
        {
                "Cypress", // 5830, 5850, 5870
                "Cayman", // Radeon HD 6900:  Radeon HD 6950 and Radeon HD 6970
                "Barts", // HD 6850 HD 6870
                "Turks", // HD 6570 and HD 6670, 7510, 7570, 7670
                "Juniper", // 6770 and 6750, 5750, 5770
                "Tahiti", // 7870, 7950, 7970
                "Pitcairn", // 7850, 7870
                "Capeverde", // 7730, 7750, 7770
                "Bonaire", // 7790
                0
        };

You can add 5770 into you list. I tested it, and it works great. I get 1.4 MH/s on a 5770!


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on January 24, 2014, 04:51:08 AM
My short term plans are:
- buy new GPU
Done, finally :) I'm returning to the project, expect open-source version really soon now.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: 3yM on January 24, 2014, 12:19:30 PM
My short term plans are:
- buy new GPU
Done, finally :) I'm returning to the project, expect open-source version really soon now.

Please make version, compatible with PRT (Particle Coin) & pools... We really need R2xx support too, please!


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Buratino on January 27, 2014, 04:16:23 AM
My short term plans are:
- buy new GPU
Done, finally :) I'm returning to the project, expect open-source version really soon now.

It would be great, if you add anime algo (modified quark algo) support to your project.
Animecoin is here: https://bitcointalk.org/index.php?topic=423339.0


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Kohan on January 27, 2014, 07:26:53 AM
My short term plans are:
- buy new GPU
Done, finally :) I'm returning to the project, expect open-source version really soon now.
What video card did you end up getting.
With the open source there should be nvida support if someone codes it in?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: dE_logics on January 28, 2014, 03:27:39 PM
I seriously doubt a single GPU can can compute 9 rounds of hashing at a time.

I mean, if you got a single algo, yeah, I get it, but 9 chained? I doubt.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: apple_talk on January 29, 2014, 07:33:59 AM
My short term plans are:
- buy new GPU
Done, finally :) I'm returning to the project, expect open-source version really soon now.

Smolen, I don't mind if you want to increase share to 25%. Hope to see R9 2XX (290X) support in the coming one. Please PM me I don't mind testing.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: murdick on January 30, 2014, 03:15:39 PM
My short term plans are:
- buy new GPU
Done, finally :) I'm returning to the project, expect open-source version really soon now.

Great! Since everyone else is sending you wishlish items, I thought I'd add stratum support. Would love to get this on to a pool. 1.5Mh/s on a 5770 is a good start.

Thanks for all your hard work!


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: zerodrama on January 30, 2014, 03:26:29 PM
I finally got rid from the last pieces of GPL'ed code in my own miner and can now release it to the public. This miner is not free, a royalty of 1/8 (12.5%) is deducted from every mined block. (Coinbase transaction have 2 outputs, so I get my fee at exactly the same moment you'll get your coins).

Download link:https://mega.co.nz/#!QMMEFBYY!AgH4OGrKaRHkRjiVfVXXzxBHbTIlgdD5o3ak2VFuU78

Edit quarkcoin.conf (or Offering.conf, or securecoin.conf) file of your wallet to enable solo-mining, put your own username and password there:
listen=1
rpcallowip=127.0.0.1
rpcuser=username
rpcpassword=password
rpcport=8772
server=1

Edit sm.cmd from downloaded archive, put your own username, password and wallet address there:
smelter -o http://127.0.0.1:8772 -u username -p password -a QNiGvoYctyMwzV1ZjNbjhEoKdQVzFKsmVw

This is pre-alpha software, expect all kinds of bugs to be found, don't hesitate to report it here!
NVidia and old/rare AMD cards are not supported. Please, give me some time to iron out bugs :)

Let me just say that I, resent, having a permanent relationship with the producer of a tool I use.

This is an obsolete release model.

Consider this the research phase. Followed by the release phase.

I have no problem donating and even contributing to a project.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Nataly2014 on January 30, 2014, 07:32:36 PM
Subscribe to the previous post!
Many peoples haved video cards  r9 290x and would be grateful for your work!
25% of your profit from our work - it's very good, because we are many!
Awaiting your news!
Sincerely, Natalie!!!


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Nataly2014 on February 01, 2014, 09:12:41 PM
Hi - Smolen!
Where are you lost, what you have news for us?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: angel.sky on February 01, 2014, 11:32:56 PM
I'm trying to mine frozen w/ a 5850, smelter crashes almost immediately. Is this a compatible card?
5850 is supported. Try --debug switch, debug output can give an idea what's wrong.

Just in case, the list of currently supported GPUs:
Code:
        const char *arrDevices[] =
        {
                "Cypress", // 5830, 5850, 5870
                "Cayman", // Radeon HD 6900:  Radeon HD 6950 and Radeon HD 6970
                "Barts", // HD 6850 HD 6870
                "Turks", // HD 6570 and HD 6670, 7510, 7570, 7670
                "Juniper", // 6770 and 6750, 5750, 5770
                "Tahiti", // 7870, 7950, 7970
                "Pitcairn", // 7850, 7870
                "Capeverde", // 7730, 7750, 7770
                "Bonaire", // 7790
                0
        };

Hi Smolen. In you list present card 7790 but my 7790 card not worked correctly. :( Is there any hope to work in the future?
Or what am I doing wrong?

Code:
smelter -o http://127.0.0.1:8385 -u user -p password -w
64 -g 1 -i 200 -a ______________  --debug
smelter v0.3 (c) Smolen
Royalty: 1/10
Pool::Start()
Pool::ThreadFunc() started
nPlatforms==2
Platform #0 id:00276D90
CL_PLATFORM_PROFILE:FULL_PROFILE
CL_PLATFORM_VERSION:OpenCL 1.1
CL_PLATFORM_NAME:Intel(R) OpenCL
CL_PLATFORM_VENDOR:Intel(R) Corporation
CL_PLATFORM_EXTENSIONS:cl_khr_fp64 cl_khr_icd cl_khr_global_int32_base_atomics c
l_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local
_int32_extended_atomics cl_khr_byte_addressable_store cl_intel_printf cl_ext_dev
ice_fission cl_intel_exec_by_local_thread cl_khr_gl_sharing cl_intel_dx9_media_s
haring
Platform is not supported!
Platform #1 id:53D8B864
CL_PLATFORM_PROFILE:FULL_PROFILE
CL_PLATFORM_VERSION:OpenCL 1.2 AMD-APP (1124.2)
CL_PLATFORM_NAME:AMD Accelerated Parallel Processing
CL_PLATFORM_VENDOR:Advanced Micro Devices, Inc.
CL_PLATFORM_EXTENSIONS:cl_khr_icd cl_amd_event_callback cl_amd_offline_devices c
l_khr_d3d10_sharing cl_khr_d3d11_sharing
# of devices: 1
        Device #0 id==023C84D8
        CL_DEVICE_NAME:Bonaire
        CL_DEVICE_VENDOR:Advanced Micro Devices, Inc.
        CL_DEVICE_VERSION:OpenCL 1.2 AMD-APP (1124.2)
        CL_DRIVER_VERSION:1124.2 (VM)
        CL_DEVICE_ADDRESS_BITS:32
        CL_DEVICE_AVAILABLE:1
        CL_DEVICE_COMPILER_AVAILABLE:1
        CL_DEVICE_ENDIAN_LITTLE:1
        CL_DEVICE_ERROR_CORRECTION_SUPPORT:0
        CL_DEVICE_EXTENSIONS:cl_khr_fp64 cl_amd_fp64 cl_khr_global_int32_base_at
omics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_kh
r_local_int32_extended_atomics cl_khr_int64_base_atomics cl_khr_int64_extended_a
tomics cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_gl_sharing cl
_ext_atomic_counters_32 cl_amd_device_attribute_query cl_amd_vec3 cl_amd_printf
cl_amd_media_ops cl_amd_media_ops2 cl_amd_popcnt cl_khr_d3d10_sharing cl_amd_c1x
_atomics
        CL_DEVICE_GLOBAL_MEM_CACHE_SIZE:16384
        CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE:64
        CL_DEVICE_GLOBAL_MEM_SIZE:1073741824
        CL_DEVICE_LOCAL_MEM_SIZE:32768
        CL_DEVICE_MAX_CLOCK_FREQUENCY:1050
        CL_DEVICE_MAX_COMPUTE_UNITS:14
        CL_DEVICE_MAX_CONSTANT_ARGS:8
        CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE:65536
        CL_DEVICE_MAX_MEM_ALLOC_SIZE:804257792
        CL_DEVICE_MAX_PARAMETER_SIZE:1024
        CL_DEVICE_MAX_WORK_GROUP_SIZE:256
        CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS:3
        CL_DEVICE_MEM_BASE_ADDR_ALIGN:2048

No binary found: quark0td_Bonaire_W64.bin
Failed to read source file: ./quark0td/kernel/kernelQuark.cl
SummonProgram failed
main loop
ThreadHost::Thread() started
ThreadHost::Thread() unexpected exception:clCreateKernel call failed
ThreadHost::Thread() finished


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Justin00 on February 02, 2014, 11:24:10 AM
Im getting 415kh/s with my turks based HD 6720 (laptop.. so shouldnt really be mining)
but working well.. i think.. ???

not familiar with mining.. but this looks ok yeah ??

[2014-02-02 22:24:13] 1:4 A:0 R:0 HW:0 Speed: 410.40KH/s 5s: 417.59KH/s
[2014-02-02 22:24:18] 1:4 A:0 R:0 HW:0 Speed: 410.61KH/s 5s: 417.01KH/s
[2014-02-02 22:24:23] 1:4 A:0 R:0 HW:0 Speed: 410.82KH/s 5s: 417.34KH/s
[2014-02-02 22:24:28] 1:4 A:0 R:0 HW:0 Speed: 411.02KH/s 5s: 417.51KH/s

*edit* what does the I mean in the output ? its changed to 8 now.. seems to increase slowly ??

just one thing.. is their a way to lower the intensity.. its 100% gpu load.. but the bad 100% that freezes pc sometimes.. as oposed to the lower end of 100% that doesnt..  ?

tks heaps :)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Justin00 on February 02, 2014, 11:31:52 AM
oic there is -w -g -i when i try those options it says -g and -i unknown options if i put them in the middle.. and if i put optins at the starts it says -w -g -i unknown.. im running version 0.1 from the OP ?

thanks


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: verloren on February 03, 2014, 02:28:17 AM
Im getting 415kh/s with my turks based HD 6720 (laptop.. so shouldnt really be mining)
but working well.. i think.. ???

not familiar with mining.. but this looks ok yeah ??

[2014-02-02 22:24:13] 1:4 A:0 R:0 HW:0 Speed: 410.40KH/s 5s: 417.59KH/s
[2014-02-02 22:24:18] 1:4 A:0 R:0 HW:0 Speed: 410.61KH/s 5s: 417.01KH/s
[2014-02-02 22:24:23] 1:4 A:0 R:0 HW:0 Speed: 410.82KH/s 5s: 417.34KH/s
[2014-02-02 22:24:28] 1:4 A:0 R:0 HW:0 Speed: 411.02KH/s 5s: 417.51KH/s

*edit* what does the I mean in the output ? its changed to 8 now.. seems to increase slowly ??

just one thing.. is their a way to lower the intensity.. its 100% gpu load.. but the bad 100% that freezes pc sometimes.. as oposed to the lower end of 100% that doesnt..  ?

tks heaps :)

The 1:4 or 1:8 means how many blocks were solved by the program. However, it isn't a guarantee that the block is yours since it could be an orphan.

Change -i in the .bat to reduce the load on the GPU.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Justin00 on February 03, 2014, 09:03:25 AM
thanks for that.
I found the newer version 0.3 on page 7 or 8 or something.. and that has the options in it..
only thing is that version wont run. i have a turks card so should be supported plus it works on the first version.
did a debug and it connects just fine but doesnt do anything or report anything wierd except the normal cant find kernel which v0.1 also reported.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: hedgy73 on February 03, 2014, 09:29:48 AM
Does anyone know if 03a.zip is the latest version and if it's still for solo mining and not pool?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: peteycamey on February 03, 2014, 11:41:30 AM
reserve


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: gizzig on February 03, 2014, 08:14:08 PM
The link  http://rghost.net/49940688   not work

Please, where I can get version 0.3 or 0.3a ?
Thanks


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: hedgy73 on February 03, 2014, 09:41:54 PM
The link  http://rghost.net/49940688   not work

Please, where I can get version 0.3 or 0.3a ?
Thanks

I also noticed that the download button itself doesn't work at http://rghost.net/49940688 (http://rghost.net/49940688).

I had to download it from the same page using torrent software by following the torrent download link: http://rghost.net/torrent/7282858/smelter_quark_03a.zip.torrent (http://rghost.net/torrent/7282858/smelter_quark_03a.zip.torrent)

If you are not familiar with torrent downloading software I recommend uTorrent: http://www.utorrent.com/ (http://www.utorrent.com/)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: bitspill on February 06, 2014, 03:27:17 PM
If you are not familiar with torrent downloading software I recommend uTorrent: http://www.utorrent.com/ (http://www.utorrent.com/)
Or if you wish to support bitcoin services http://bitfetch.com/ "Anonymous remote torrent downloading"


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: nusduq on February 10, 2014, 04:39:02 PM
Please add command "-d"  to choose device


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: alicea on February 15, 2014, 09:30:03 PM


Download link:https://mega.co.nz/#!QMMEFBYY!AgH4OGrKaRHkRjiVfVXXzxBHbTIlgdD5o3ak2VFuU78


This is an executable for windows, are there sources or binaries for other operating systems anywhere?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Wubbllez on February 19, 2014, 03:44:59 AM


Download link:https://mega.co.nz/#!QMMEFBYY!AgH4OGrKaRHkRjiVfVXXzxBHbTIlgdD5o3ak2VFuU78


This is an executable for windows, are there sources or binaries for other operating systems anywhere?
its still closed source.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: alicea on February 21, 2014, 01:28:12 PM


Download link:https://mega.co.nz/#!QMMEFBYY!AgH4OGrKaRHkRjiVfVXXzxBHbTIlgdD5o3ak2VFuU78


This is an executable for windows, are there sources or binaries for other operating systems anywhere?
its still closed source.
I don't mind if it's closed source, but I would like binaries for Ubuntu/Mint :)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: dE_logics on February 21, 2014, 03:39:53 PM
You guys are hoping too much.

This's practically not possible. The 3 random rounds require decision making, making the algo unsuitable for GPU computation. Ever wondered why your OS doesn't run on GPU? Or Apache doesn't run on GPU?

It's the same reason as Primecoin's algo.

There can be a hybrid though. Not sure.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Hilux74 on February 21, 2014, 05:32:21 PM
You guys are hoping too much.

This's practically not possible. The 3 random rounds require decision making, making the algo unsuitable for GPU computation. Ever wondered why your OS doesn't run on GPU? Or Apache doesn't run on GPU?

It's the same reason as Primecoin's algo.

There can be a hybrid though. Not sure.

What are they hoping about?  Smelter works like a hot damn.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: isaevski on February 26, 2014, 07:09:45 PM
solo only?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: dddbtc on February 26, 2014, 07:16:09 PM
solo only?

Yes unfortunately.  I hope the author publicly updates this soft.

otherwise, I wouldn't be opposed to organizing a bounty for private or public release ;)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: crike on February 27, 2014, 01:42:13 PM
solo only?
https://bitcointalk.org/index.php?topic=475795.0

Use this for pool-mining. Its also free to use


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: rmhuntley on February 28, 2014, 02:19:48 AM
Anyone know if this is compatible w/ the 5850 yet?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: infinitalus on March 10, 2014, 04:21:47 AM
Lol looks like video card better spent on scrypt. My i7 4930k oced to 4.2ghz runs at 1250 khs using 11/12 threads to save 1 thread from bottlenecking the rest of my gpus.. but is water cooled runs stable at 70c or less.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: Hilux74 on March 10, 2014, 05:48:21 AM
Lol looks like video card better spent on scrypt. My i7 4930k oced to 4.2ghz runs at 1250 khs using 11/12 threads to save 1 thread from bottlenecking the rest of my gpus.. but is water cooled runs stable at 70c or less.
FAIL

Lol each of my $50 Radeon 5830s mines Quark related coins at 2200 khs and is aircooled and runs at 53oC and less than 100watts.  Who puts an overclocked and watercooled i7 4930k in a mining rig lol.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: csa1234 on March 22, 2014, 05:45:25 AM
Can this work on Primecoin?

solo only?
https://bitcointalk.org/index.php?topic=475795.0

Use this for pool-mining. Its also free to use


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: ddwy758 on March 22, 2014, 12:10:54 PM
China issued new currency QQ group 375065944


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: csa1234 on March 22, 2014, 02:31:43 PM
Im getting a strange message: "Share hash above the target"

I have been mining with smelter for the past 7 hours, and there was zero Accepted work A:0 R:0 HW:0

Is there something wrong here?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: verloren on March 23, 2014, 04:21:34 AM
Can this work on Primecoin?

solo only?
https://bitcointalk.org/index.php?topic=475795.0

Use this for pool-mining. Its also free to use

Doesn't work on XPM.

No idea on the share hash above the target question.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: cbuchner1 on March 31, 2014, 04:28:51 PM
You guys are hoping too much.

This's practically not possible. The 3 random rounds require decision making, making the algo unsuitable for GPU computation. Ever wondered why your OS doesn't run on GPU? Or Apache doesn't run on GPU?

the 3 rounds of (pseudo)random 2-way divergent branching only require a bit of stream compaction, followed by sequential execution of each of the two branches.

it's no obstacle for a skilled GPU programmer.

Christian


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on October 22, 2014, 01:25:43 AM
I'm publishing OpenCL code of Smelter - let's hope it will find new home in some other miner.

Blake:
Code:
#define M0 hash64[ 0]
#define M1 hash64[ 1]
#define M2 hash64[ 2]
#define M3 hash64[ 3]
#define M4 hash64[ 4]
#define M5 hash64[ 5]
#define M6 hash64[ 6]
#define M7 hash64[ 7]

M0 = BSWAP64(hash64[ 0]);
M1 = BSWAP64(hash64[ 1]);
M2 = BSWAP64(hash64[ 2]);
M3 = BSWAP64(hash64[ 3]);
M4 = BSWAP64(hash64[ 4]);
M5 = BSWAP64(hash64[ 5]);
M6 = BSWAP64(hash64[ 6]);
M7 = BSWAP64(hash64[ 7]);

V0 = 0xbb1838e7a1a34bd9ULL + (M0 ^ 0x13198A2E03707344ULL);
VC = ROTR64(0x452821E638D01177ULL ^ V0, 32);
V8 = 0x243F6A8885A308D3ULL + VC;
V4 = ROTR64(0x510E527FADE682D1ULL ^ V8, 25);
V0 += V4 + (M1 ^ 0x243F6A8885A308D3ULL);
VC = ROTR64(VC ^ V0, 16);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 11);
V1 = 0x566d1711b009135aULL + (M2 ^ 0x082EFA98EC4E6C89ULL);
VD = ROTR64(0xBE5466CF34E90E6CULL ^ V1, 32);
V9 = 0x13198A2E03707344ULL + VD;
V5 = ROTR64(0x9B05688C2B3E6C1FULL ^ V9, 25);
V1 += V5 + (M3 ^ 0xA4093822299F31D0ULL);
VD = ROTR64(VD ^ V1, 16);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 11);
V2 = 0x5bf2cd1ef9d6b596ULL + (M4 ^ 0xBE5466CF34E90C6CULL);
VE = ROTR64(0xC0AC29B7C97C50DDULL ^ V2, 32);
VA = 0xA4093822299F31D0ULL + VE;
V6 = ROTR64(0x1F83D9ABFB41BD6BULL ^ VA, 25);
V2 += V6 + (M5 ^ 0x452821E638D01377ULL);
VE = ROTR64(VE ^ V2, 16);
VA += VE;
V6 = ROTR64(V6 ^ VA, 11);
V3 = 0x0130c253729b586aULL + (M6 ^ 0x3F84D5B5B5470917ULL);
VF = ROTR64(0x3F84D5B5B5470917ULL ^ V3, 32);
VB = 0x082EFA98EC4E6C89ULL + VF;
V7 = ROTR64(0x5BE0CD19137E2179ULL ^ VB, 25);
V3 += V7 + (M7 ^ 0xC0AC29B7C97C50DDULL);
VF = ROTR64(VF ^ V3, 16);
VB += VF;
V7 = ROTR64(V7 ^ VB, 11);
V0 += V5 + 0x51310BA698DFB5ACULL;
VF = ROTR64(VF ^ V0, 32);
VA += VF;
V5 = ROTR64(V5 ^ VA, 25);
V0 += V5 + 0x9216D5D98979FB1BULL;
VF = ROTR64(VF ^ V0, 16);
VA += VF;
V5 = ROTR64(V5 ^ VA, 11);
V1 += V6 + 0xB8E1AFED6A267E96ULL;
VC = ROTR64(VC ^ V1, 32);
VB += VC;
V6 = ROTR64(V6 ^ VB, 25);
V1 += V6 + 0x2FFD72DBD01ADFB7ULL;
VC = ROTR64(VC ^ V1, 16);
VB += VC;
V6 = ROTR64(V6 ^ VB, 11);
V2 += V7 + 0x24A19947B3916CF7ULL;
VD = ROTR64(VD ^ V2, 32);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 25);
V2 += V7 + 0xBA7C9045F12C7F98ULL;
VD = ROTR64(VD ^ V2, 16);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 11);
V3 += V4 + 0x636920D871574E69ULL;
VE = ROTR64(VE ^ V3, 32);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 25);
V3 += V4 + 0x0801F2E2858EFE16ULL;
VE = ROTR64(VE ^ V3, 16);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 11);
V0 += V4 + 0x2FFD72DBD01ADFB7ULL;
VC = ROTR64(VC ^ V0, 32);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 25);
V0 += V4 + 0x0801F2E2858EFC16ULL;
VC = ROTR64(VC ^ V0, 16);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 11);
V1 += V5 + (M4 ^ 0x9216D5D98979FB1BULL);
VD = ROTR64(VD ^ V1, 32);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 25);
V1 += V5 + 0xC52821E638D01377ULL;
VD = ROTR64(VD ^ V1, 16);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 11);
V2 += V6 + 0x636920D871574E69ULL;
VE = ROTR64(VE ^ V2, 32);
VA += VE;
V6 = ROTR64(V6 ^ VA, 25);
V2 += V6 + 0xD1310BA698DFB7ACULL;
VE = ROTR64(VE ^ V2, 16);
VA += VE;
V6 = ROTR64(V6 ^ VA, 11);
V3 += V7 + 0xC0AC29B7C97C50DCULL;
VF = ROTR64(VF ^ V3, 32);
VB += VF;
V7 = ROTR64(V7 ^ VB, 25);
V3 += V7 + (M6 ^ 0x24A19947B3916CF7ULL);
VF = ROTR64(VF ^ V3, 16);
VB += VF;
V7 = ROTR64(V7 ^ VB, 11);
V0 += V5 + (M1 ^ 0xBA7C9045F12C7F99ULL);
VF = ROTR64(VF ^ V0, 32);
VA += VF;
V5 = ROTR64(V5 ^ VA, 25);
V0 += V5 + 0x13198A2E03707344ULL;
VF = ROTR64(VF ^ V0, 16);
VA += VF;
V5 = ROTR64(V5 ^ VA, 11);
V1 += V6 + (M0 ^ 0xA4093822299F31D0ULL);
VC = ROTR64(VC ^ V1, 32);
VB += VC;
V6 = ROTR64(V6 ^ VB, 25);
V1 += V6 + (M2 ^ 0x243F6A8885A308D3ULL);
VC = ROTR64(VC ^ V1, 16);
VB += VC;
V6 = ROTR64(V6 ^ VB, 11);
V2 += V7 + 0x3F84D5B5B5470917ULL;
VD = ROTR64(VD ^ V2, 32);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 25);
V2 += V7 + (M7 ^ 0xB8E1AFED6A267E96ULL);
VD = ROTR64(VD ^ V2, 16);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 11);
V3 += V4 + (M5 ^ 0x082EFA98EC4E6C89ULL);
VE = ROTR64(VE ^ V3, 32);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 25);
V3 += V4 + (M3 ^ 0xBE5466CF34E90C6CULL);
VE = ROTR64(VE ^ V3, 16);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 11);
V0 += V4 + 0x9216D5D98979FB1BULL;
VC = ROTR64(VC ^ V0, 32);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 25);
V0 += V4 + 0x38E1AFED6A267E96ULL;
VC = ROTR64(VC ^ V0, 16);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 11);
V1 += V5 + 0x243F6A8885A308D3ULL;
VD = ROTR64(VD ^ V1, 32);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 25);
V1 += V5 + (M0 ^ 0xBA7C9045F12C7F99ULL);
VD = ROTR64(VD ^ V1, 16);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 11);
V2 += V6 + (M5 ^ 0xA4093822299F31D0ULL);
VE = ROTR64(VE ^ V2, 32);
VA += VE;
V6 = ROTR64(V6 ^ VA, 25);
V2 += V6 + (M2 ^ 0xBE5466CF34E90C6CULL);
VE = ROTR64(VE ^ V2, 16);
VA += VE;
V6 = ROTR64(V6 ^ VA, 11);
V3 += V7 + 0x24A19947B3916EF7ULL;
VF = ROTR64(VF ^ V3, 32);
VB += VF;
V7 = ROTR64(V7 ^ VB, 25);
V3 += V7 + 0x636920D871574E68ULL;
VF = ROTR64(VF ^ V3, 16);
VB += VF;
V7 = ROTR64(V7 ^ VB, 11);
V0 += V5 + 0x0801F2E2858EFC16ULL;
VF = ROTR64(VF ^ V0, 32);
VA += VF;
V5 = ROTR64(V5 ^ VA, 25);
V0 += V5 + 0x2FFD72DBD01ADFB7ULL;
VF = ROTR64(VF ^ V0, 16);
VA += VF;
V5 = ROTR64(V5 ^ VA, 11);
V1 += V6 + (M3 ^ 0xC0AC29B7C97C50DDULL);
VC = ROTR64(VC ^ V1, 32);
VB += VC;
V6 = ROTR64(V6 ^ VB, 25);
V1 += V6 + (M6 ^ 0x082EFA98EC4E6C89ULL);
VC = ROTR64(VC ^ V1, 16);
VB += VC;
V6 = ROTR64(V6 ^ VB, 11);
V2 += V7 + (M7 ^ 0x13198A2E03707344ULL);
VD = ROTR64(VD ^ V2, 32);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 25);
V2 += V7 + (M1 ^ 0x3F84D5B5B5470917ULL);
VD = ROTR64(VD ^ V2, 16);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 11);
V3 += V4 + 0x452821E638D01377ULL;
VE = ROTR64(VE ^ V3, 32);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 25);
V3 += V4 + (M4 ^ 0xD1310BA698DFB5ACULL);
VE = ROTR64(VE ^ V3, 16);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 11);
V0 += V4 + (M7 ^ 0xD1310BA698DFB5ACULL);
VC = ROTR64(VC ^ V0, 32);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 25);
V0 += V4 + 0x3F84D5B5B5470917ULL;
VC = ROTR64(VC ^ V0, 16);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 11);
V1 += V5 + (M3 ^ 0x13198A2E03707344ULL);
VD = ROTR64(VD ^ V1, 32);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 25);
V1 += V5 + (M1 ^ 0x082EFA98EC4E6C89ULL);
VD = ROTR64(VD ^ V1, 16);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 11);
V2 += V6 + 0xBA7C9045F12C7F98ULL;
VE = ROTR64(VE ^ V2, 32);
VA += VE;
V6 = ROTR64(V6 ^ VA, 25);
V2 += V6 + 0x24A19947B3916CF7ULL;
VE = ROTR64(VE ^ V2, 16);
VA += VE;
V6 = ROTR64(V6 ^ VA, 11);
V3 += V7 + 0x0801F2E2858EFC16ULL;
VF = ROTR64(VF ^ V3, 32);
VB += VF;
V7 = ROTR64(V7 ^ VB, 25);
V3 += V7 + 0xB8E1AFED6A267E96ULL;
VF = ROTR64(VF ^ V3, 16);
VB += VF;
V7 = ROTR64(V7 ^ VB, 11);
V0 += V5 + (M2 ^ 0xC0AC29B7C97C50DDULL);
VF = ROTR64(VF ^ V0, 32);
VA += VF;
V5 = ROTR64(V5 ^ VA, 25);
V0 += V5 + (M6 ^ 0xA4093822299F31D0ULL);
VF = ROTR64(VF ^ V0, 16);
VA += VF;
V5 = ROTR64(V5 ^ VA, 11);
V1 += V6 + (M5 ^ 0x2FFD72DBD01ADFB7ULL);
VC = ROTR64(VC ^ V1, 32);
VB += VC;
V6 = ROTR64(V6 ^ VB, 25);
V1 += V6 + 0xBE5466CF34E90C6CULL;
VC = ROTR64(VC ^ V1, 16);
VB += VC;
V6 = ROTR64(V6 ^ VB, 11);
V2 += V7 + (M4 ^ 0x243F6A8885A308D3ULL);
VD = ROTR64(VD ^ V2, 32);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 25);
V2 += V7 + (M0 ^ 0x452821E638D01377ULL);
VD = ROTR64(VD ^ V2, 16);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 11);
V3 += V4 + 0x9216D5D98979F91BULL;
VE = ROTR64(VE ^ V3, 32);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 25);
V3 += V4 + 0xE36920D871574E69ULL;
VE = ROTR64(VE ^ V3, 16);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 11);
V0 += V4 + 0x243F6A8885A308D3ULL;
VC = ROTR64(VC ^ V0, 32);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 25);
V0 += V4 + (M0 ^ 0xD1310BA698DFB5ACULL);
VC = ROTR64(VC ^ V0, 16);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 11);
V1 += V5 + (M5 ^ 0x3F84D5B5B5470917ULL);
VD = ROTR64(VD ^ V1, 32);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 25);
V1 += V5 + (M7 ^ 0xBE5466CF34E90C6CULL);
VD = ROTR64(VD ^ V1, 16);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 11);
V2 += V6 + (M2 ^ 0x452821E638D01377ULL);
VE = ROTR64(VE ^ V2, 32);
VA += VE;
V6 = ROTR64(V6 ^ VA, 25);
V2 += V6 + (M4 ^ 0xA4093822299F31D0ULL);
VE = ROTR64(VE ^ V2, 16);
VA += VE;
V6 = ROTR64(V6 ^ VA, 11);
V3 += V7 + 0x636920D871574E69ULL;
VF = ROTR64(VF ^ V3, 32);
VB += VF;
V7 = ROTR64(V7 ^ VB, 25);
V3 += V7 + 0x2FFD72DBD01ADDB7ULL;
VF = ROTR64(VF ^ V3, 16);
VB += VF;
V7 = ROTR64(V7 ^ VB, 11);
V0 += V5 + 0x13198A2E03707344ULL;
VF = ROTR64(VF ^ V0, 32);
VA += VF;
V5 = ROTR64(V5 ^ VA, 25);
V0 += V5 + (M1 ^ 0x0801F2E2858EFC16ULL);
VF = ROTR64(VF ^ V0, 16);
VA += VF;
V5 = ROTR64(V5 ^ VA, 11);
V1 += V6 + 0xBA7C9045F12C7F99ULL;
VC = ROTR64(VC ^ V1, 32);
VB += VC;
V6 = ROTR64(V6 ^ VB, 25);
V1 += V6 + 0xB8E1AFED6A267E96ULL;
VC = ROTR64(VC ^ V1, 16);
VB += VC;
V6 = ROTR64(V6 ^ VB, 11);
V2 += V7 + (M6 ^ 0x9216D5D98979FB1BULL);
VD = ROTR64(VD ^ V2, 32);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 25);
V2 += V7 + 0x40AC29B7C97C50DDULL;
VD = ROTR64(VD ^ V2, 16);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 11);
V3 += V4 + (M3 ^ 0x24A19947B3916CF7ULL);
VE = ROTR64(VE ^ V3, 32);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 25);
V3 += V4 + 0x082EFA98EC4E6C88ULL;
VE = ROTR64(VE ^ V3, 16);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 11);
V0 += V4 + (M2 ^ 0xBA7C9045F12C7F99ULL);
VC = ROTR64(VC ^ V0, 32);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 25);
V0 += V4 + 0xA4093822299F31D0ULL;
VC = ROTR64(VC ^ V0, 16);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 11);
V1 += V5 + (M6 ^ 0x2FFD72DBD01ADFB7ULL);
VD = ROTR64(VD ^ V1, 32);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 25);
V1 += V5 + 0xC0AC29B7C97C50DDULL;
VD = ROTR64(VD ^ V1, 16);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 11);
V2 += V6 + (M0 ^ 0xB8E1AFED6A267E96ULL);
VE = ROTR64(VE ^ V2, 32);
VA += VE;
V6 = ROTR64(V6 ^ VA, 25);
V2 += V6 + 0x243F6A8885A308D3ULL;
VE = ROTR64(VE ^ V2, 16);
VA += VE;
V6 = ROTR64(V6 ^ VA, 11);
V3 += V7 + 0x882EFA98EC4E6C89ULL;
VF = ROTR64(VF ^ V3, 32);
VB += VF;
V7 = ROTR64(V7 ^ VB, 25);
V3 += V7 + (M3 ^ 0x9216D5D98979FB1BULL);
VF = ROTR64(VF ^ V3, 16);
VB += VF;
V7 = ROTR64(V7 ^ VB, 11);
V0 += V5 + (M4 ^ 0x24A19947B3916CF7ULL);
VF = ROTR64(VF ^ V0, 32);
VA += VF;
V5 = ROTR64(V5 ^ VA, 25);
V0 += V5 + 0x452821E638D01376ULL;
VF = ROTR64(VF ^ V0, 16);
VA += VF;
V5 = ROTR64(V5 ^ VA, 11);
V1 += V6 + (M7 ^ 0xBE5466CF34E90C6CULL);
VC = ROTR64(VC ^ V1, 32);
VB += VC;
V6 = ROTR64(V6 ^ VB, 25);
V1 += V6 + (M5 ^ 0x3F84D5B5B5470917ULL);
VC = ROTR64(VC ^ V1, 16);
VB += VC;
V6 = ROTR64(V6 ^ VB, 11);
V2 += V7 + 0x0801F2E2858EFE16ULL;
VD = ROTR64(VD ^ V2, 32);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 25);
V2 += V7 + 0x636920D871574E69ULL;
VD = ROTR64(VD ^ V2, 16);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 11);
V3 += V4 + (M1 ^ 0xD1310BA698DFB5ACULL);
VE = ROTR64(VE ^ V3, 32);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 25);
V3 += V4 + 0x13198A2E03707344ULL;
VE = ROTR64(VE ^ V3, 16);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 11);
V0 += V4 + 0xBE5466CF34E90C6CULL;
VC = ROTR64(VC ^ V0, 32);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 25);
V0 += V4 + (M5 ^ 0xBA7C9045F12C7F99ULL);
VC = ROTR64(VC ^ V0, 16);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 11);
V1 += V5 + (M1 ^ 0x636920D871574E69ULL);
VD = ROTR64(VD ^ V1, 32);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 25);
V1 += V5 + 0x13198A2E03707144ULL;
VD = ROTR64(VD ^ V1, 16);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 11);
V2 += V6 + 0x24A19947B3916CF7ULL;
VE = ROTR64(VE ^ V2, 32);
VA += VE;
V6 = ROTR64(V6 ^ VA, 25);
V2 += V6 + 0x0801F2E2858EFC17ULL;
VE = ROTR64(VE ^ V2, 16);
VA += VE;
V6 = ROTR64(V6 ^ VA, 11);
V3 += V7 + (M4 ^ 0x2FFD72DBD01ADFB7ULL);
VF = ROTR64(VF ^ V3, 32);
VB += VF;
V7 = ROTR64(V7 ^ VB, 25);
V3 += V7 + 0x452821E638D01377ULL;
VF = ROTR64(VF ^ V3, 16);
VB += VF;
V7 = ROTR64(V7 ^ VB, 11);
V0 += V5 + (M0 ^ 0x3F84D5B5B5470917ULL);
VF = ROTR64(VF ^ V0, 32);
VA += VF;
V5 = ROTR64(V5 ^ VA, 25);
V0 += V5 + (M7 ^ 0x243F6A8885A308D3ULL);
VF = ROTR64(VF ^ V0, 16);
VA += VF;
V5 = ROTR64(V5 ^ VA, 11);
V1 += V6 + (M6 ^ 0x082EFA98EC4E6C89ULL);
VC = ROTR64(VC ^ V1, 32);
VB += VC;
V6 = ROTR64(V6 ^ VB, 25);
V1 += V6 + (M3 ^ 0xC0AC29B7C97C50DDULL);
VC = ROTR64(VC ^ V1, 16);
VB += VC;
V6 = ROTR64(V6 ^ VB, 11);
V2 += V7 + 0xA4093822299F31D0ULL;
VD = ROTR64(VD ^ V2, 32);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 25);
V2 += V7 + (M2 ^ 0xD1310BA698DFB5ACULL);
VD = ROTR64(VD ^ V2, 16);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 11);
V3 += V4 + 0x38E1AFED6A267E96ULL;
VE = ROTR64(VE ^ V3, 32);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 25);
V3 += V4 + 0x9216D5D98979FB1BULL;
VE = ROTR64(VE ^ V3, 16);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 11);
V0 += V4 + 0xB8E1AFED6A267E97ULL;
VC = ROTR64(VC ^ V0, 32);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 25);
V0 += V4 + 0x24A19947B3916CF7ULL;
VC = ROTR64(VC ^ V0, 16);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 11);
V1 += V5 + (M7 ^ 0x0801F2E2858EFC16ULL);
VD = ROTR64(VD ^ V1, 32);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 25);
V1 += V5 + 0x3F84D5B5B5470917ULL;
VD = ROTR64(VD ^ V1, 16);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 11);
V2 += V6 + 0x13198A2E03707344ULL;
VE = ROTR64(VE ^ V2, 32);
VA += VE;
V6 = ROTR64(V6 ^ VA, 25);
V2 += V6 + (M1 ^ 0xBA7C9045F12C7F99ULL);
VE = ROTR64(VE ^ V2, 16);
VA += VE;
V6 = ROTR64(V6 ^ VA, 11);
V3 += V7 + (M3 ^ 0xD1310BA698DFB5ACULL);
VF = ROTR64(VF ^ V3, 32);
VB += VF;
V7 = ROTR64(V7 ^ VB, 25);
V3 += V7 + 0x082EFA98EC4E6C89ULL;
VF = ROTR64(VF ^ V3, 16);
VB += VF;
V7 = ROTR64(V7 ^ VB, 11);
V0 += V5 + (M5 ^ 0x243F6A8885A308D3ULL);
VF = ROTR64(VF ^ V0, 32);
VA += VF;
V5 = ROTR64(V5 ^ VA, 25);
V0 += V5 + (M0 ^ 0xBE5466CF34E90C6CULL);
VF = ROTR64(VF ^ V0, 16);
VA += VF;
V5 = ROTR64(V5 ^ VA, 11);
V1 += V6 + 0x452821E638D01177ULL;
VC = ROTR64(VC ^ V1, 32);
VB += VC;
V6 = ROTR64(V6 ^ VB, 25);
V1 += V6 + (M4 ^ 0x636920D871574E69ULL);
VC = ROTR64(VC ^ V1, 16);
VB += VC;
V6 = ROTR64(V6 ^ VB, 11);
V2 += V7 + 0x40AC29B7C97C50DDULL;
VD = ROTR64(VD ^ V2, 32);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 25);
V2 += V7 + (M6 ^ 0x9216D5D98979FB1BULL);
VD = ROTR64(VD ^ V2, 16);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 11);
V3 += V4 + (M2 ^ 0x2FFD72DBD01ADFB7ULL);
VE = ROTR64(VE ^ V3, 32);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 25);
V3 += V4 + 0xA4093822299F31D0ULL;
VE = ROTR64(VE ^ V3, 16);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 11);
V0 += V4 + (M6 ^ 0x636920D871574E69ULL);
VC = ROTR64(VC ^ V0, 32);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 25);
V0 += V4 + 0xC0AC29B7C97C52DDULL;
VC = ROTR64(VC ^ V0, 16);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 11);
V1 += V5 + 0xD1310BA698DFB5ACULL;
VD = ROTR64(VD ^ V1, 32);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 25);
V1 += V5 + 0x0801F2E2858EFC16ULL;
VD = ROTR64(VD ^ V1, 16);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 11);
V2 += V6 + 0x082EFA98EC4E6C89ULL;
VE = ROTR64(VE ^ V2, 32);
VA += VE;
V6 = ROTR64(V6 ^ VA, 25);
V2 += V6 + (M3 ^ 0xB8E1AFED6A267E96ULL);
VE = ROTR64(VE ^ V2, 16);
VA += VE;
V6 = ROTR64(V6 ^ VA, 11);
V3 += V7 + (M0 ^ 0x9216D5D98979FB1BULL);
VF = ROTR64(VF ^ V3, 32);
VB += VF;
V7 = ROTR64(V7 ^ VB, 25);
V3 += V7 + 0xA43F6A8885A308D3ULL;
VF = ROTR64(VF ^ V3, 16);
VB += VF;
V7 = ROTR64(V7 ^ VB, 11);
V0 += V5 + 0xA4093822299F31D0ULL;
VF = ROTR64(VF ^ V0, 32);
VA += VF;
V5 = ROTR64(V5 ^ VA, 25);
V0 += V5 + (M2 ^ 0xBA7C9045F12C7F99ULL);
VF = ROTR64(VF ^ V0, 16);
VA += VF;
V5 = ROTR64(V5 ^ VA, 11);
V1 += V6 + 0x3F84D5B5B5470916ULL;
VC = ROTR64(VC ^ V1, 32);
VB += VC;
V6 = ROTR64(V6 ^ VB, 25);
V1 += V6 + (M7 ^ 0x24A19947B3916CF7ULL);
VC = ROTR64(VC ^ V1, 16);
VB += VC;
V6 = ROTR64(V6 ^ VB, 11);
V2 += V7 + (M1 ^ 0x452821E638D01377ULL);
VD = ROTR64(VD ^ V2, 32);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 25);
V2 += V7 + (M4 ^ 0x13198A2E03707344ULL);
VD = ROTR64(VD ^ V2, 16);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 11);
V3 += V4 + 0xBE5466CF34E90C6CULL;
VE = ROTR64(VE ^ V3, 32);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 25);
V3 += V4 + (M5 ^ 0x2FFD72DBD01ADFB7ULL);
VE = ROTR64(VE ^ V3, 16);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 11);
V0 += V4 + 0xA4093822299F31D0ULL;
VC = ROTR64(VC ^ V0, 32);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 25);
V0 += V4 + (M2 ^ 0x2FFD72DBD01ADFB7ULL);
VC = ROTR64(VC ^ V0, 16);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 11);
V1 += V5 + 0xC52821E638D01377ULL;
VD = ROTR64(VD ^ V1, 32);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 25);
V1 += V5 + (M4 ^ 0x9216D5D98979FB1BULL);
VD = ROTR64(VD ^ V1, 16);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 11);
V2 += V6 + (M7 ^ 0xC0AC29B7C97C50DDULL);
VE = ROTR64(VE ^ V2, 32);
VA += VE;
V6 = ROTR64(V6 ^ VA, 25);
V2 += V6 + (M6 ^ 0x3F84D5B5B5470917ULL);
VE = ROTR64(VE ^ V2, 16);
VA += VE;
V6 = ROTR64(V6 ^ VA, 11);
V3 += V7 + (M1 ^ 0xBE5466CF34E90C6CULL);
VF = ROTR64(VF ^ V3, 32);
VB += VF;
V7 = ROTR64(V7 ^ VB, 25);
V3 += V7 + (M5 ^ 0x13198A2E03707344ULL);
VF = ROTR64(VF ^ V3, 16);
VB += VF;
V7 = ROTR64(V7 ^ VB, 11);
V0 += V5 + 0xB8E1AFED6A267C96ULL;
VF = ROTR64(VF ^ V0, 32);
VA += VF;
V5 = ROTR64(V5 ^ VA, 25);
V0 += V5 + 0x636920D871574E69ULL;
VF = ROTR64(VF ^ V0, 16);
VA += VF;
V5 = ROTR64(V5 ^ VA, 11);
V1 += V6 + 0x0801F2E2858EFC16ULL;
VC = ROTR64(VC ^ V1, 32);
VB += VC;
V6 = ROTR64(V6 ^ VB, 25);
V1 += V6 + 0xD1310BA698DFB5ACULL;
VC = ROTR64(VC ^ V1, 16);
VB += VC;
V6 = ROTR64(V6 ^ VB, 11);
V2 += V7 + (M3 ^ 0xBA7C9045F12C7F99ULL);
VD = ROTR64(VD ^ V2, 32);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 25);
V2 += V7 + 0x082EFA98EC4E6C89ULL;
VD = ROTR64(VD ^ V2, 16);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 11);
V3 += V4 + 0x243F6A8885A308D2ULL;
VE = ROTR64(VE ^ V3, 32);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 25);
V3 += V4 + (M0 ^ 0x24A19947B3916CF7ULL);
VE = ROTR64(VE ^ V3, 16);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 11);
V0 += V4 + (M0 ^ 0x13198A2E03707344ULL);
VC = ROTR64(VC ^ V0, 32);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 25);
V0 += V4 + (M1 ^ 0x243F6A8885A308D3ULL);
VC = ROTR64(VC ^ V0, 16);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 11);
V1 += V5 + (M2 ^ 0x082EFA98EC4E6C89ULL);
VD = ROTR64(VD ^ V1, 32);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 25);
V1 += V5 + (M3 ^ 0xA4093822299F31D0ULL);
VD = ROTR64(VD ^ V1, 16);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 11);
V2 += V6 + (M4 ^ 0xBE5466CF34E90C6CULL);
VE = ROTR64(VE ^ V2, 32);
VA += VE;
V6 = ROTR64(V6 ^ VA, 25);
V2 += V6 + (M5 ^ 0x452821E638D01377ULL);
VE = ROTR64(VE ^ V2, 16);
VA += VE;
V6 = ROTR64(V6 ^ VA, 11);
V3 += V7 + (M6 ^ 0x3F84D5B5B5470917ULL);
VF = ROTR64(VF ^ V3, 32);
VB += VF;
V7 = ROTR64(V7 ^ VB, 25);
V3 += V7 + (M7 ^ 0xC0AC29B7C97C50DDULL);
VF = ROTR64(VF ^ V3, 16);
VB += VF;
V7 = ROTR64(V7 ^ VB, 11);
V0 += V5 + 0x51310BA698DFB5ACULL;
VF = ROTR64(VF ^ V0, 32);
VA += VF;
V5 = ROTR64(V5 ^ VA, 25);
V0 += V5 + 0x9216D5D98979FB1BULL;
VF = ROTR64(VF ^ V0, 16);
VA += VF;
V5 = ROTR64(V5 ^ VA, 11);
V1 += V6 + 0xB8E1AFED6A267E96ULL;
VC = ROTR64(VC ^ V1, 32);
VB += VC;
V6 = ROTR64(V6 ^ VB, 25);
V1 += V6 + 0x2FFD72DBD01ADFB7ULL;
VC = ROTR64(VC ^ V1, 16);
VB += VC;
V6 = ROTR64(V6 ^ VB, 11);
V2 += V7 + 0x24A19947B3916CF7ULL;
VD = ROTR64(VD ^ V2, 32);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 25);
V2 += V7 + 0xBA7C9045F12C7F98ULL;
VD = ROTR64(VD ^ V2, 16);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 11);
V3 += V4 + 0x636920D871574E69ULL;
VE = ROTR64(VE ^ V3, 32);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 25);
V3 += V4 + 0x0801F2E2858EFE16ULL;
VE = ROTR64(VE ^ V3, 16);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 11);
V0 += V4 + 0x2FFD72DBD01ADFB7ULL;
VC = ROTR64(VC ^ V0, 32);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 25);
V0 += V4 + 0x0801F2E2858EFC16ULL;
VC = ROTR64(VC ^ V0, 16);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 11);
V1 += V5 + (M4 ^ 0x9216D5D98979FB1BULL);
VD = ROTR64(VD ^ V1, 32);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 25);
V1 += V5 + 0xC52821E638D01377ULL;
VD = ROTR64(VD ^ V1, 16);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 11);
V2 += V6 + 0x636920D871574E69ULL;
VE = ROTR64(VE ^ V2, 32);
VA += VE;
V6 = ROTR64(V6 ^ VA, 25);
V2 += V6 + 0xD1310BA698DFB7ACULL;
VE = ROTR64(VE ^ V2, 16);
VA += VE;
V6 = ROTR64(V6 ^ VA, 11);
V3 += V7 + 0xC0AC29B7C97C50DCULL;
VF = ROTR64(VF ^ V3, 32);
VB += VF;
V7 = ROTR64(V7 ^ VB, 25);
V3 += V7 + (M6 ^ 0x24A19947B3916CF7ULL);
VF = ROTR64(VF ^ V3, 16);
VB += VF;
V7 = ROTR64(V7 ^ VB, 11);
V0 += V5 + (M1 ^ 0xBA7C9045F12C7F99ULL);
VF = ROTR64(VF ^ V0, 32);
VA += VF;
V5 = ROTR64(V5 ^ VA, 25);
V0 += V5 + 0x13198A2E03707344ULL;
VF = ROTR64(VF ^ V0, 16);
VA += VF;
V5 = ROTR64(V5 ^ VA, 11);
V1 += V6 + (M0 ^ 0xA4093822299F31D0ULL);
VC = ROTR64(VC ^ V1, 32);
VB += VC;
V6 = ROTR64(V6 ^ VB, 25);
V1 += V6 + (M2 ^ 0x243F6A8885A308D3ULL);
VC = ROTR64(VC ^ V1, 16);
VB += VC;
V6 = ROTR64(V6 ^ VB, 11);
V2 += V7 + 0x3F84D5B5B5470917ULL;
VD = ROTR64(VD ^ V2, 32);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 25);
V2 += V7 + (M7 ^ 0xB8E1AFED6A267E96ULL);
VD = ROTR64(VD ^ V2, 16);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 11);
V3 += V4 + (M5 ^ 0x082EFA98EC4E6C89ULL);
VE = ROTR64(VE ^ V3, 32);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 25);
V3 += V4 + (M3 ^ 0xBE5466CF34E90C6CULL);
VE = ROTR64(VE ^ V3, 16);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 11);
V0 += V4 + 0x9216D5D98979FB1BULL;
VC = ROTR64(VC ^ V0, 32);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 25);
V0 += V4 + 0x38E1AFED6A267E96ULL;
VC = ROTR64(VC ^ V0, 16);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 11);
V1 += V5 + 0x243F6A8885A308D3ULL;
VD = ROTR64(VD ^ V1, 32);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 25);
V1 += V5 + (M0 ^ 0xBA7C9045F12C7F99ULL);
VD = ROTR64(VD ^ V1, 16);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 11);
V2 += V6 + (M5 ^ 0xA4093822299F31D0ULL);
VE = ROTR64(VE ^ V2, 32);
VA += VE;
V6 = ROTR64(V6 ^ VA, 25);
V2 += V6 + (M2 ^ 0xBE5466CF34E90C6CULL);
VE = ROTR64(VE ^ V2, 16);
VA += VE;
V6 = ROTR64(V6 ^ VA, 11);
V3 += V7 + 0x24A19947B3916EF7ULL;
VF = ROTR64(VF ^ V3, 32);
VB += VF;
V7 = ROTR64(V7 ^ VB, 25);
V3 += V7 + 0x636920D871574E68ULL;
VF = ROTR64(VF ^ V3, 16);
VB += VF;
V7 = ROTR64(V7 ^ VB, 11);
V0 += V5 + 0x0801F2E2858EFC16ULL;
VF = ROTR64(VF ^ V0, 32);
VA += VF;
V5 = ROTR64(V5 ^ VA, 25);
V0 += V5 + 0x2FFD72DBD01ADFB7ULL;
VF = ROTR64(VF ^ V0, 16);
VA += VF;
V5 = ROTR64(V5 ^ VA, 11);
V1 += V6 + (M3 ^ 0xC0AC29B7C97C50DDULL);
VC = ROTR64(VC ^ V1, 32);
VB += VC;
V6 = ROTR64(V6 ^ VB, 25);
V1 += V6 + (M6 ^ 0x082EFA98EC4E6C89ULL);
VC = ROTR64(VC ^ V1, 16);
VB += VC;
V6 = ROTR64(V6 ^ VB, 11);
V2 += V7 + (M7 ^ 0x13198A2E03707344ULL);
VD = ROTR64(VD ^ V2, 32);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 25);
V2 += V7 + (M1 ^ 0x3F84D5B5B5470917ULL);
VD = ROTR64(VD ^ V2, 16);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 11);
V3 += V4 + 0x452821E638D01377ULL;
VE = ROTR64(VE ^ V3, 32);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 25);
V3 += V4 + (M4 ^ 0xD1310BA698DFB5ACULL);
VE = ROTR64(VE ^ V3, 16);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 11);
V0 += V4 + (M7 ^ 0xD1310BA698DFB5ACULL);
VC = ROTR64(VC ^ V0, 32);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 25);
V0 += V4 + 0x3F84D5B5B5470917ULL;
VC = ROTR64(VC ^ V0, 16);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 11);
V1 += V5 + (M3 ^ 0x13198A2E03707344ULL);
VD = ROTR64(VD ^ V1, 32);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 25);
V1 += V5 + (M1 ^ 0x082EFA98EC4E6C89ULL);
VD = ROTR64(VD ^ V1, 16);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 11);
V2 += V6 + 0xBA7C9045F12C7F98ULL;
VE = ROTR64(VE ^ V2, 32);
VA += VE;
V6 = ROTR64(V6 ^ VA, 25);
V2 += V6 + 0x24A19947B3916CF7ULL;
VE = ROTR64(VE ^ V2, 16);
VA += VE;
V6 = ROTR64(V6 ^ VA, 11);
V3 += V7 + 0x0801F2E2858EFC16ULL;
VF = ROTR64(VF ^ V3, 32);
VB += VF;
V7 = ROTR64(V7 ^ VB, 25);
V3 += V7 + 0xB8E1AFED6A267E96ULL;
VF = ROTR64(VF ^ V3, 16);
VB += VF;
V7 = ROTR64(V7 ^ VB, 11);
V0 += V5 + (M2 ^ 0xC0AC29B7C97C50DDULL);
VF = ROTR64(VF ^ V0, 32);
VA += VF;
V5 = ROTR64(V5 ^ VA, 25);
V0 += V5 + (M6 ^ 0xA4093822299F31D0ULL);
VF = ROTR64(VF ^ V0, 16);
VA += VF;
V5 = ROTR64(V5 ^ VA, 11);
V1 += V6 + (M5 ^ 0x2FFD72DBD01ADFB7ULL);
VC = ROTR64(VC ^ V1, 32);
VB += VC;
V6 = ROTR64(V6 ^ VB, 25);
V1 += V6 + 0xBE5466CF34E90C6CULL;
VC = ROTR64(VC ^ V1, 16);
VB += VC;
V6 = ROTR64(V6 ^ VB, 11);
V2 += V7 + (M4 ^ 0x243F6A8885A308D3ULL);
VD = ROTR64(VD ^ V2, 32);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 25);
V2 += V7 + (M0 ^ 0x452821E638D01377ULL);
VD = ROTR64(VD ^ V2, 16);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 11);
V3 += V4 + 0x9216D5D98979F91BULL;
VE = ROTR64(VE ^ V3, 32);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 25);
V3 += V4 + 0xE36920D871574E69ULL;
VE = ROTR64(VE ^ V3, 16);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 11);
V0 += V4 + 0x243F6A8885A308D3ULL;
VC = ROTR64(VC ^ V0, 32);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 25);
V0 += V4 + (M0 ^ 0xD1310BA698DFB5ACULL);
VC = ROTR64(VC ^ V0, 16);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 11);
V1 += V5 + (M5 ^ 0x3F84D5B5B5470917ULL);
VD = ROTR64(VD ^ V1, 32);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 25);
V1 += V5 + (M7 ^ 0xBE5466CF34E90C6CULL);
VD = ROTR64(VD ^ V1, 16);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 11);
V2 += V6 + (M2 ^ 0x452821E638D01377ULL);
VE = ROTR64(VE ^ V2, 32);
VA += VE;
V6 = ROTR64(V6 ^ VA, 25);
V2 += V6 + (M4 ^ 0xA4093822299F31D0ULL);
VE = ROTR64(VE ^ V2, 16);
VA += VE;
V6 = ROTR64(V6 ^ VA, 11);
V3 += V7 + 0x636920D871574E69ULL;
VF = ROTR64(VF ^ V3, 32);
VB += VF;
V7 = ROTR64(V7 ^ VB, 25);
V3 += V7 + 0x2FFD72DBD01ADDB7ULL;
VF = ROTR64(VF ^ V3, 16);
VB += VF;
V7 = ROTR64(V7 ^ VB, 11);
V0 += V5 + 0x13198A2E03707344ULL;
VF = ROTR64(VF ^ V0, 32);
VA += VF;
V5 = ROTR64(V5 ^ VA, 25);
V0 += V5 + (M1 ^ 0x0801F2E2858EFC16ULL);
VF = ROTR64(VF ^ V0, 16);
VA += VF;
V5 = ROTR64(V5 ^ VA, 11);
V1 += V6 + 0xBA7C9045F12C7F99ULL;
VC = ROTR64(VC ^ V1, 32);
VB += VC;
V6 = ROTR64(V6 ^ VB, 25);
V1 += V6 + 0xB8E1AFED6A267E96ULL;
VC = ROTR64(VC ^ V1, 16);
VB += VC;
V6 = ROTR64(V6 ^ VB, 11);
V2 += V7 + (M6 ^ 0x9216D5D98979FB1BULL);
VD = ROTR64(VD ^ V2, 32);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 25);
V2 += V7 + 0x40AC29B7C97C50DDULL;
VD = ROTR64(VD ^ V2, 16);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 11);
V3 += V4 + (M3 ^ 0x24A19947B3916CF7ULL);
VE = ROTR64(VE ^ V3, 32);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 25);
V3 += V4 + 0x082EFA98EC4E6C88ULL;
VE = ROTR64(VE ^ V3, 16);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 11);
V0 += V4 + (M2 ^ 0xBA7C9045F12C7F99ULL);
VC = ROTR64(VC ^ V0, 32);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 25);
V0 += V4 + 0xA4093822299F31D0ULL;
VC = ROTR64(VC ^ V0, 16);
V8 += VC;
V4 = ROTR64(V4 ^ V8, 11);
V1 += V5 + (M6 ^ 0x2FFD72DBD01ADFB7ULL);
VD = ROTR64(VD ^ V1, 32);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 25);
V1 += V5 + 0xC0AC29B7C97C50DDULL;
VD = ROTR64(VD ^ V1, 16);
V9 += VD;
V5 = ROTR64(V5 ^ V9, 11);
V2 += V6 + (M0 ^ 0xB8E1AFED6A267E96ULL);
VE = ROTR64(VE ^ V2, 32);
VA += VE;
V6 = ROTR64(V6 ^ VA, 25);
V2 += V6 + 0x243F6A8885A308D3ULL;
VE = ROTR64(VE ^ V2, 16);
VA += VE;
V6 = ROTR64(V6 ^ VA, 11);
V3 += V7 + 0x882EFA98EC4E6C89ULL;
VF = ROTR64(VF ^ V3, 32);
VB += VF;
V7 = ROTR64(V7 ^ VB, 25);
V3 += V7 + (M3 ^ 0x9216D5D98979FB1BULL);
VF = ROTR64(VF ^ V3, 16);
VB += VF;
V7 = ROTR64(V7 ^ VB, 11);
V0 += V5 + (M4 ^ 0x24A19947B3916CF7ULL);
VF = ROTR64(VF ^ V0, 32);
VA += VF;
V5 = ROTR64(V5 ^ VA, 25);
V0 += V5 + 0x452821E638D01376ULL;
VF = ROTR64(VF ^ V0, 16);
VA += VF;
V5 = ROTR64(V5 ^ VA, 11);
V1 += V6 + (M7 ^ 0xBE5466CF34E90C6CULL);
VC = ROTR64(VC ^ V1, 32);
VB += VC;
V6 = ROTR64(V6 ^ VB, 25);
V1 += V6 + (M5 ^ 0x3F84D5B5B5470917ULL);
VC = ROTR64(VC ^ V1, 16);
VB += VC;
V6 = ROTR64(V6 ^ VB, 11);
V2 += V7 + 0x0801F2E2858EFE16ULL;
VD = ROTR64(VD ^ V2, 32);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 25);
V2 += V7 + 0x636920D871574E69ULL;
VD = ROTR64(VD ^ V2, 16);
V8 += VD;
V7 = ROTR64(V7 ^ V8, 11);
V3 += V4 + (M1 ^ 0xD1310BA698DFB5ACULL);
VE = ROTR64(VE ^ V3, 32);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 25);
V3 += V4 + 0x13198A2E03707344ULL;
VE = ROTR64(VE ^ V3, 16);
V9 += VE;
V4 = ROTR64(V4 ^ V9, 11);

#undef M0
#undef M1
#undef M2
#undef M3
#undef M4
#undef M5
#undef M6
#undef M7

hash64[0] = BSWAP64(V0 ^ V8 ^ 0x6A09E667F3BCC908ULL);
hash64[1] = BSWAP64(V1 ^ V9 ^ 0xBB67AE8584CAA73BULL);
hash64[2] = BSWAP64(V2 ^ VA ^ 0x3C6EF372FE94F82BULL);
hash64[3] = BSWAP64(V3 ^ VB ^ 0xA54FF53A5F1D36F1ULL);
hash64[4] = BSWAP64(V4 ^ VC ^ 0x510E527FADE682D1ULL);
hash64[5] = BSWAP64(V5 ^ VD ^ 0x9B05688C2B3E6C1FULL);
hash64[6] = BSWAP64(V6 ^ VE ^ 0x1F83D9ABFB41BD6BULL);
hash64[7] = BSWAP64(V7 ^ VF ^ 0x5BE0CD19137E2179ULL);



Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on October 22, 2014, 01:33:33 AM
BMW:
Code:
INLINE void QuarkBMW0_64(UINT64 *hash64)
{
UINT64 bmw_h2[16];
UINT64 bmw_qt[32];
UINT64 bmw_xl, bmw_xh;
UINT64 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
UINT64 spare0, spare1;

tmp0 = ROTL64(hash64[0], 1);
tmp1 = ROTL64(hash64[1], 2);
tmp2 = ROTL64(hash64[2], 3);
tmp3 = ROTL64(hash64[3], 4);
tmp4 = ROTL64(hash64[4], 5);
tmp5 = ROTL64(hash64[5], 6);
tmp6 = ROTL64(hash64[6], 7);
tmp7 = ROTL64(hash64[7], 8);

bmw_qt[16] = 0xB8B9BABBBCBDBEBFULL ^ (0x5555555555555550ULL + tmp0 + tmp3);
bmw_qt[17] = 0xC0C1C2C3C4C5C6C7ULL ^ (0x5aaaaaaaaaaaaaa5ULL + tmp1 + tmp4);
bmw_qt[18] = 0xC8C9CACBCCCDCECFULL ^ (0x5ffffffffffffffaULL + tmp2 + tmp5);
bmw_qt[19] = 0xD0D1D2D3D4D5D6D7ULL ^ (0x655555555555554fULL + tmp3 + tmp6);
bmw_qt[20] = 0xD8D9DADBDCDDDEDFULL ^ (0x6aaaaaaaaaaaaaa4ULL + tmp4 + tmp7);
bmw_qt[21] = 0xE0E1E2E3E4E5E6E7ULL ^ (0x6ffffffffe00fff9ULL + tmp5);
bmw_qt[22] = 0xE8E9EAEBECEDEEEFULL ^ (0x755555555555554eULL + tmp6 - tmp0);
bmw_qt[23] = 0xF0F1F2F3F4F5F6F7ULL ^ (0x7aaaaaaaaaaaaaa3ULL + tmp7 - tmp1);
bmw_qt[24] = 0xF8F9FAFBFCFDFEFFULL ^ (0x800000000000fff8ULL - tmp2);
bmw_qt[25] = 0x8081828384858687ULL ^ (0x855555555555554dULL - tmp3);
bmw_qt[26] = 0x88898A8B8C8D8E8FULL ^ (0x8aaaaaaaaaaaaaa2ULL - tmp4);
bmw_qt[27] = 0x9091929394959697ULL ^ (0x8ffffffffffffff7ULL - tmp5);
bmw_qt[28] = 0x98999A9B9C9D9E9FULL ^ (0x955555555755554cULL - tmp6);
bmw_qt[29] = 0xA0A1A2A3A4A5A6A7ULL ^ (0x9aaaaaaaaaaaaaa1ULL + tmp0 - tmp7);
bmw_qt[30] = 0xA8A9AAABACADAEAFULL ^ (0x9ffffffffffefff6ULL + tmp1);
bmw_qt[31] = 0xB0B1B2B3B4B5B6B7ULL ^ (0xa55555555755554bULL + tmp2);
// free tmpX

tmp0 = hash64[0] ^ 0x8081828384858687ULL;
tmp1 = hash64[1] ^ 0x88898A8B8C8D8E8FULL;
tmp2 = hash64[2] ^ 0x9091929394959697ULL;
tmp3 = hash64[3] ^ 0x98999A9B9C9D9E9FULL;
tmp4 = hash64[4] ^ 0xA0A1A2A3A4A5A6A7ULL;
tmp5 = hash64[5] ^ 0xA8A9AAABACADAEAFULL;
tmp6 = hash64[7] ^ 0xB8B9BABBBCBDBEBFULL;
tmp7 = hash64[6] ^ 0xB0B1B2B3B4B5B6B7ULL;
spare0 = tmp4 + tmp6;
spare1 = tmp3 - tmp7;


{
UINT64 pre_01 = (0xaaadb0b3b6b9bcbdULL + tmp5 - tmp6);
bmw_qt[0] = ((pre_01 >> 1) ^ SHIFTL64(pre_01, 3) ^ ROTL64(pre_01, 4) ^ ROTL64(pre_01, 37)) + 0x88898A8B8C8D8E8FULL;
bmw_qt[16] += (bmw_qt[0] >> 1) ^ SHIFTL64(bmw_qt[0], 2) ^ ROTL64(bmw_qt[0], 13) ^ ROTL64(bmw_qt[0], 43);
}

{
UINT64 pre_02 = (0x1010101010101290ULL + tmp7);
bmw_qt[1] = ((pre_02 >> 1) ^ SHIFTL64(pre_02, 2) ^ ROTL64(pre_02, 13) ^ ROTL64(pre_02, 43)) + 0x9091929394959697ULL;
bmw_qt[16] += (bmw_qt[1] >> 2) ^ SHIFTL64(bmw_qt[1], 1) ^ ROTL64(bmw_qt[1], 19) ^ ROTL64(bmw_qt[1], 53);
bmw_qt[17] += (bmw_qt[1] >> 1) ^ SHIFTL64(bmw_qt[1], 2) ^ ROTL64(bmw_qt[1], 13) ^ ROTL64(bmw_qt[1], 43);
}

{
UINT64 pre_03 = (0xe0e1e2e3e4e5e4e7ULL + tmp0 + tmp6);
bmw_qt[2] = ((pre_03 >> 2) ^ SHIFTL64(pre_03, 1) ^ ROTL64(pre_03, 19) ^ ROTL64(pre_03, 53)) + 0x98999A9B9C9D9E9FULL;
bmw_qt[16] += (bmw_qt[2] >> 2) ^ SHIFTL64(bmw_qt[2], 2) ^ ROTL64(bmw_qt[2], 28) ^ ROTL64(bmw_qt[2], 59);
bmw_qt[17] += (bmw_qt[2] >> 2) ^ SHIFTL64(bmw_qt[2], 1) ^ ROTL64(bmw_qt[2], 19) ^ ROTL64(bmw_qt[2], 53);
bmw_qt[18] += bmw_qt[2] ;
}

{
UINT64 pre_04 = (0xd8d9dadbdcddde5fULL + tmp0 - tmp1);
bmw_qt[3] = ((pre_04 >> 2) ^ SHIFTL64(pre_04, 2) ^ ROTL64(pre_04, 28) ^ ROTL64(pre_04, 59)) + 0xA0A1A2A3A4A5A6A7ULL;
bmw_qt[16] += (bmw_qt[3] >> 1) ^ SHIFTL64(bmw_qt[3], 3) ^ ROTL64(bmw_qt[3], 4) ^ ROTL64(bmw_qt[3], 37);
bmw_qt[17] += (bmw_qt[3] >> 2) ^ SHIFTL64(bmw_qt[3], 2) ^ ROTL64(bmw_qt[3], 28) ^ ROTL64(bmw_qt[3], 59);
bmw_qt[18] += ROTL64(bmw_qt[3], 5) ;
bmw_qt[19] += bmw_qt[3] ;
}

{
UINT64 pre_05 = (0xfefdfcfbfaf9f8f9ULL + tmp1 + tmp2);
bmw_qt[4] = ((pre_05 >> 1) ^ pre_05) + 0xA8A9AAABACADAEAFULL;
bmw_qt[16] += (bmw_qt[4] >> 1) ^ SHIFTL64(bmw_qt[4], 2) ^ ROTL64(bmw_qt[4], 13) ^ ROTL64(bmw_qt[4], 43);
bmw_qt[17] += (bmw_qt[4] >> 1) ^ SHIFTL64(bmw_qt[4], 3) ^ ROTL64(bmw_qt[4], 4) ^ ROTL64(bmw_qt[4], 37);
bmw_qt[18] += bmw_qt[4] ;
bmw_qt[19] += ROTL64(bmw_qt[4], 5) ;
bmw_qt[20] += bmw_qt[4] ;
}

{
UINT64 pre_06 = (0xe8e9eaebecedecefULL + tmp3 - tmp2);
bmw_qt[5] = ((pre_06 >> 1) ^ SHIFTL64(pre_06, 3) ^ ROTL64(pre_06, 4) ^ ROTL64(pre_06, 37)) + 0xB0B1B2B3B4B5B6B7ULL;
bmw_qt[16] += (bmw_qt[5] >> 2) ^ SHIFTL64(bmw_qt[5], 1) ^ ROTL64(bmw_qt[5], 19) ^ ROTL64(bmw_qt[5], 53);
bmw_qt[17] += (bmw_qt[5] >> 1) ^ SHIFTL64(bmw_qt[5], 2) ^ ROTL64(bmw_qt[5], 13) ^ ROTL64(bmw_qt[5], 43);
bmw_qt[19] += bmw_qt[5] ;
bmw_qt[20] += ROTL64(bmw_qt[5], 5) ;
bmw_qt[21] += bmw_qt[5] ;
}

{
UINT64 pre_00 = (0x1010101010101010ULL + tmp4 - tmp0 - tmp3);
bmw_qt[6] = ((pre_00 >> 1) ^ SHIFTL64(pre_00, 2) ^ ROTL64(pre_00, 13) ^ ROTL64(pre_00, 43)) + 0xB8B9BABBBCBDBEBFULL;
bmw_qt[16] += (bmw_qt[6] >> 2) ^ SHIFTL64(bmw_qt[6], 2) ^ ROTL64(bmw_qt[6], 28) ^ ROTL64(bmw_qt[6], 59);
bmw_qt[17] += (bmw_qt[6] >> 2) ^ SHIFTL64(bmw_qt[6], 1) ^ ROTL64(bmw_qt[6], 19) ^ ROTL64(bmw_qt[6], 53);
bmw_qt[20] += bmw_qt[6] ;
bmw_qt[21] += ROTL64(bmw_qt[6], 5) ;
bmw_qt[22] += bmw_qt[6] ;
}

{
UINT64 pre_07 = (0x2e2c2a2826242222ULL + tmp1 - tmp4 - tmp5);
bmw_qt[7] = ((pre_07 >> 2) ^ SHIFTL64(pre_07, 1) ^ ROTL64(pre_07, 19) ^ ROTL64(pre_07, 53)) + 0xC0C1C2C3C4C5C6C7ULL;
bmw_qt[16] += (bmw_qt[7] >> 1) ^ SHIFTL64(bmw_qt[7], 3) ^ ROTL64(bmw_qt[7], 4) ^ ROTL64(bmw_qt[7], 37);
bmw_qt[17] += (bmw_qt[7] >> 2) ^ SHIFTL64(bmw_qt[7], 2) ^ ROTL64(bmw_qt[7], 28) ^ ROTL64(bmw_qt[7], 59);
bmw_qt[21] += bmw_qt[7] ;
bmw_qt[22] += ROTL64(bmw_qt[7], 5) ;
bmw_qt[23] += bmw_qt[7] ;
}

{
UINT64 pre_08 = (0xefefefefefeff1f0ULL + tmp2 - tmp5 - tmp7);
bmw_qt[8] = ((pre_08 >> 2) ^ SHIFTL64(pre_08, 2) ^ ROTL64(pre_08, 28) ^ ROTL64(pre_08, 59)) + 0xC8C9CACBCCCDCECFULL;
bmw_qt[16] += (bmw_qt[8] >> 1) ^ SHIFTL64(bmw_qt[8], 2) ^ ROTL64(bmw_qt[8], 13) ^ ROTL64(bmw_qt[8], 43);
bmw_qt[17] += (bmw_qt[8] >> 1) ^ SHIFTL64(bmw_qt[8], 3) ^ ROTL64(bmw_qt[8], 4) ^ ROTL64(bmw_qt[8], 37);
bmw_qt[22] += bmw_qt[8] ;
bmw_qt[23] += ROTL64(bmw_qt[8], 5) ;
bmw_qt[24] += bmw_qt[8] ;
}

{
UINT64 pre_09 = (0xF0F1F2F3F4F5F6F7ULL + tmp0 - spare1 - tmp6);
bmw_qt[9] = ((pre_09 >> 1) ^ pre_09) + 0xD0D1D2D3D4D5D6D7ULL;
bmw_qt[16] += (bmw_qt[9] >> 2) ^ SHIFTL64(bmw_qt[9], 1) ^ ROTL64(bmw_qt[9], 19) ^ ROTL64(bmw_qt[9], 53);
bmw_qt[17] += (bmw_qt[9] >> 1) ^ SHIFTL64(bmw_qt[9], 2) ^ ROTL64(bmw_qt[9], 13) ^ ROTL64(bmw_qt[9], 43);
bmw_qt[23] += bmw_qt[9] ;
bmw_qt[24] += ROTL64(bmw_qt[9], 5) ;
bmw_qt[25] += bmw_qt[9] ;
}

{
UINT64 pre_10 = (0xb9bbbdbfc1c3c346ULL - tmp1 - spare0);
bmw_qt[10] = ((pre_10 >> 1) ^ SHIFTL64(pre_10, 3) ^ ROTL64(pre_10, 4) ^ ROTL64(pre_10, 37)) + 0xD8D9DADBDCDDDEDFULL;
bmw_qt[16] += (bmw_qt[10] >> 2) ^ SHIFTL64(bmw_qt[10], 2) ^ ROTL64(bmw_qt[10], 28) ^ ROTL64(bmw_qt[10], 59);
bmw_qt[17] += (bmw_qt[10] >> 2) ^ SHIFTL64(bmw_qt[10], 1) ^ ROTL64(bmw_qt[10], 19) ^ ROTL64(bmw_qt[10], 53);
bmw_qt[24] += bmw_qt[10];
bmw_qt[25] += ROTL64(bmw_qt[10], 5);
bmw_qt[26] += bmw_qt[10];
}

{
UINT64 pre_11 = (0x898b8d8f91939516ULL - tmp0 - tmp2 - tmp5);
bmw_qt[11] = ((pre_11 >> 1) ^ SHIFTL64(pre_11, 2) ^ ROTL64(pre_11, 13) ^ ROTL64(pre_11, 43)) + 0xE0E1E2E3E4E5E6E7ULL;
bmw_qt[16] += (bmw_qt[11] >> 1) ^ SHIFTL64(bmw_qt[11], 3) ^ ROTL64(bmw_qt[11], 4) ^ ROTL64(bmw_qt[11], 37);
bmw_qt[17] += (bmw_qt[11] >> 2) ^ SHIFTL64(bmw_qt[11], 2) ^ ROTL64(bmw_qt[11], 28) ^ ROTL64(bmw_qt[11], 59);
bmw_qt[25] += bmw_qt[11];
bmw_qt[26] += ROTL64(bmw_qt[11], 5);
bmw_qt[27] += bmw_qt[11];
}

{
UINT64 pre_12 = (0x0808080808080808ULL + tmp1 + spare1);
bmw_qt[12] = ((pre_12 >> 2) ^ SHIFTL64(pre_12, 1) ^ ROTL64(pre_12, 19) ^ ROTL64(pre_12, 53)) + 0xE8E9EAEBECEDEEEFULL;
bmw_qt[16] += (bmw_qt[12] >> 1) ^ SHIFTL64(bmw_qt[12], 2) ^ ROTL64(bmw_qt[12], 13) ^ ROTL64(bmw_qt[12], 43);
bmw_qt[17] += (bmw_qt[12] >> 1) ^ SHIFTL64(bmw_qt[12], 3) ^ ROTL64(bmw_qt[12], 4) ^ ROTL64(bmw_qt[12], 37);
bmw_qt[26] += bmw_qt[12];
bmw_qt[27] += ROTL64(bmw_qt[12], 5);
bmw_qt[28] += bmw_qt[12];
}

{
UINT64 pre_13 = (0xa9abadafb1b3b5b6ULL + tmp2 + spare0);
bmw_qt[13] = ((pre_13 >> 2) ^ SHIFTL64(pre_13, 2) ^ ROTL64(pre_13, 28) ^ ROTL64(pre_13, 59)) + 0xF0F1F2F3F4F5F6F7ULL;
bmw_qt[16] += (bmw_qt[13] >> 2) ^ SHIFTL64(bmw_qt[13], 1) ^ ROTL64(bmw_qt[13], 19) ^ ROTL64(bmw_qt[13], 53);
bmw_qt[17] += (bmw_qt[13] >> 1) ^ SHIFTL64(bmw_qt[13], 2) ^ ROTL64(bmw_qt[13], 13) ^ ROTL64(bmw_qt[13], 43);
bmw_qt[27] += bmw_qt[13];
bmw_qt[28] += ROTL64(bmw_qt[13], 5);
bmw_qt[29] += bmw_qt[13];
}

{
UINT64 pre_14 = (0x0706050403020081ULL + tmp3 - tmp5);
bmw_qt[14] = ((pre_14 >> 1) ^ pre_14) + 0xF8F9FAFBFCFDFEFFULL;
bmw_qt[16] += (bmw_qt[14] >> 2) ^ SHIFTL64(bmw_qt[14], 2) ^ ROTL64(bmw_qt[14], 28) ^ ROTL64(bmw_qt[14], 59);
bmw_qt[17] += (bmw_qt[14] >> 2) ^ SHIFTL64(bmw_qt[14], 1) ^ ROTL64(bmw_qt[14], 19) ^ ROTL64(bmw_qt[14], 53);
bmw_qt[28] += bmw_qt[14];
bmw_qt[29] += ROTL64(bmw_qt[14], 5);
bmw_qt[30] += bmw_qt[14];
}

{
UINT64 pre_15 = (0x0102030405060707ULL - tmp4 - tmp7);
bmw_qt[15] = ((pre_15 >> 1) ^ SHIFTL64(pre_15, 3) ^ ROTL64(pre_15, 4) ^ ROTL64(pre_15, 37)) + 0x8081828384858687ULL;
bmw_qt[16] += (bmw_qt[15] >> 1) ^ SHIFTL64(bmw_qt[15], 3) ^ ROTL64(bmw_qt[15], 4) ^ ROTL64(bmw_qt[15], 37);
bmw_qt[17] += (bmw_qt[15] >> 2) ^ SHIFTL64(bmw_qt[15], 2) ^ ROTL64(bmw_qt[15], 28) ^ ROTL64(bmw_qt[15], 59);
bmw_qt[17] += (bmw_qt[16] >> 1) ^ SHIFTL64(bmw_qt[16], 3) ^ ROTL64(bmw_qt[16], 4) ^ ROTL64(bmw_qt[16], 37);
bmw_qt[29] += bmw_qt[15];
bmw_qt[30] += ROTL64(bmw_qt[15], 5);
bmw_qt[31] += bmw_qt[15];
bmw_qt[31] += ROTL64(bmw_qt[16], 5);
bmw_qt[30] += bmw_qt[16];
bmw_qt[31] += bmw_qt[17];
}
// free tmpX
// free spare0, spare1


bmw_qt[18] += ROTL64(bmw_qt[5] , 11) + bmw_qt[6]  + ROTL64(bmw_qt[7] , 27) + bmw_qt[8]  + ROTL64(bmw_qt[9], 32) + bmw_qt[10] + ROTL64(bmw_qt[11], 37) + bmw_qt[12] + ROTL64(bmw_qt[13], 43) + bmw_qt[14] + ROTL64(bmw_qt[15], 53) + ((bmw_qt[16] >> 1) ^ bmw_qt[16]) + ((bmw_qt[17] >> 2) ^ bmw_qt[17]);
bmw_qt[19] += ROTL64(bmw_qt[6] , 11) + bmw_qt[7]  + ROTL64(bmw_qt[8] , 27) + bmw_qt[9]  + ROTL64(bmw_qt[10], 32) + bmw_qt[11] + ROTL64(bmw_qt[12], 37) + bmw_qt[13] + ROTL64(bmw_qt[14], 43) + bmw_qt[15] + ROTL64(bmw_qt[16], 53) + ((bmw_qt[17] >> 1) ^ bmw_qt[17]) + ((bmw_qt[18] >> 2) ^ bmw_qt[18]);
bmw_qt[20] += ROTL64(bmw_qt[7] , 11) + bmw_qt[8]  + ROTL64(bmw_qt[9] , 27) + bmw_qt[10] + ROTL64(bmw_qt[11], 32) + bmw_qt[12] + ROTL64(bmw_qt[13], 37) + bmw_qt[14] + ROTL64(bmw_qt[15], 43) + bmw_qt[16] + ROTL64(bmw_qt[17], 53) + ((bmw_qt[18] >> 1) ^ bmw_qt[18]) + ((bmw_qt[19] >> 2) ^ bmw_qt[19]);
bmw_qt[21] += ROTL64(bmw_qt[8] , 11) + bmw_qt[9]  + ROTL64(bmw_qt[10], 27) + bmw_qt[11] + ROTL64(bmw_qt[12], 32) + bmw_qt[13] + ROTL64(bmw_qt[14], 37) + bmw_qt[15] + ROTL64(bmw_qt[16], 43) + bmw_qt[17] + ROTL64(bmw_qt[18], 53) + ((bmw_qt[19] >> 1) ^ bmw_qt[19]) + ((bmw_qt[20] >> 2) ^ bmw_qt[20]);
bmw_qt[22] += ROTL64(bmw_qt[9] , 11) + bmw_qt[10] + ROTL64(bmw_qt[11], 27) + bmw_qt[12] + ROTL64(bmw_qt[13], 32) + bmw_qt[14] + ROTL64(bmw_qt[15], 37) + bmw_qt[16] + ROTL64(bmw_qt[17], 43) + bmw_qt[18] + ROTL64(bmw_qt[19], 53) + ((bmw_qt[20] >> 1) ^ bmw_qt[20]) + ((bmw_qt[21] >> 2) ^ bmw_qt[21]);
bmw_qt[23] += ROTL64(bmw_qt[10], 11) + bmw_qt[11] + ROTL64(bmw_qt[12], 27) + bmw_qt[13] + ROTL64(bmw_qt[14], 32) + bmw_qt[15] + ROTL64(bmw_qt[16], 37) + bmw_qt[17] + ROTL64(bmw_qt[18], 43) + bmw_qt[19] + ROTL64(bmw_qt[20], 53) + ((bmw_qt[21] >> 1) ^ bmw_qt[21]) + ((bmw_qt[22] >> 2) ^ bmw_qt[22]);
bmw_qt[24] += ROTL64(bmw_qt[11], 11) + bmw_qt[12] + ROTL64(bmw_qt[13], 27) + bmw_qt[14] + ROTL64(bmw_qt[15], 32) + bmw_qt[16] + ROTL64(bmw_qt[17], 37) + bmw_qt[18] + ROTL64(bmw_qt[19], 43) + bmw_qt[20] + ROTL64(bmw_qt[21], 53) + ((bmw_qt[22] >> 1) ^ bmw_qt[22]) + ((bmw_qt[23] >> 2) ^ bmw_qt[23]);
bmw_qt[25] += ROTL64(bmw_qt[12], 11) + bmw_qt[13] + ROTL64(bmw_qt[14], 27) + bmw_qt[15] + ROTL64(bmw_qt[16], 32) + bmw_qt[17] + ROTL64(bmw_qt[18], 37) + bmw_qt[19] + ROTL64(bmw_qt[20], 43) + bmw_qt[21] + ROTL64(bmw_qt[22], 53) + ((bmw_qt[23] >> 1) ^ bmw_qt[23]) + ((bmw_qt[24] >> 2) ^ bmw_qt[24]);
bmw_qt[26] += ROTL64(bmw_qt[13], 11) + bmw_qt[14] + ROTL64(bmw_qt[15], 27) + bmw_qt[16] + ROTL64(bmw_qt[17], 32) + bmw_qt[18] + ROTL64(bmw_qt[19], 37) + bmw_qt[20] + ROTL64(bmw_qt[21], 43) + bmw_qt[22] + ROTL64(bmw_qt[23], 53) + ((bmw_qt[24] >> 1) ^ bmw_qt[24]) + ((bmw_qt[25] >> 2) ^ bmw_qt[25]);
bmw_qt[27] += ROTL64(bmw_qt[14], 11) + bmw_qt[15] + ROTL64(bmw_qt[16], 27) + bmw_qt[17] + ROTL64(bmw_qt[18], 32) + bmw_qt[19] + ROTL64(bmw_qt[20], 37) + bmw_qt[21] + ROTL64(bmw_qt[22], 43) + bmw_qt[23] + ROTL64(bmw_qt[24], 53) + ((bmw_qt[25] >> 1) ^ bmw_qt[25]) + ((bmw_qt[26] >> 2) ^ bmw_qt[26]);
bmw_qt[28] += ROTL64(bmw_qt[15], 11) + bmw_qt[16] + ROTL64(bmw_qt[17], 27) + bmw_qt[18] + ROTL64(bmw_qt[19], 32) + bmw_qt[20] + ROTL64(bmw_qt[21], 37) + bmw_qt[22] + ROTL64(bmw_qt[23], 43) + bmw_qt[24] + ROTL64(bmw_qt[25], 53) + ((bmw_qt[26] >> 1) ^ bmw_qt[26]) + ((bmw_qt[27] >> 2) ^ bmw_qt[27]);
bmw_qt[29] += ROTL64(bmw_qt[16], 11) + bmw_qt[17] + ROTL64(bmw_qt[18], 27) + bmw_qt[19] + ROTL64(bmw_qt[20], 32) + bmw_qt[21] + ROTL64(bmw_qt[22], 37) + bmw_qt[23] + ROTL64(bmw_qt[24], 43) + bmw_qt[25] + ROTL64(bmw_qt[26], 53) + ((bmw_qt[27] >> 1) ^ bmw_qt[27]) + ((bmw_qt[28] >> 2) ^ bmw_qt[28]);
bmw_qt[30] += ROTL64(bmw_qt[17], 11) + bmw_qt[18] + ROTL64(bmw_qt[19], 27) + bmw_qt[20] + ROTL64(bmw_qt[21], 32) + bmw_qt[22] + ROTL64(bmw_qt[23], 37) + bmw_qt[24] + ROTL64(bmw_qt[25], 43) + bmw_qt[26] + ROTL64(bmw_qt[27], 53) + ((bmw_qt[28] >> 1) ^ bmw_qt[28]) + ((bmw_qt[29] >> 2) ^ bmw_qt[29]);
bmw_qt[31] += ROTL64(bmw_qt[18], 11) + bmw_qt[19] + ROTL64(bmw_qt[20], 27) + bmw_qt[21] + ROTL64(bmw_qt[22], 32) + bmw_qt[23] + ROTL64(bmw_qt[24], 37) + bmw_qt[25] + ROTL64(bmw_qt[26], 43) + bmw_qt[27] + ROTL64(bmw_qt[28], 53) + ((bmw_qt[29] >> 1) ^ bmw_qt[29]) + ((bmw_qt[30] >> 2) ^ bmw_qt[30]);

bmw_xl = bmw_qt[16] ^ bmw_qt[17] ^ bmw_qt[18] ^ bmw_qt[19] ^ bmw_qt[20] ^ bmw_qt[21] ^ bmw_qt[22] ^ bmw_qt[23];
bmw_xh = bmw_xl ^ bmw_qt[24] ^ bmw_qt[25] ^ bmw_qt[26] ^ bmw_qt[27] ^ bmw_qt[28] ^ bmw_qt[29] ^ bmw_qt[30] ^ bmw_qt[31];

bmw_h2[0]  = ((bmw_xh <<  5) ^ (bmw_qt[16] >>  5) ^ hash64[0])
+ (bmw_xl ^ bmw_qt[24] ^ bmw_qt[0]);
bmw_h2[1]  = ((bmw_xh >>  7) ^ (bmw_qt[17] <<  8) ^ hash64[1])
+ (bmw_xl ^ bmw_qt[25] ^ bmw_qt[1]);
bmw_h2[2]  = ((bmw_xh >>  5) ^ (bmw_qt[18] <<  5) ^ hash64[2])
+ (bmw_xl ^ bmw_qt[26] ^ bmw_qt[2]);
bmw_h2[3]  = ((bmw_xh >>  1) ^ (bmw_qt[19] <<  5) ^ hash64[3])
+ (bmw_xl ^ bmw_qt[27] ^ bmw_qt[3]);
bmw_h2[4]  = ((bmw_xh >>  3) ^ (bmw_qt[20] <<  0) ^ hash64[4])
+ (bmw_xl ^ bmw_qt[28] ^ bmw_qt[4]);
bmw_h2[5]  = ((bmw_xh <<  6) ^ (bmw_qt[21] >>  6) ^ hash64[5])
+ (bmw_xl ^ bmw_qt[29] ^ bmw_qt[5]);
bmw_h2[6]  = ((bmw_xh >>  4) ^ (bmw_qt[22] <<  6) ^ hash64[6])
+ (bmw_xl ^ bmw_qt[30] ^ bmw_qt[6]);
bmw_h2[7]  = ((bmw_xh >> 11) ^ (bmw_qt[23] <<  2) ^ hash64[7])
+ (bmw_xl ^ (bmw_qt[31]) ^ bmw_qt[7]);
bmw_h2[8]  = ROTL64(bmw_h2[4],  9) + (bmw_xh ^ bmw_qt[24] ^ 0x80ULL) + ((bmw_xl << 8) ^ bmw_qt[23] ^ bmw_qt[8]);
bmw_h2[9]  = ROTL64(bmw_h2[5], 10) + (bmw_xh ^ bmw_qt[25]) + ((bmw_xl >> 6) ^ bmw_qt[16] ^ bmw_qt[9]);
bmw_h2[10] = ROTL64(bmw_h2[6], 11) + (bmw_xh ^ bmw_qt[26]) + ((bmw_xl << 6) ^ bmw_qt[17] ^ bmw_qt[10]);
bmw_h2[11] = ROTL64(bmw_h2[7], 12) + (bmw_xh ^ bmw_qt[27]) + ((bmw_xl << 4) ^ bmw_qt[18] ^ bmw_qt[11]);
bmw_h2[12] = ROTL64(bmw_h2[0], 13) + (bmw_xh ^ bmw_qt[28]) + ((bmw_xl >> 3) ^ bmw_qt[19] ^ bmw_qt[12]);
bmw_h2[13] = ROTL64(bmw_h2[1], 14) + (bmw_xh ^ bmw_qt[29]) + ((bmw_xl >> 4) ^ bmw_qt[20] ^ bmw_qt[13]);
bmw_h2[14] = ROTL64(bmw_h2[2], 15) + (bmw_xh ^ bmw_qt[30]) + ((bmw_xl >> 7) ^ bmw_qt[21] ^ bmw_qt[14]);
bmw_h2[15] = ROTL64(bmw_h2[3], 16) + (bmw_xh ^ bmw_qt[31] ^ 0x200ULL) + ((bmw_xl >> 2) ^ bmw_qt[22] ^ bmw_qt[15]);

// ======

{
UINT64 hre_00 = (bmw_h2[5] ^ 0xaaaaaaaaaaaaaaa5ULL);
UINT64 hre_01 = (bmw_h2[6] ^ 0xaaaaaaaaaaaaaaa6ULL);
UINT64 hre_02 = (bmw_h2[7] ^ 0xaaaaaaaaaaaaaaa7ULL);
UINT64 hre_03 = (bmw_h2[10] ^ 0xaaaaaaaaaaaaaaaaULL);
UINT64 hre_04 = (bmw_h2[13] ^ 0xaaaaaaaaaaaaaaadULL);
UINT64 hre_05 = (bmw_h2[14] ^ 0xaaaaaaaaaaaaaaaeULL);
UINT64 hre_06 = (bmw_h2[8] ^ 0xaaaaaaaaaaaaaaa8ULL);
UINT64 hre_07 = (bmw_h2[11] ^ 0xaaaaaaaaaaaaaaabULL);
UINT64 hre_08 = (bmw_h2[0] ^ 0xaaaaaaaaaaaaaaa0ULL);
UINT64 hre_09 = (bmw_h2[9] ^ 0xaaaaaaaaaaaaaaa9ULL);
UINT64 hre_10 = (bmw_h2[1] ^ 0xaaaaaaaaaaaaaaa1ULL);
UINT64 hre_11 = (bmw_h2[15] ^ 0xaaaaaaaaaaaaaaafULL);
UINT64 hre_12 = (bmw_h2[12] ^ 0xaaaaaaaaaaaaaaacULL);
UINT64 hre_13 = (bmw_h2[2] ^ 0xaaaaaaaaaaaaaaa2ULL);
UINT64 hre_14 = (bmw_h2[3] ^ 0xaaaaaaaaaaaaaaa3ULL);
UINT64 hre_15 = (bmw_h2[4] ^ 0xaaaaaaaaaaaaaaa4ULL);
UINT64 hl_00 = (hre_00 - hre_02 + hre_03 + hre_04 + hre_05);
UINT64 hl_01 = (hre_01 - hre_06 + hre_07 + hre_05 - hre_11);
UINT64 hl_02 = (hre_08 + hre_02 + hre_09 - hre_12 + hre_11);
UINT64 hl_03 = (hre_08 - hre_10 + hre_06 - hre_03 + hre_04);
UINT64 hl_04 = (hre_10 + hre_13 + hre_09 - hre_07 - hre_05);
UINT64 hl_05 = (hre_14 - hre_13 + hre_03 - hre_12 + hre_11);
UINT64 hl_06 = (hre_15 - hre_08 - hre_14 - hre_07 + hre_04);
UINT64 hl_07 = (hre_10 - hre_15 - hre_00 - hre_12 - hre_05);
UINT64 hl_08 = (hre_13 - hre_00 - hre_01 + hre_04 - hre_11);
UINT64 hl_09 = (hre_08 - hre_14 + hre_01 - hre_02 + hre_05);
UINT64 hl_10 = (hre_06 - hre_10 - hre_15 - hre_02 + hre_11);
UINT64 hl_11 = (hre_06 - hre_08 - hre_13 - hre_00 + hre_09);
UINT64 hl_12 = (hre_10 + hre_14 - hre_01 - hre_09 + hre_03);
UINT64 hl_13 = (hre_13 + hre_15 + hre_02 + hre_03 + hre_07);
UINT64 hl_14 = (hre_14 - hre_00 + hre_06 - hre_07 - hre_12);
UINT64 hl_15 = (hre_12 - hre_15 - hre_01 - hre_09 + hre_04);

bmw_qt[0] = ((hl_00 >> 1) ^ SHIFTL64(hl_00, 3) ^ ROTL64(hl_00, 4) ^ ROTL64(hl_00, 37)) + 0xaaaaaaaaaaaaaaa1ULL;
bmw_qt[1] = ((hl_01 >> 1) ^ SHIFTL64(hl_01, 2) ^ ROTL64(hl_01, 13) ^ ROTL64(hl_01, 43)) + 0xaaaaaaaaaaaaaaa2ULL;
bmw_qt[2] = ((hl_02 >> 2) ^ SHIFTL64(hl_02, 1) ^ ROTL64(hl_02, 19) ^ ROTL64(hl_02, 53)) + 0xaaaaaaaaaaaaaaa3ULL;
bmw_qt[3] = ((hl_03 >> 2) ^ SHIFTL64(hl_03, 2) ^ ROTL64(hl_03, 28) ^ ROTL64(hl_03, 59)) + 0xaaaaaaaaaaaaaaa4ULL;
bmw_qt[4] = ((hl_04 >> 1) ^ hl_04) + 0xaaaaaaaaaaaaaaa5ULL;
bmw_qt[5] = ((hl_05 >> 1) ^ SHIFTL64(hl_05, 3) ^ ROTL64(hl_05, 4) ^ ROTL64(hl_05, 37)) + 0xaaaaaaaaaaaaaaa6ULL;
bmw_qt[6] = ((hl_06 >> 1) ^ SHIFTL64(hl_06, 2) ^ ROTL64(hl_06, 13) ^ ROTL64(hl_06, 43)) + 0xaaaaaaaaaaaaaaa7ULL;
bmw_qt[7] = ((hl_07 >> 2) ^ SHIFTL64(hl_07, 1) ^ ROTL64(hl_07, 19) ^ ROTL64(hl_07, 53)) + 0xaaaaaaaaaaaaaaa8ULL;
bmw_qt[8] = ((hl_08 >> 2) ^ SHIFTL64(hl_08, 2) ^ ROTL64(hl_08, 28) ^ ROTL64(hl_08, 59)) + 0xaaaaaaaaaaaaaaa9ULL;
bmw_qt[9] = ((hl_09 >> 1) ^ hl_09) + 0xaaaaaaaaaaaaaaaaULL;
bmw_qt[10] = ((hl_10 >> 1) ^ SHIFTL64(hl_10, 3) ^ ROTL64(hl_10, 4) ^ ROTL64(hl_10, 37)) + 0xaaaaaaaaaaaaaaabULL;
bmw_qt[11] = ((hl_11 >> 1) ^ SHIFTL64(hl_11, 2) ^ ROTL64(hl_11, 13) ^ ROTL64(hl_11, 43)) + 0xaaaaaaaaaaaaaaacULL;
bmw_qt[12] = ((hl_12 >> 2) ^ SHIFTL64(hl_12, 1) ^ ROTL64(hl_12, 19) ^ ROTL64(hl_12, 53)) + 0xaaaaaaaaaaaaaaadULL;
bmw_qt[13] = ((hl_13 >> 2) ^ SHIFTL64(hl_13, 2) ^ ROTL64(hl_13, 28) ^ ROTL64(hl_13, 59)) + 0xaaaaaaaaaaaaaaaeULL;
bmw_qt[14] = ((hl_14 >> 1) ^ hl_14) + 0xaaaaaaaaaaaaaaafULL;
bmw_qt[15] = ((hl_15 >> 1) ^ SHIFTL64(hl_15, 3) ^ ROTL64(hl_15, 4) ^ ROTL64(hl_15, 37)) + 0xaaaaaaaaaaaaaaa0ULL;

bmw_qt[16] = (((bmw_qt[0] >> 1) ^ SHIFTL64(bmw_qt[0], 2) ^ ROTL64(bmw_qt[0], 13) ^ ROTL64(bmw_qt[0], 43)) + ((bmw_qt[1] >> 2) ^ SHIFTL64(bmw_qt[1], 1) ^ ROTL64(bmw_qt[1], 19) ^ ROTL64(bmw_qt[1], 53)) + ((bmw_qt[2] >> 2) ^ SHIFTL64(bmw_qt[2], 2) ^ ROTL64(bmw_qt[2], 28) ^ ROTL64(bmw_qt[2], 59)) + ((bmw_qt[3] >> 1) ^ SHIFTL64(bmw_qt[3], 3) ^ ROTL64(bmw_qt[3], 4) ^ ROTL64(bmw_qt[3], 37)) + ((bmw_qt[4] >> 1) ^ SHIFTL64(bmw_qt[4], 2) ^ ROTL64(bmw_qt[4], 13) ^ ROTL64(bmw_qt[4], 43)) + ((bmw_qt[5] >> 2) ^ SHIFTL64(bmw_qt[5], 1) ^ ROTL64(bmw_qt[5], 19) ^ ROTL64(bmw_qt[5], 53)) + ((bmw_qt[6] >> 2) ^ SHIFTL64(bmw_qt[6], 2) ^ ROTL64(bmw_qt[6], 28) ^ ROTL64(bmw_qt[6], 59)) + ((bmw_qt[7] >> 1) ^ SHIFTL64(bmw_qt[7], 3) ^ ROTL64(bmw_qt[7], 4) ^ ROTL64(bmw_qt[7], 37)) + ((bmw_qt[8] >> 1) ^ SHIFTL64(bmw_qt[8], 2) ^ ROTL64(bmw_qt[8], 13) ^ ROTL64(bmw_qt[8], 43)) + ((bmw_qt[9] >> 2) ^ SHIFTL64(bmw_qt[9], 1) ^ ROTL64(bmw_qt[9], 19) ^ ROTL64(bmw_qt[9], 53)) + ((bmw_qt[10] >> 2) ^ SHIFTL64(bmw_qt[10], 2) ^ ROTL64(bmw_qt[10], 28) ^ ROTL64(bmw_qt[10], 59)) + ((bmw_qt[11] >> 1) ^ SHIFTL64(bmw_qt[11], 3) ^ ROTL64(bmw_qt[11], 4) ^ ROTL64(bmw_qt[11], 37)) + ((bmw_qt[12] >> 1) ^ SHIFTL64(bmw_qt[12], 2) ^ ROTL64(bmw_qt[12], 13) ^ ROTL64(bmw_qt[12], 43)) + ((bmw_qt[13] >> 2) ^ SHIFTL64(bmw_qt[13], 1) ^ ROTL64(bmw_qt[13], 19) ^ ROTL64(bmw_qt[13], 53)) + ((bmw_qt[14] >> 2) ^ SHIFTL64(bmw_qt[14], 2) ^ ROTL64(bmw_qt[14], 28) ^ ROTL64(bmw_qt[14], 59)) + ((bmw_qt[15] >> 1) ^ SHIFTL64(bmw_qt[15], 3) ^ ROTL64(bmw_qt[15], 4) ^ ROTL64(bmw_qt[15], 37)) + ((ROTL64(bmw_h2[0], 1) + ROTL64(bmw_h2[3], 4) - ROTL64(bmw_h2[10], 11) + 0x5555555555555550ULL) ^ 0xaaaaaaaaaaaaaaa7ULL));
bmw_qt[17] = (((bmw_qt[1] >> 1) ^ SHIFTL64(bmw_qt[1], 2) ^ ROTL64(bmw_qt[1], 13) ^ ROTL64(bmw_qt[1], 43)) + ((bmw_qt[2] >> 2) ^ SHIFTL64(bmw_qt[2], 1) ^ ROTL64(bmw_qt[2], 19) ^ ROTL64(bmw_qt[2], 53)) + ((bmw_qt[3] >> 2) ^ SHIFTL64(bmw_qt[3], 2) ^ ROTL64(bmw_qt[3], 28) ^ ROTL64(bmw_qt[3], 59)) + ((bmw_qt[4] >> 1) ^ SHIFTL64(bmw_qt[4], 3) ^ ROTL64(bmw_qt[4], 4) ^ ROTL64(bmw_qt[4], 37)) + ((bmw_qt[5] >> 1) ^ SHIFTL64(bmw_qt[5], 2) ^ ROTL64(bmw_qt[5], 13) ^ ROTL64(bmw_qt[5], 43)) + ((bmw_qt[6] >> 2) ^ SHIFTL64(bmw_qt[6], 1) ^ ROTL64(bmw_qt[6], 19) ^ ROTL64(bmw_qt[6], 53)) + ((bmw_qt[7] >> 2) ^ SHIFTL64(bmw_qt[7], 2) ^ ROTL64(bmw_qt[7], 28) ^ ROTL64(bmw_qt[7], 59)) + ((bmw_qt[8] >> 1) ^ SHIFTL64(bmw_qt[8], 3) ^ ROTL64(bmw_qt[8], 4) ^ ROTL64(bmw_qt[8], 37)) + ((bmw_qt[9] >> 1) ^ SHIFTL64(bmw_qt[9], 2) ^ ROTL64(bmw_qt[9], 13) ^ ROTL64(bmw_qt[9], 43)) + ((bmw_qt[10] >> 2) ^ SHIFTL64(bmw_qt[10], 1) ^ ROTL64(bmw_qt[10], 19) ^ ROTL64(bmw_qt[10], 53)) + ((bmw_qt[11] >> 2) ^ SHIFTL64(bmw_qt[11], 2) ^ ROTL64(bmw_qt[11], 28) ^ ROTL64(bmw_qt[11], 59)) + ((bmw_qt[12] >> 1) ^ SHIFTL64(bmw_qt[12], 3) ^ ROTL64(bmw_qt[12], 4) ^ ROTL64(bmw_qt[12], 37)) + ((bmw_qt[13] >> 1) ^ SHIFTL64(bmw_qt[13], 2) ^ ROTL64(bmw_qt[13], 13) ^ ROTL64(bmw_qt[13], 43)) + ((bmw_qt[14] >> 2) ^ SHIFTL64(bmw_qt[14], 1) ^ ROTL64(bmw_qt[14], 19) ^ ROTL64(bmw_qt[14], 53)) + ((bmw_qt[15] >> 2) ^ SHIFTL64(bmw_qt[15], 2) ^ ROTL64(bmw_qt[15], 28) ^ ROTL64(bmw_qt[15], 59)) + ((bmw_qt[16] >> 1) ^ SHIFTL64(bmw_qt[16], 3) ^ ROTL64(bmw_qt[16], 4) ^ ROTL64(bmw_qt[16], 37)) + ((ROTL64(bmw_h2[1], 2) + ROTL64(bmw_h2[4], 5) - ROTL64(bmw_h2[11], 12) + 0x5aaaaaaaaaaaaaa5ULL) ^ 0xaaaaaaaaaaaaaaa8ULL));

bmw_qt[18] = (bmw_qt[2]  + ROTL64(bmw_qt[3], 5)  + bmw_qt[4]  + ROTL64(bmw_qt[5] , 11) + bmw_qt[6]  + ROTL64(bmw_qt[7] , 27) + bmw_qt[8]  + ROTL64(bmw_qt[9], 32) + bmw_qt[10] + ROTL64(bmw_qt[11], 37) + bmw_qt[12] + ROTL64(bmw_qt[13], 43) + bmw_qt[14] + ROTL64(bmw_qt[15], 53) + ((bmw_qt[16] >> 1) ^ bmw_qt[16]) + ((bmw_qt[17] >> 2) ^ bmw_qt[17]) + ((ROTL64(bmw_h2[2], 3) + ROTL64(bmw_h2[5], 6) - ROTL64(bmw_h2[12], 13) + 0x5ffffffffffffffaULL) ^ 0xaaaaaaaaaaaaaaa9ULL));
bmw_qt[19] = (bmw_qt[3]  + ROTL64(bmw_qt[4], 5)  + bmw_qt[5]  + ROTL64(bmw_qt[6] , 11) + bmw_qt[7]  + ROTL64(bmw_qt[8] , 27) + bmw_qt[9]  + ROTL64(bmw_qt[10], 32) + bmw_qt[11] + ROTL64(bmw_qt[12], 37) + bmw_qt[13] + ROTL64(bmw_qt[14], 43) + bmw_qt[15] + ROTL64(bmw_qt[16], 53) + ((bmw_qt[17] >> 1) ^ bmw_qt[17]) + ((bmw_qt[18] >> 2) ^ bmw_qt[18]) + ((ROTL64(bmw_h2[3], 4) + ROTL64(bmw_h2[6], 7) - ROTL64(bmw_h2[13], 14) + 0x655555555555554fULL) ^ 0xaaaaaaaaaaaaaaaaULL));
bmw_qt[20] = (bmw_qt[4]  + ROTL64(bmw_qt[5], 5)  + bmw_qt[6]  + ROTL64(bmw_qt[7] , 11) + bmw_qt[8]  + ROTL64(bmw_qt[9] , 27) + bmw_qt[10] + ROTL64(bmw_qt[11], 32) + bmw_qt[12] + ROTL64(bmw_qt[13], 37) + bmw_qt[14] + ROTL64(bmw_qt[15], 43) + bmw_qt[16] + ROTL64(bmw_qt[17], 53) + ((bmw_qt[18] >> 1) ^ bmw_qt[18]) + ((bmw_qt[19] >> 2) ^ bmw_qt[19]) + ((ROTL64(bmw_h2[4], 5) + ROTL64(bmw_h2[7], 8) - ROTL64(bmw_h2[14], 15) + 0x6aaaaaaaaaaaaaa4ULL) ^ 0xaaaaaaaaaaaaaaabULL));
bmw_qt[21] = (bmw_qt[5]  + ROTL64(bmw_qt[6], 5)  + bmw_qt[7]  + ROTL64(bmw_qt[8] , 11) + bmw_qt[9]  + ROTL64(bmw_qt[10], 27) + bmw_qt[11] + ROTL64(bmw_qt[12], 32) + bmw_qt[13] + ROTL64(bmw_qt[14], 37) + bmw_qt[15] + ROTL64(bmw_qt[16], 43) + bmw_qt[17] + ROTL64(bmw_qt[18], 53) + ((bmw_qt[19] >> 1) ^ bmw_qt[19]) + ((bmw_qt[20] >> 2) ^ bmw_qt[20]) + ((ROTL64(bmw_h2[5], 6) + ROTL64(bmw_h2[8], 9) - ROTL64(bmw_h2[15], 16) + 0x6ffffffffffffff9ULL) ^ 0xaaaaaaaaaaaaaaacULL));
bmw_qt[22] = (bmw_qt[6]  + ROTL64(bmw_qt[7], 5)  + bmw_qt[8]  + ROTL64(bmw_qt[9] , 11) + bmw_qt[10] + ROTL64(bmw_qt[11], 27) + bmw_qt[12] + ROTL64(bmw_qt[13], 32) + bmw_qt[14] + ROTL64(bmw_qt[15], 37) + bmw_qt[16] + ROTL64(bmw_qt[17], 43) + bmw_qt[18] + ROTL64(bmw_qt[19], 53) + ((bmw_qt[20] >> 1) ^ bmw_qt[20]) + ((bmw_qt[21] >> 2) ^ bmw_qt[21]) + ((ROTL64(bmw_h2[6], 7) + ROTL64(bmw_h2[9], 10) - ROTL64(bmw_h2[0], 1) + 0x755555555555554eULL) ^ 0xaaaaaaaaaaaaaaadULL));
bmw_qt[23] = (bmw_qt[7]  + ROTL64(bmw_qt[8], 5)  + bmw_qt[9]  + ROTL64(bmw_qt[10], 11) + bmw_qt[11] + ROTL64(bmw_qt[12], 27) + bmw_qt[13] + ROTL64(bmw_qt[14], 32) + bmw_qt[15] + ROTL64(bmw_qt[16], 37) + bmw_qt[17] + ROTL64(bmw_qt[18], 43) + bmw_qt[19] + ROTL64(bmw_qt[20], 53) + ((bmw_qt[21] >> 1) ^ bmw_qt[21]) + ((bmw_qt[22] >> 2) ^ bmw_qt[22]) + ((ROTL64(bmw_h2[7], 8) + ROTL64(bmw_h2[10], 11) - ROTL64(bmw_h2[1], 2) + 0x7aaaaaaaaaaaaaa3ULL) ^ 0xaaaaaaaaaaaaaaaeULL));
bmw_qt[24] = (bmw_qt[8]  + ROTL64(bmw_qt[9], 5)  + bmw_qt[10] + ROTL64(bmw_qt[11], 11) + bmw_qt[12] + ROTL64(bmw_qt[13], 27) + bmw_qt[14] + ROTL64(bmw_qt[15], 32) + bmw_qt[16] + ROTL64(bmw_qt[17], 37) + bmw_qt[18] + ROTL64(bmw_qt[19], 43) + bmw_qt[20] + ROTL64(bmw_qt[21], 53) + ((bmw_qt[22] >> 1) ^ bmw_qt[22]) + ((bmw_qt[23] >> 2) ^ bmw_qt[23]) + ((ROTL64(bmw_h2[8], 9) + ROTL64(bmw_h2[11], 12) - ROTL64(bmw_h2[2], 3) + 0x7ffffffffffffff8ULL) ^ 0xaaaaaaaaaaaaaaafULL));
bmw_qt[25] = (bmw_qt[9]  + ROTL64(bmw_qt[10], 5) + bmw_qt[11] + ROTL64(bmw_qt[12], 11) + bmw_qt[13] + ROTL64(bmw_qt[14], 27) + bmw_qt[15] + ROTL64(bmw_qt[16], 32) + bmw_qt[17] + ROTL64(bmw_qt[18], 37) + bmw_qt[19] + ROTL64(bmw_qt[20], 43) + bmw_qt[21] + ROTL64(bmw_qt[22], 53) + ((bmw_qt[23] >> 1) ^ bmw_qt[23]) + ((bmw_qt[24] >> 2) ^ bmw_qt[24]) + ((ROTL64(bmw_h2[9], 10) + ROTL64(bmw_h2[12], 13) - ROTL64(bmw_h2[3], 4) + 0x855555555555554dULL) ^ 0xaaaaaaaaaaaaaaa0ULL));
bmw_qt[26] = (bmw_qt[10] + ROTL64(bmw_qt[11], 5) + bmw_qt[12] + ROTL64(bmw_qt[13], 11) + bmw_qt[14] + ROTL64(bmw_qt[15], 27) + bmw_qt[16] + ROTL64(bmw_qt[17], 32) + bmw_qt[18] + ROTL64(bmw_qt[19], 37) + bmw_qt[20] + ROTL64(bmw_qt[21], 43) + bmw_qt[22] + ROTL64(bmw_qt[23], 53) + ((bmw_qt[24] >> 1) ^ bmw_qt[24]) + ((bmw_qt[25] >> 2) ^ bmw_qt[25]) + ((ROTL64(bmw_h2[10], 11) + ROTL64(bmw_h2[13], 14) - ROTL64(bmw_h2[4], 5) + 0x8aaaaaaaaaaaaaa2ULL) ^ 0xaaaaaaaaaaaaaaa1ULL));
bmw_qt[27] = (bmw_qt[11] + ROTL64(bmw_qt[12], 5) + bmw_qt[13] + ROTL64(bmw_qt[14], 11) + bmw_qt[15] + ROTL64(bmw_qt[16], 27) + bmw_qt[17] + ROTL64(bmw_qt[18], 32) + bmw_qt[19] + ROTL64(bmw_qt[20], 37) + bmw_qt[21] + ROTL64(bmw_qt[22], 43) + bmw_qt[23] + ROTL64(bmw_qt[24], 53) + ((bmw_qt[25] >> 1) ^ bmw_qt[25]) + ((bmw_qt[26] >> 2) ^ bmw_qt[26]) + ((ROTL64(bmw_h2[11], 12) + ROTL64(bmw_h2[14], 15) - ROTL64(bmw_h2[5], 6) + 0x8ffffffffffffff7ULL) ^ 0xaaaaaaaaaaaaaaa2ULL));
bmw_qt[28] = (bmw_qt[12] + ROTL64(bmw_qt[13], 5) + bmw_qt[14] + ROTL64(bmw_qt[15], 11) + bmw_qt[16] + ROTL64(bmw_qt[17], 27) + bmw_qt[18] + ROTL64(bmw_qt[19], 32) + bmw_qt[20] + ROTL64(bmw_qt[21], 37) + bmw_qt[22] + ROTL64(bmw_qt[23], 43) + bmw_qt[24] + ROTL64(bmw_qt[25], 53) + ((bmw_qt[26] >> 1) ^ bmw_qt[26]) + ((bmw_qt[27] >> 2) ^ bmw_qt[27]) + ((ROTL64(bmw_h2[12], 13) + ROTL64(bmw_h2[15], 16) - ROTL64(bmw_h2[6], 7) + 0x955555555555554cULL) ^ 0xaaaaaaaaaaaaaaa3ULL));
bmw_qt[29] = (bmw_qt[13] + ROTL64(bmw_qt[14], 5) + bmw_qt[15] + ROTL64(bmw_qt[16], 11) + bmw_qt[17] + ROTL64(bmw_qt[18], 27) + bmw_qt[19] + ROTL64(bmw_qt[20], 32) + bmw_qt[21] + ROTL64(bmw_qt[22], 37) + bmw_qt[23] + ROTL64(bmw_qt[24], 43) + bmw_qt[25] + ROTL64(bmw_qt[26], 53) + ((bmw_qt[27] >> 1) ^ bmw_qt[27]) + ((bmw_qt[28] >> 2) ^ bmw_qt[28]) + ((ROTL64(bmw_h2[13], 14) + ROTL64(bmw_h2[0], 1) - ROTL64(bmw_h2[7], 8) + 0x9aaaaaaaaaaaaaa1ULL) ^ 0xaaaaaaaaaaaaaaa4ULL));
bmw_qt[30] = (bmw_qt[14] + ROTL64(bmw_qt[15], 5) + bmw_qt[16] + ROTL64(bmw_qt[17], 11) + bmw_qt[18] + ROTL64(bmw_qt[19], 27) + bmw_qt[20] + ROTL64(bmw_qt[21], 32) + bmw_qt[22] + ROTL64(bmw_qt[23], 37) + bmw_qt[24] + ROTL64(bmw_qt[25], 43) + bmw_qt[26] + ROTL64(bmw_qt[27], 53) + ((bmw_qt[28] >> 1) ^ bmw_qt[28]) + ((bmw_qt[29] >> 2) ^ bmw_qt[29]) + ((ROTL64(bmw_h2[14], 15) + ROTL64(bmw_h2[1], 2) - ROTL64(bmw_h2[8], 9) + 0x9ffffffffffffff6ULL) ^ 0xaaaaaaaaaaaaaaa5ULL));
bmw_qt[31] = (bmw_qt[15] + ROTL64(bmw_qt[16], 5) + bmw_qt[17] + ROTL64(bmw_qt[18], 11) + bmw_qt[19] + ROTL64(bmw_qt[20], 27) + bmw_qt[21] + ROTL64(bmw_qt[22], 32) + bmw_qt[23] + ROTL64(bmw_qt[24], 37) + bmw_qt[25] + ROTL64(bmw_qt[26], 43) + bmw_qt[27] + ROTL64(bmw_qt[28], 53) + ((bmw_qt[29] >> 1) ^ bmw_qt[29]) + ((bmw_qt[30] >> 2) ^ bmw_qt[30]) + ((ROTL64(bmw_h2[15], 16) + ROTL64(bmw_h2[2], 3) - ROTL64(bmw_h2[9], 10) + 0xa55555555555554bULL) ^ 0xaaaaaaaaaaaaaaa6ULL));

bmw_xl = bmw_qt[16] ^ bmw_qt[17] ^ bmw_qt[18] ^ bmw_qt[19] ^ bmw_qt[20] ^ bmw_qt[21] ^ bmw_qt[22] ^ bmw_qt[23];
bmw_xh = bmw_xl ^ bmw_qt[24] ^ bmw_qt[25] ^ bmw_qt[26] ^ bmw_qt[27] ^ bmw_qt[28] ^ bmw_qt[29] ^ bmw_qt[30] ^ bmw_qt[31];
bmw_h2[0]  = ((bmw_xh <<  5) ^ (bmw_qt[16] >>  5) ^ bmw_h2[0]) + (bmw_xl ^ bmw_qt[24] ^ bmw_qt[0]);
bmw_h2[1]  = ((bmw_xh >>  7) ^ (bmw_qt[17] <<  8) ^ bmw_h2[1]) + (bmw_xl ^ bmw_qt[25] ^ bmw_qt[1]);
bmw_h2[2]  = ((bmw_xh >>  5) ^ (bmw_qt[18] <<  5) ^ bmw_h2[2]) + (bmw_xl ^ bmw_qt[26] ^ bmw_qt[2]);
bmw_h2[3]  = ((bmw_xh >>  1) ^ (bmw_qt[19] <<  5) ^ bmw_h2[3]) + (bmw_xl ^ bmw_qt[27] ^ bmw_qt[3]);
bmw_h2[4]  = ((bmw_xh >>  3) ^ (bmw_qt[20] <<  0) ^ bmw_h2[4]) + (bmw_xl ^ bmw_qt[28] ^ bmw_qt[4]);
bmw_h2[5]  = ((bmw_xh <<  6) ^ (bmw_qt[21] >>  6) ^ bmw_h2[5]) + (bmw_xl ^ bmw_qt[29] ^ bmw_qt[5]);
bmw_h2[6]  = ((bmw_xh >>  4) ^ (bmw_qt[22] <<  6) ^ bmw_h2[6]) + (bmw_xl ^ bmw_qt[30] ^ bmw_qt[6]);
bmw_h2[7]  = ((bmw_xh >> 11) ^ (bmw_qt[23] <<  2) ^ bmw_h2[7]) + (bmw_xl ^ (bmw_qt[31]) ^ bmw_qt[7]);
hash64[0] = ROTL64(bmw_h2[4],  9) + (bmw_xh ^ bmw_qt[24] ^ bmw_h2[8])  + ((bmw_xl << 8) ^ bmw_qt[23] ^ bmw_qt[8]);
hash64[1] = ROTL64(bmw_h2[5], 10) + (bmw_xh ^ bmw_qt[25] ^ bmw_h2[9])  + ((bmw_xl >> 6) ^ bmw_qt[16] ^ bmw_qt[9]);
hash64[2] = ROTL64(bmw_h2[6], 11) + (bmw_xh ^ bmw_qt[26] ^ bmw_h2[10]) + ((bmw_xl << 6) ^ bmw_qt[17] ^ bmw_qt[10]);
hash64[3] = ROTL64(bmw_h2[7], 12) + (bmw_xh ^ bmw_qt[27] ^ bmw_h2[11]) + ((bmw_xl << 4) ^ bmw_qt[18] ^ bmw_qt[11]);
hash64[4] = ROTL64(bmw_h2[0], 13) + (bmw_xh ^ bmw_qt[28] ^ bmw_h2[12]) + ((bmw_xl >> 3) ^ bmw_qt[19] ^ bmw_qt[12]);
hash64[5] = ROTL64(bmw_h2[1], 14) + (bmw_xh ^ bmw_qt[29] ^ bmw_h2[13]) + ((bmw_xl >> 4) ^ bmw_qt[20] ^ bmw_qt[13]);
hash64[6] = ROTL64(bmw_h2[2], 15) + (bmw_xh ^ bmw_qt[30] ^ bmw_h2[14]) + ((bmw_xl >> 7) ^ bmw_qt[21] ^ bmw_qt[14]);
hash64[7] = ROTL64(bmw_h2[3], 16) + (bmw_xh ^ (bmw_qt[31]) ^ bmw_h2[15]) + ((bmw_xl >> 2) ^ bmw_qt[22] ^ bmw_qt[15]);
}
}


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on October 22, 2014, 01:38:00 AM
Groestl:
Code:
#define groestl_EXT_BYTE_0(n) EXT_BYTE32_0(n)
#define groestl_EXT_BYTE_1(n) EXT_BYTE32_1(n)
#define groestl_EXT_BYTE_2(n) EXT_BYTE32_2(n)
#define groestl_EXT_BYTE_3(n) EXT_BYTE32_3(n)

#define groestl_PMIX(src, dst, r)\
src[ 0] ^= (r);\
src[ 2] ^= 0x00000010u^(r);\
src[ 4] ^= 0x00000020u^(r);\
src[ 6] ^= 0x00000030u^(r);\
src[ 8] ^= 0x00000040u^(r);\
src[10] ^= 0x00000050u^(r);\
src[12] ^= 0x00000060u^(r);\
src[14] ^= 0x00000070u^(r);\
src[16] ^= 0x00000080u^(r);\
src[18] ^= 0x00000090u^(r);\
src[20] ^= 0x000000a0u^(r);\
src[22] ^= 0x000000b0u^(r);\
src[24] ^= 0x000000c0u^(r);\
src[26] ^= 0x000000d0u^(r);\
src[28] ^= 0x000000e0u^(r);\
src[30] ^= 0x000000f0u^(r);\
dst[ 0]  = groestl_T0[groestl_EXT_BYTE_0(src[ 0])];\
dst[ 1]  = groestl_T0[groestl_EXT_BYTE_0(src[ 9])];\
dst[ 2]  = groestl_T0[groestl_EXT_BYTE_0(src[ 2])];\
dst[ 3]  = groestl_T0[groestl_EXT_BYTE_0(src[11])];\
dst[ 4]  = groestl_T0[groestl_EXT_BYTE_0(src[ 4])];\
dst[ 5]  = groestl_T0[groestl_EXT_BYTE_0(src[13])];\
dst[ 6]  = groestl_T0[groestl_EXT_BYTE_0(src[ 6])];\
dst[ 7]  = groestl_T0[groestl_EXT_BYTE_0(src[15])];\
dst[ 8]  = groestl_T0[groestl_EXT_BYTE_0(src[ 8])];\
dst[ 9]  = groestl_T0[groestl_EXT_BYTE_0(src[17])];\
dst[10]  = groestl_T0[groestl_EXT_BYTE_0(src[10])];\
dst[11]  = groestl_T0[groestl_EXT_BYTE_0(src[19])];\
dst[12]  = groestl_T0[groestl_EXT_BYTE_0(src[12])];\
dst[13]  = groestl_T0[groestl_EXT_BYTE_0(src[21])];\
dst[14]  = groestl_T0[groestl_EXT_BYTE_0(src[14])];\
dst[15]  = groestl_T0[groestl_EXT_BYTE_0(src[23])];\
dst[16]  = groestl_T0[groestl_EXT_BYTE_0(src[16])];\
dst[17]  = groestl_T0[groestl_EXT_BYTE_0(src[25])];\
dst[18]  = groestl_T0[groestl_EXT_BYTE_0(src[18])];\
dst[19]  = groestl_T0[groestl_EXT_BYTE_0(src[27])];\
dst[20]  = groestl_T0[groestl_EXT_BYTE_0(src[20])];\
dst[21]  = groestl_T0[groestl_EXT_BYTE_0(src[29])];\
dst[22]  = groestl_T0[groestl_EXT_BYTE_0(src[22])];\
dst[23]  = groestl_T0[groestl_EXT_BYTE_0(src[31])];\
dst[24]  = groestl_T0[groestl_EXT_BYTE_0(src[24])];\
dst[25]  = groestl_T0[groestl_EXT_BYTE_0(src[ 1])];\
dst[26]  = groestl_T0[groestl_EXT_BYTE_0(src[26])];\
dst[27]  = groestl_T0[groestl_EXT_BYTE_0(src[ 3])];\
dst[28]  = groestl_T0[groestl_EXT_BYTE_0(src[28])];\
dst[29]  = groestl_T0[groestl_EXT_BYTE_0(src[ 5])];\
dst[30]  = groestl_T0[groestl_EXT_BYTE_0(src[30])];\
dst[31]  = groestl_T0[groestl_EXT_BYTE_0(src[ 7])];\
dst[ 0] ^= groestl_T1[groestl_EXT_BYTE_1(src[ 2])];\
dst[ 1] ^= groestl_T1[groestl_EXT_BYTE_1(src[11])];\
dst[ 2] ^= groestl_T1[groestl_EXT_BYTE_1(src[ 4])];\
dst[ 3] ^= groestl_T1[groestl_EXT_BYTE_1(src[13])];\
dst[ 4] ^= groestl_T1[groestl_EXT_BYTE_1(src[ 6])];\
dst[ 5] ^= groestl_T1[groestl_EXT_BYTE_1(src[15])];\
dst[ 6] ^= groestl_T1[groestl_EXT_BYTE_1(src[ 8])];\
dst[ 7] ^= groestl_T1[groestl_EXT_BYTE_1(src[17])];\
dst[ 8] ^= groestl_T1[groestl_EXT_BYTE_1(src[10])];\
dst[ 9] ^= groestl_T1[groestl_EXT_BYTE_1(src[19])];\
dst[10] ^= groestl_T1[groestl_EXT_BYTE_1(src[12])];\
dst[11] ^= groestl_T1[groestl_EXT_BYTE_1(src[21])];\
dst[12] ^= groestl_T1[groestl_EXT_BYTE_1(src[14])];\
dst[13] ^= groestl_T1[groestl_EXT_BYTE_1(src[23])];\
dst[14] ^= groestl_T1[groestl_EXT_BYTE_1(src[16])];\
dst[15] ^= groestl_T1[groestl_EXT_BYTE_1(src[25])];\
dst[16] ^= groestl_T1[groestl_EXT_BYTE_1(src[18])];\
dst[17] ^= groestl_T1[groestl_EXT_BYTE_1(src[27])];\
dst[18] ^= groestl_T1[groestl_EXT_BYTE_1(src[20])];\
dst[19] ^= groestl_T1[groestl_EXT_BYTE_1(src[29])];\
dst[20] ^= groestl_T1[groestl_EXT_BYTE_1(src[22])];\
dst[21] ^= groestl_T1[groestl_EXT_BYTE_1(src[31])];\
dst[22] ^= groestl_T1[groestl_EXT_BYTE_1(src[24])];\
dst[23] ^= groestl_T1[groestl_EXT_BYTE_1(src[ 1])];\
dst[24] ^= groestl_T1[groestl_EXT_BYTE_1(src[26])];\
dst[25] ^= groestl_T1[groestl_EXT_BYTE_1(src[ 3])];\
dst[26] ^= groestl_T1[groestl_EXT_BYTE_1(src[28])];\
dst[27] ^= groestl_T1[groestl_EXT_BYTE_1(src[ 5])];\
dst[28] ^= groestl_T1[groestl_EXT_BYTE_1(src[30])];\
dst[29] ^= groestl_T1[groestl_EXT_BYTE_1(src[ 7])];\
dst[30] ^= groestl_T1[groestl_EXT_BYTE_1(src[ 0])];\
dst[31] ^= groestl_T1[groestl_EXT_BYTE_1(src[ 9])];\
dst[ 0] ^= groestl_T2[groestl_EXT_BYTE_2(src[ 4])];\
dst[ 1] ^= groestl_T2[groestl_EXT_BYTE_2(src[13])];\
dst[ 2] ^= groestl_T2[groestl_EXT_BYTE_2(src[ 6])];\
dst[ 3] ^= groestl_T2[groestl_EXT_BYTE_2(src[15])];\
dst[ 4] ^= groestl_T2[groestl_EXT_BYTE_2(src[ 8])];\
dst[ 5] ^= groestl_T2[groestl_EXT_BYTE_2(src[17])];\
dst[ 6] ^= groestl_T2[groestl_EXT_BYTE_2(src[10])];\
dst[ 7] ^= groestl_T2[groestl_EXT_BYTE_2(src[19])];\
dst[ 8] ^= groestl_T2[groestl_EXT_BYTE_2(src[12])];\
dst[ 9] ^= groestl_T2[groestl_EXT_BYTE_2(src[21])];\
dst[10] ^= groestl_T2[groestl_EXT_BYTE_2(src[14])];\
dst[11] ^= groestl_T2[groestl_EXT_BYTE_2(src[23])];\
dst[12] ^= groestl_T2[groestl_EXT_BYTE_2(src[16])];\
dst[13] ^= groestl_T2[groestl_EXT_BYTE_2(src[25])];\
dst[14] ^= groestl_T2[groestl_EXT_BYTE_2(src[18])];\
dst[15] ^= groestl_T2[groestl_EXT_BYTE_2(src[27])];\
dst[16] ^= groestl_T2[groestl_EXT_BYTE_2(src[20])];\
dst[17] ^= groestl_T2[groestl_EXT_BYTE_2(src[29])];\
dst[18] ^= groestl_T2[groestl_EXT_BYTE_2(src[22])];\
dst[19] ^= groestl_T2[groestl_EXT_BYTE_2(src[31])];\
dst[20] ^= groestl_T2[groestl_EXT_BYTE_2(src[24])];\
dst[21] ^= groestl_T2[groestl_EXT_BYTE_2(src[ 1])];\
dst[22] ^= groestl_T2[groestl_EXT_BYTE_2(src[26])];\
dst[23] ^= groestl_T2[groestl_EXT_BYTE_2(src[ 3])];\
dst[24] ^= groestl_T2[groestl_EXT_BYTE_2(src[28])];\
dst[25] ^= groestl_T2[groestl_EXT_BYTE_2(src[ 5])];\
dst[26] ^= groestl_T2[groestl_EXT_BYTE_2(src[30])];\
dst[27] ^= groestl_T2[groestl_EXT_BYTE_2(src[ 7])];\
dst[28] ^= groestl_T2[groestl_EXT_BYTE_2(src[ 0])];\
dst[29] ^= groestl_T2[groestl_EXT_BYTE_2(src[ 9])];\
dst[30] ^= groestl_T2[groestl_EXT_BYTE_2(src[ 2])];\
dst[31] ^= groestl_T2[groestl_EXT_BYTE_2(src[11])];\
dst[ 0] ^= groestl_T3[groestl_EXT_BYTE_3(src[ 6])];\
dst[ 1] ^= groestl_T3[groestl_EXT_BYTE_3(src[23])];\
dst[ 2] ^= groestl_T3[groestl_EXT_BYTE_3(src[ 8])];\
dst[ 3] ^= groestl_T3[groestl_EXT_BYTE_3(src[25])];\
dst[ 4] ^= groestl_T3[groestl_EXT_BYTE_3(src[10])];\
dst[ 5] ^= groestl_T3[groestl_EXT_BYTE_3(src[27])];\
dst[ 6] ^= groestl_T3[groestl_EXT_BYTE_3(src[12])];\
dst[ 7] ^= groestl_T3[groestl_EXT_BYTE_3(src[29])];\
dst[ 8] ^= groestl_T3[groestl_EXT_BYTE_3(src[14])];\
dst[ 9] ^= groestl_T3[groestl_EXT_BYTE_3(src[31])];\
dst[10] ^= groestl_T3[groestl_EXT_BYTE_3(src[16])];\
dst[11] ^= groestl_T3[groestl_EXT_BYTE_3(src[ 1])];\
dst[12] ^= groestl_T3[groestl_EXT_BYTE_3(src[18])];\
dst[13] ^= groestl_T3[groestl_EXT_BYTE_3(src[ 3])];\
dst[14] ^= groestl_T3[groestl_EXT_BYTE_3(src[20])];\
dst[15] ^= groestl_T3[groestl_EXT_BYTE_3(src[ 5])];\
dst[16] ^= groestl_T3[groestl_EXT_BYTE_3(src[22])];\
dst[17] ^= groestl_T3[groestl_EXT_BYTE_3(src[ 7])];\
dst[18] ^= groestl_T3[groestl_EXT_BYTE_3(src[24])];\
dst[19] ^= groestl_T3[groestl_EXT_BYTE_3(src[ 9])];\
dst[20] ^= groestl_T3[groestl_EXT_BYTE_3(src[26])];\
dst[21] ^= groestl_T3[groestl_EXT_BYTE_3(src[11])];\
dst[22] ^= groestl_T3[groestl_EXT_BYTE_3(src[28])];\
dst[23] ^= groestl_T3[groestl_EXT_BYTE_3(src[13])];\
dst[24] ^= groestl_T3[groestl_EXT_BYTE_3(src[30])];\
dst[25] ^= groestl_T3[groestl_EXT_BYTE_3(src[15])];\
dst[26] ^= groestl_T3[groestl_EXT_BYTE_3(src[ 0])];\
dst[27] ^= groestl_T3[groestl_EXT_BYTE_3(src[17])];\
dst[28] ^= groestl_T3[groestl_EXT_BYTE_3(src[ 2])];\
dst[29] ^= groestl_T3[groestl_EXT_BYTE_3(src[19])];\
dst[30] ^= groestl_T3[groestl_EXT_BYTE_3(src[ 4])];\
dst[31] ^= groestl_T3[groestl_EXT_BYTE_3(src[21])];\
dst[ 0] ^= groestl_T4[groestl_EXT_BYTE_0(src[ 9])];\
dst[ 1] ^= groestl_T4[groestl_EXT_BYTE_0(src[ 0])];\
dst[ 2] ^= groestl_T4[groestl_EXT_BYTE_0(src[11])];\
dst[ 3] ^= groestl_T4[groestl_EXT_BYTE_0(src[ 2])];\
dst[ 4] ^= groestl_T4[groestl_EXT_BYTE_0(src[13])];\
dst[ 5] ^= groestl_T4[groestl_EXT_BYTE_0(src[ 4])];\
dst[ 6] ^= groestl_T4[groestl_EXT_BYTE_0(src[15])];\
dst[ 7] ^= groestl_T4[groestl_EXT_BYTE_0(src[ 6])];\
dst[ 8] ^= groestl_T4[groestl_EXT_BYTE_0(src[17])];\
dst[ 9] ^= groestl_T4[groestl_EXT_BYTE_0(src[ 8])];\
dst[10] ^= groestl_T4[groestl_EXT_BYTE_0(src[19])];\
dst[11] ^= groestl_T4[groestl_EXT_BYTE_0(src[10])];\
dst[12] ^= groestl_T4[groestl_EXT_BYTE_0(src[21])];\
dst[13] ^= groestl_T4[groestl_EXT_BYTE_0(src[12])];\
dst[14] ^= groestl_T4[groestl_EXT_BYTE_0(src[23])];\
dst[15] ^= groestl_T4[groestl_EXT_BYTE_0(src[14])];\
dst[16] ^= groestl_T4[groestl_EXT_BYTE_0(src[25])];\
dst[17] ^= groestl_T4[groestl_EXT_BYTE_0(src[16])];\
dst[18] ^= groestl_T4[groestl_EXT_BYTE_0(src[27])];\
dst[19] ^= groestl_T4[groestl_EXT_BYTE_0(src[18])];\
dst[20] ^= groestl_T4[groestl_EXT_BYTE_0(src[29])];\
dst[21] ^= groestl_T4[groestl_EXT_BYTE_0(src[20])];\
dst[22] ^= groestl_T4[groestl_EXT_BYTE_0(src[31])];\
dst[23] ^= groestl_T4[groestl_EXT_BYTE_0(src[22])];\
dst[24] ^= groestl_T4[groestl_EXT_BYTE_0(src[ 1])];\
dst[25] ^= groestl_T4[groestl_EXT_BYTE_0(src[24])];\
dst[26] ^= groestl_T4[groestl_EXT_BYTE_0(src[ 3])];\
dst[27] ^= groestl_T4[groestl_EXT_BYTE_0(src[26])];\
dst[28] ^= groestl_T4[groestl_EXT_BYTE_0(src[ 5])];\
dst[29] ^= groestl_T4[groestl_EXT_BYTE_0(src[28])];\
dst[30] ^= groestl_T4[groestl_EXT_BYTE_0(src[ 7])];\
dst[31] ^= groestl_T4[groestl_EXT_BYTE_0(src[30])];\
dst[ 0] ^= groestl_T5[groestl_EXT_BYTE_1(src[11])];\
dst[ 1] ^= groestl_T5[groestl_EXT_BYTE_1(src[ 2])];\
dst[ 2] ^= groestl_T5[groestl_EXT_BYTE_1(src[13])];\
dst[ 3] ^= groestl_T5[groestl_EXT_BYTE_1(src[ 4])];\
dst[ 4] ^= groestl_T5[groestl_EXT_BYTE_1(src[15])];\
dst[ 5] ^= groestl_T5[groestl_EXT_BYTE_1(src[ 6])];\
dst[ 6] ^= groestl_T5[groestl_EXT_BYTE_1(src[17])];\
dst[ 7] ^= groestl_T5[groestl_EXT_BYTE_1(src[ 8])];\
dst[ 8] ^= groestl_T5[groestl_EXT_BYTE_1(src[19])];\
dst[ 9] ^= groestl_T5[groestl_EXT_BYTE_1(src[10])];\
dst[10] ^= groestl_T5[groestl_EXT_BYTE_1(src[21])];\
dst[11] ^= groestl_T5[groestl_EXT_BYTE_1(src[12])];\
dst[12] ^= groestl_T5[groestl_EXT_BYTE_1(src[23])];\
dst[13] ^= groestl_T5[groestl_EXT_BYTE_1(src[14])];\
dst[14] ^= groestl_T5[groestl_EXT_BYTE_1(src[25])];\
dst[15] ^= groestl_T5[groestl_EXT_BYTE_1(src[16])];\
dst[16] ^= groestl_T5[groestl_EXT_BYTE_1(src[27])];\
dst[17] ^= groestl_T5[groestl_EXT_BYTE_1(src[18])];\
dst[18] ^= groestl_T5[groestl_EXT_BYTE_1(src[29])];\
dst[19] ^= groestl_T5[groestl_EXT_BYTE_1(src[20])];\
dst[20] ^= groestl_T5[groestl_EXT_BYTE_1(src[31])];\
dst[21] ^= groestl_T5[groestl_EXT_BYTE_1(src[22])];\
dst[22] ^= groestl_T5[groestl_EXT_BYTE_1(src[ 1])];\
dst[23] ^= groestl_T5[groestl_EXT_BYTE_1(src[24])];\
dst[24] ^= groestl_T5[groestl_EXT_BYTE_1(src[ 3])];\
dst[25] ^= groestl_T5[groestl_EXT_BYTE_1(src[26])];\
dst[26] ^= groestl_T5[groestl_EXT_BYTE_1(src[ 5])];\
dst[27] ^= groestl_T5[groestl_EXT_BYTE_1(src[28])];\
dst[28] ^= groestl_T5[groestl_EXT_BYTE_1(src[ 7])];\
dst[29] ^= groestl_T5[groestl_EXT_BYTE_1(src[30])];\
dst[30] ^= groestl_T5[groestl_EXT_BYTE_1(src[ 9])];\
dst[31] ^= groestl_T5[groestl_EXT_BYTE_1(src[ 0])];\
dst[ 0] ^= groestl_T6[groestl_EXT_BYTE_2(src[13])];\
dst[ 1] ^= groestl_T6[groestl_EXT_BYTE_2(src[ 4])];\
dst[ 2] ^= groestl_T6[groestl_EXT_BYTE_2(src[15])];\
dst[ 3] ^= groestl_T6[groestl_EXT_BYTE_2(src[ 6])];\
dst[ 4] ^= groestl_T6[groestl_EXT_BYTE_2(src[17])];\
dst[ 5] ^= groestl_T6[groestl_EXT_BYTE_2(src[ 8])];\
dst[ 6] ^= groestl_T6[groestl_EXT_BYTE_2(src[19])];\
dst[ 7] ^= groestl_T6[groestl_EXT_BYTE_2(src[10])];\
dst[ 8] ^= groestl_T6[groestl_EXT_BYTE_2(src[21])];\
dst[ 9] ^= groestl_T6[groestl_EXT_BYTE_2(src[12])];\
dst[10] ^= groestl_T6[groestl_EXT_BYTE_2(src[23])];\
dst[11] ^= groestl_T6[groestl_EXT_BYTE_2(src[14])];\
dst[12] ^= groestl_T6[groestl_EXT_BYTE_2(src[25])];\
dst[13] ^= groestl_T6[groestl_EXT_BYTE_2(src[16])];\
dst[14] ^= groestl_T6[groestl_EXT_BYTE_2(src[27])];\
dst[15] ^= groestl_T6[groestl_EXT_BYTE_2(src[18])];\
dst[16] ^= groestl_T6[groestl_EXT_BYTE_2(src[29])];\
dst[17] ^= groestl_T6[groestl_EXT_BYTE_2(src[20])];\
dst[18] ^= groestl_T6[groestl_EXT_BYTE_2(src[31])];\
dst[19] ^= groestl_T6[groestl_EXT_BYTE_2(src[22])];\
dst[20] ^= groestl_T6[groestl_EXT_BYTE_2(src[ 1])];\
dst[21] ^= groestl_T6[groestl_EXT_BYTE_2(src[24])];\
dst[22] ^= groestl_T6[groestl_EXT_BYTE_2(src[ 3])];\
dst[23] ^= groestl_T6[groestl_EXT_BYTE_2(src[26])];\
dst[24] ^= groestl_T6[groestl_EXT_BYTE_2(src[ 5])];\
dst[25] ^= groestl_T6[groestl_EXT_BYTE_2(src[28])];\
dst[26] ^= groestl_T6[groestl_EXT_BYTE_2(src[ 7])];\
dst[27] ^= groestl_T6[groestl_EXT_BYTE_2(src[30])];\
dst[28] ^= groestl_T6[groestl_EXT_BYTE_2(src[ 9])];\
dst[29] ^= groestl_T6[groestl_EXT_BYTE_2(src[ 0])];\
dst[30] ^= groestl_T6[groestl_EXT_BYTE_2(src[11])];\
dst[31] ^= groestl_T6[groestl_EXT_BYTE_2(src[ 2])];\
dst[ 0] ^= groestl_T7[groestl_EXT_BYTE_3(src[23])];\
dst[ 1] ^= groestl_T7[groestl_EXT_BYTE_3(src[ 6])];\
dst[ 2] ^= groestl_T7[groestl_EXT_BYTE_3(src[25])];\
dst[ 3] ^= groestl_T7[groestl_EXT_BYTE_3(src[ 8])];\
dst[ 4] ^= groestl_T7[groestl_EXT_BYTE_3(src[27])];\
dst[ 5] ^= groestl_T7[groestl_EXT_BYTE_3(src[10])];\
dst[ 6] ^= groestl_T7[groestl_EXT_BYTE_3(src[29])];\
dst[ 7] ^= groestl_T7[groestl_EXT_BYTE_3(src[12])];\
dst[ 8] ^= groestl_T7[groestl_EXT_BYTE_3(src[31])];\
dst[ 9] ^= groestl_T7[groestl_EXT_BYTE_3(src[14])];\
dst[10] ^= groestl_T7[groestl_EXT_BYTE_3(src[ 1])];\
dst[11] ^= groestl_T7[groestl_EXT_BYTE_3(src[16])];\
dst[12] ^= groestl_T7[groestl_EXT_BYTE_3(src[ 3])];\
dst[13] ^= groestl_T7[groestl_EXT_BYTE_3(src[18])];\
dst[14] ^= groestl_T7[groestl_EXT_BYTE_3(src[ 5])];\
dst[15] ^= groestl_T7[groestl_EXT_BYTE_3(src[20])];\
dst[16] ^= groestl_T7[groestl_EXT_BYTE_3(src[ 7])];\
dst[17] ^= groestl_T7[groestl_EXT_BYTE_3(src[22])];\
dst[18] ^= groestl_T7[groestl_EXT_BYTE_3(src[ 9])];\
dst[19] ^= groestl_T7[groestl_EXT_BYTE_3(src[24])];\
dst[20] ^= groestl_T7[groestl_EXT_BYTE_3(src[11])];\
dst[21] ^= groestl_T7[groestl_EXT_BYTE_3(src[26])];\
dst[22] ^= groestl_T7[groestl_EXT_BYTE_3(src[13])];\
dst[23] ^= groestl_T7[groestl_EXT_BYTE_3(src[28])];\
dst[24] ^= groestl_T7[groestl_EXT_BYTE_3(src[15])];\
dst[25] ^= groestl_T7[groestl_EXT_BYTE_3(src[30])];\
dst[26] ^= groestl_T7[groestl_EXT_BYTE_3(src[17])];\
dst[27] ^= groestl_T7[groestl_EXT_BYTE_3(src[ 0])];\
dst[28] ^= groestl_T7[groestl_EXT_BYTE_3(src[19])];\
dst[29] ^= groestl_T7[groestl_EXT_BYTE_3(src[ 2])];\
dst[30] ^= groestl_T7[groestl_EXT_BYTE_3(src[21])];\
dst[31] ^= groestl_T7[groestl_EXT_BYTE_3(src[ 4])];

#define groestl_QMIX(src, dst, r)\
src[ 0] = ~src[ 0];\
src[ 1] ^= ~(r);\
src[ 2] = ~src[ 2];\
src[ 3] ^= 0xefffffffu^(r);\
src[ 4] = ~src[ 4];\
src[ 5] ^= 0xdfffffffu^(r);\
src[ 6] = ~src[ 6];\
src[ 7] ^= 0xcfffffffu^(r);\
src[ 8] = ~src[ 8];\
src[ 9] ^= 0xbfffffffu^(r);\
src[10] = ~src[10];\
src[11] ^= 0xafffffffu^(r);\
src[12] = ~src[12];\
src[13] ^= 0x9fffffffu^(r);\
src[14] = ~src[14];\
src[15] ^= 0x8fffffffu^(r);\
src[16] = ~src[16];\
src[17] ^= 0x7fffffffu^(r);\
src[18] = ~src[18];\
src[19] ^= 0x6fffffffu^(r);\
src[20] = ~src[20];\
src[21] ^= 0x5fffffffu^(r);\
src[22] = ~src[22];\
src[23] ^= 0x4fffffffu^(r);\
src[24] = ~src[24];\
src[25] ^= 0x3fffffffu^(r);\
src[26] = ~src[26];\
src[27] ^= 0x2fffffffu^(r);\
src[28] = ~src[28];\
src[29] ^= 0x1fffffffu^(r);\
src[30] = ~src[30];\
src[31] ^= 0x0fffffffu^(r);\
dst[ 0]  = groestl_T0[groestl_EXT_BYTE_0(src[ 2])];\
dst[ 1]  = groestl_T0[groestl_EXT_BYTE_0(src[ 1])];\
dst[ 2]  = groestl_T0[groestl_EXT_BYTE_0(src[ 4])];\
dst[ 3]  = groestl_T0[groestl_EXT_BYTE_0(src[ 3])];\
dst[ 4]  = groestl_T0[groestl_EXT_BYTE_0(src[ 6])];\
dst[ 5]  = groestl_T0[groestl_EXT_BYTE_0(src[ 5])];\
dst[ 6]  = groestl_T0[groestl_EXT_BYTE_0(src[ 8])];\
dst[ 7]  = groestl_T0[groestl_EXT_BYTE_0(src[ 7])];\
dst[ 8]  = groestl_T0[groestl_EXT_BYTE_0(src[10])];\
dst[ 9]  = groestl_T0[groestl_EXT_BYTE_0(src[ 9])];\
dst[10]  = groestl_T0[groestl_EXT_BYTE_0(src[12])];\
dst[11]  = groestl_T0[groestl_EXT_BYTE_0(src[11])];\
dst[12]  = groestl_T0[groestl_EXT_BYTE_0(src[14])];\
dst[13]  = groestl_T0[groestl_EXT_BYTE_0(src[13])];\
dst[14]  = groestl_T0[groestl_EXT_BYTE_0(src[16])];\
dst[15]  = groestl_T0[groestl_EXT_BYTE_0(src[15])];\
dst[16]  = groestl_T0[groestl_EXT_BYTE_0(src[18])];\
dst[17]  = groestl_T0[groestl_EXT_BYTE_0(src[17])];\
dst[18]  = groestl_T0[groestl_EXT_BYTE_0(src[20])];\
dst[19]  = groestl_T0[groestl_EXT_BYTE_0(src[19])];\
dst[20]  = groestl_T0[groestl_EXT_BYTE_0(src[22])];\
dst[21]  = groestl_T0[groestl_EXT_BYTE_0(src[21])];\
dst[22]  = groestl_T0[groestl_EXT_BYTE_0(src[24])];\
dst[23]  = groestl_T0[groestl_EXT_BYTE_0(src[23])];\
dst[24]  = groestl_T0[groestl_EXT_BYTE_0(src[26])];\
dst[25]  = groestl_T0[groestl_EXT_BYTE_0(src[25])];\
dst[26]  = groestl_T0[groestl_EXT_BYTE_0(src[28])];\
dst[27]  = groestl_T0[groestl_EXT_BYTE_0(src[27])];\
dst[28]  = groestl_T0[groestl_EXT_BYTE_0(src[30])];\
dst[29]  = groestl_T0[groestl_EXT_BYTE_0(src[29])];\
dst[30]  = groestl_T0[groestl_EXT_BYTE_0(src[ 0])];\
dst[31]  = groestl_T0[groestl_EXT_BYTE_0(src[31])];\
dst[ 0] ^= groestl_T1[groestl_EXT_BYTE_1(src[ 6])];\
dst[ 1] ^= groestl_T1[groestl_EXT_BYTE_1(src[ 5])];\
dst[ 2] ^= groestl_T1[groestl_EXT_BYTE_1(src[ 8])];\
dst[ 3] ^= groestl_T1[groestl_EXT_BYTE_1(src[ 7])];\
dst[ 4] ^= groestl_T1[groestl_EXT_BYTE_1(src[10])];\
dst[ 5] ^= groestl_T1[groestl_EXT_BYTE_1(src[ 9])];\
dst[ 6] ^= groestl_T1[groestl_EXT_BYTE_1(src[12])];\
dst[ 7] ^= groestl_T1[groestl_EXT_BYTE_1(src[11])];\
dst[ 8] ^= groestl_T1[groestl_EXT_BYTE_1(src[14])];\
dst[ 9] ^= groestl_T1[groestl_EXT_BYTE_1(src[13])];\
dst[10] ^= groestl_T1[groestl_EXT_BYTE_1(src[16])];\
dst[11] ^= groestl_T1[groestl_EXT_BYTE_1(src[15])];\
dst[12] ^= groestl_T1[groestl_EXT_BYTE_1(src[18])];\
dst[13] ^= groestl_T1[groestl_EXT_BYTE_1(src[17])];\
dst[14] ^= groestl_T1[groestl_EXT_BYTE_1(src[20])];\
dst[15] ^= groestl_T1[groestl_EXT_BYTE_1(src[19])];\
dst[16] ^= groestl_T1[groestl_EXT_BYTE_1(src[22])];\
dst[17] ^= groestl_T1[groestl_EXT_BYTE_1(src[21])];\
dst[18] ^= groestl_T1[groestl_EXT_BYTE_1(src[24])];\
dst[19] ^= groestl_T1[groestl_EXT_BYTE_1(src[23])];\
dst[20] ^= groestl_T1[groestl_EXT_BYTE_1(src[26])];\
dst[21] ^= groestl_T1[groestl_EXT_BYTE_1(src[25])];\
dst[22] ^= groestl_T1[groestl_EXT_BYTE_1(src[28])];\
dst[23] ^= groestl_T1[groestl_EXT_BYTE_1(src[27])];\
dst[24] ^= groestl_T1[groestl_EXT_BYTE_1(src[30])];\
dst[25] ^= groestl_T1[groestl_EXT_BYTE_1(src[29])];\
dst[26] ^= groestl_T1[groestl_EXT_BYTE_1(src[ 0])];\
dst[27] ^= groestl_T1[groestl_EXT_BYTE_1(src[31])];\
dst[28] ^= groestl_T1[groestl_EXT_BYTE_1(src[ 2])];\
dst[29] ^= groestl_T1[groestl_EXT_BYTE_1(src[ 1])];\
dst[30] ^= groestl_T1[groestl_EXT_BYTE_1(src[ 4])];\
dst[31] ^= groestl_T1[groestl_EXT_BYTE_1(src[ 3])];\
dst[ 0] ^= groestl_T2[groestl_EXT_BYTE_2(src[10])];\
dst[ 1] ^= groestl_T2[groestl_EXT_BYTE_2(src[ 9])];\
dst[ 2] ^= groestl_T2[groestl_EXT_BYTE_2(src[12])];\
dst[ 3] ^= groestl_T2[groestl_EXT_BYTE_2(src[11])];\
dst[ 4] ^= groestl_T2[groestl_EXT_BYTE_2(src[14])];\
dst[ 5] ^= groestl_T2[groestl_EXT_BYTE_2(src[13])];\
dst[ 6] ^= groestl_T2[groestl_EXT_BYTE_2(src[16])];\
dst[ 7] ^= groestl_T2[groestl_EXT_BYTE_2(src[15])];\
dst[ 8] ^= groestl_T2[groestl_EXT_BYTE_2(src[18])];\
dst[ 9] ^= groestl_T2[groestl_EXT_BYTE_2(src[17])];\
dst[10] ^= groestl_T2[groestl_EXT_BYTE_2(src[20])];\
dst[11] ^= groestl_T2[groestl_EXT_BYTE_2(src[19])];\
dst[12] ^= groestl_T2[groestl_EXT_BYTE_2(src[22])];\
dst[13] ^= groestl_T2[groestl_EXT_BYTE_2(src[21])];\
dst[14] ^= groestl_T2[groestl_EXT_BYTE_2(src[24])];\
dst[15] ^= groestl_T2[groestl_EXT_BYTE_2(src[23])];\
dst[16] ^= groestl_T2[groestl_EXT_BYTE_2(src[26])];\
dst[17] ^= groestl_T2[groestl_EXT_BYTE_2(src[25])];\
dst[18] ^= groestl_T2[groestl_EXT_BYTE_2(src[28])];\
dst[19] ^= groestl_T2[groestl_EXT_BYTE_2(src[27])];\
dst[20] ^= groestl_T2[groestl_EXT_BYTE_2(src[30])];\
dst[21] ^= groestl_T2[groestl_EXT_BYTE_2(src[29])];\
dst[22] ^= groestl_T2[groestl_EXT_BYTE_2(src[ 0])];\
dst[23] ^= groestl_T2[groestl_EXT_BYTE_2(src[31])];\
dst[24] ^= groestl_T2[groestl_EXT_BYTE_2(src[ 2])];\
dst[25] ^= groestl_T2[groestl_EXT_BYTE_2(src[ 1])];\
dst[26] ^= groestl_T2[groestl_EXT_BYTE_2(src[ 4])];\
dst[27] ^= groestl_T2[groestl_EXT_BYTE_2(src[ 3])];\
dst[28] ^= groestl_T2[groestl_EXT_BYTE_2(src[ 6])];\
dst[29] ^= groestl_T2[groestl_EXT_BYTE_2(src[ 5])];\
dst[30] ^= groestl_T2[groestl_EXT_BYTE_2(src[ 8])];\
dst[31] ^= groestl_T2[groestl_EXT_BYTE_2(src[ 7])];\
dst[ 0] ^= groestl_T3[groestl_EXT_BYTE_3(src[22])];\
dst[ 1] ^= groestl_T3[groestl_EXT_BYTE_3(src[13])];\
dst[ 2] ^= groestl_T3[groestl_EXT_BYTE_3(src[24])];\
dst[ 3] ^= groestl_T3[groestl_EXT_BYTE_3(src[15])];\
dst[ 4] ^= groestl_T3[groestl_EXT_BYTE_3(src[26])];\
dst[ 5] ^= groestl_T3[groestl_EXT_BYTE_3(src[17])];\
dst[ 6] ^= groestl_T3[groestl_EXT_BYTE_3(src[28])];\
dst[ 7] ^= groestl_T3[groestl_EXT_BYTE_3(src[19])];\
dst[ 8] ^= groestl_T3[groestl_EXT_BYTE_3(src[30])];\
dst[ 9] ^= groestl_T3[groestl_EXT_BYTE_3(src[21])];\
dst[10] ^= groestl_T3[groestl_EXT_BYTE_3(src[ 0])];\
dst[11] ^= groestl_T3[groestl_EXT_BYTE_3(src[23])];\
dst[12] ^= groestl_T3[groestl_EXT_BYTE_3(src[ 2])];\
dst[13] ^= groestl_T3[groestl_EXT_BYTE_3(src[25])];\
dst[14] ^= groestl_T3[groestl_EXT_BYTE_3(src[ 4])];\
dst[15] ^= groestl_T3[groestl_EXT_BYTE_3(src[27])];\
dst[16] ^= groestl_T3[groestl_EXT_BYTE_3(src[ 6])];\
dst[17] ^= groestl_T3[groestl_EXT_BYTE_3(src[29])];\
dst[18] ^= groestl_T3[groestl_EXT_BYTE_3(src[ 8])];\
dst[19] ^= groestl_T3[groestl_EXT_BYTE_3(src[31])];\
dst[20] ^= groestl_T3[groestl_EXT_BYTE_3(src[10])];\
dst[21] ^= groestl_T3[groestl_EXT_BYTE_3(src[ 1])];\
dst[22] ^= groestl_T3[groestl_EXT_BYTE_3(src[12])];\
dst[23] ^= groestl_T3[groestl_EXT_BYTE_3(src[ 3])];\
dst[24] ^= groestl_T3[groestl_EXT_BYTE_3(src[14])];\
dst[25] ^= groestl_T3[groestl_EXT_BYTE_3(src[ 5])];\
dst[26] ^= groestl_T3[groestl_EXT_BYTE_3(src[16])];\
dst[27] ^= groestl_T3[groestl_EXT_BYTE_3(src[ 7])];\
dst[28] ^= groestl_T3[groestl_EXT_BYTE_3(src[18])];\
dst[29] ^= groestl_T3[groestl_EXT_BYTE_3(src[ 9])];\
dst[30] ^= groestl_T3[groestl_EXT_BYTE_3(src[20])];\
dst[31] ^= groestl_T3[groestl_EXT_BYTE_3(src[11])];\
dst[ 0] ^= groestl_T4[groestl_EXT_BYTE_0(src[ 1])];\
dst[ 1] ^= groestl_T4[groestl_EXT_BYTE_0(src[ 2])];\
dst[ 2] ^= groestl_T4[groestl_EXT_BYTE_0(src[ 3])];\
dst[ 3] ^= groestl_T4[groestl_EXT_BYTE_0(src[ 4])];\
dst[ 4] ^= groestl_T4[groestl_EXT_BYTE_0(src[ 5])];\
dst[ 5] ^= groestl_T4[groestl_EXT_BYTE_0(src[ 6])];\
dst[ 6] ^= groestl_T4[groestl_EXT_BYTE_0(src[ 7])];\
dst[ 7] ^= groestl_T4[groestl_EXT_BYTE_0(src[ 8])];\
dst[ 8] ^= groestl_T4[groestl_EXT_BYTE_0(src[ 9])];\
dst[ 9] ^= groestl_T4[groestl_EXT_BYTE_0(src[10])];\
dst[10] ^= groestl_T4[groestl_EXT_BYTE_0(src[11])];\
dst[11] ^= groestl_T4[groestl_EXT_BYTE_0(src[12])];\
dst[12] ^= groestl_T4[groestl_EXT_BYTE_0(src[13])];\
dst[13] ^= groestl_T4[groestl_EXT_BYTE_0(src[14])];\
dst[14] ^= groestl_T4[groestl_EXT_BYTE_0(src[15])];\
dst[15] ^= groestl_T4[groestl_EXT_BYTE_0(src[16])];\
dst[16] ^= groestl_T4[groestl_EXT_BYTE_0(src[17])];\
dst[17] ^= groestl_T4[groestl_EXT_BYTE_0(src[18])];\
dst[18] ^= groestl_T4[groestl_EXT_BYTE_0(src[19])];\
dst[19] ^= groestl_T4[groestl_EXT_BYTE_0(src[20])];\
dst[20] ^= groestl_T4[groestl_EXT_BYTE_0(src[21])];\
dst[21] ^= groestl_T4[groestl_EXT_BYTE_0(src[22])];\
dst[22] ^= groestl_T4[groestl_EXT_BYTE_0(src[23])];\
dst[23] ^= groestl_T4[groestl_EXT_BYTE_0(src[24])];\
dst[24] ^= groestl_T4[groestl_EXT_BYTE_0(src[25])];\
dst[25] ^= groestl_T4[groestl_EXT_BYTE_0(src[26])];\
dst[26] ^= groestl_T4[groestl_EXT_BYTE_0(src[27])];\
dst[27] ^= groestl_T4[groestl_EXT_BYTE_0(src[28])];\
dst[28] ^= groestl_T4[groestl_EXT_BYTE_0(src[29])];\
dst[29] ^= groestl_T4[groestl_EXT_BYTE_0(src[30])];\
dst[30] ^= groestl_T4[groestl_EXT_BYTE_0(src[31])];\
dst[31] ^= groestl_T4[groestl_EXT_BYTE_0(src[ 0])];\
dst[ 0] ^= groestl_T5[groestl_EXT_BYTE_1(src[ 5])];\
dst[ 1] ^= groestl_T5[groestl_EXT_BYTE_1(src[ 6])];\
dst[ 2] ^= groestl_T5[groestl_EXT_BYTE_1(src[ 7])];\
dst[ 3] ^= groestl_T5[groestl_EXT_BYTE_1(src[ 8])];\
dst[ 4] ^= groestl_T5[groestl_EXT_BYTE_1(src[ 9])];\
dst[ 5] ^= groestl_T5[groestl_EXT_BYTE_1(src[10])];\
dst[ 6] ^= groestl_T5[groestl_EXT_BYTE_1(src[11])];\
dst[ 7] ^= groestl_T5[groestl_EXT_BYTE_1(src[12])];\
dst[ 8] ^= groestl_T5[groestl_EXT_BYTE_1(src[13])];\
dst[ 9] ^= groestl_T5[groestl_EXT_BYTE_1(src[14])];\
dst[10] ^= groestl_T5[groestl_EXT_BYTE_1(src[15])];\
dst[11] ^= groestl_T5[groestl_EXT_BYTE_1(src[16])];\
dst[12] ^= groestl_T5[groestl_EXT_BYTE_1(src[17])];\
dst[13] ^= groestl_T5[groestl_EXT_BYTE_1(src[18])];\
dst[14] ^= groestl_T5[groestl_EXT_BYTE_1(src[19])];\
dst[15] ^= groestl_T5[groestl_EXT_BYTE_1(src[20])];\
dst[16] ^= groestl_T5[groestl_EXT_BYTE_1(src[21])];\
dst[17] ^= groestl_T5[groestl_EXT_BYTE_1(src[22])];\
dst[18] ^= groestl_T5[groestl_EXT_BYTE_1(src[23])];\
dst[19] ^= groestl_T5[groestl_EXT_BYTE_1(src[24])];\
dst[20] ^= groestl_T5[groestl_EXT_BYTE_1(src[25])];\
dst[21] ^= groestl_T5[groestl_EXT_BYTE_1(src[26])];\
dst[22] ^= groestl_T5[groestl_EXT_BYTE_1(src[27])];\
dst[23] ^= groestl_T5[groestl_EXT_BYTE_1(src[28])];\
dst[24] ^= groestl_T5[groestl_EXT_BYTE_1(src[29])];\
dst[25] ^= groestl_T5[groestl_EXT_BYTE_1(src[30])];\
dst[26] ^= groestl_T5[groestl_EXT_BYTE_1(src[31])];\
dst[27] ^= groestl_T5[groestl_EXT_BYTE_1(src[ 0])];\
dst[28] ^= groestl_T5[groestl_EXT_BYTE_1(src[ 1])];\
dst[29] ^= groestl_T5[groestl_EXT_BYTE_1(src[ 2])];\
dst[30] ^= groestl_T5[groestl_EXT_BYTE_1(src[ 3])];\
dst[31] ^= groestl_T5[groestl_EXT_BYTE_1(src[ 4])];\
dst[ 0] ^= groestl_T6[groestl_EXT_BYTE_2(src[ 9])];\
dst[ 1] ^= groestl_T6[groestl_EXT_BYTE_2(src[10])];\
dst[ 2] ^= groestl_T6[groestl_EXT_BYTE_2(src[11])];\
dst[ 3] ^= groestl_T6[groestl_EXT_BYTE_2(src[12])];\
dst[ 4] ^= groestl_T6[groestl_EXT_BYTE_2(src[13])];\
dst[ 5] ^= groestl_T6[groestl_EXT_BYTE_2(src[14])];\
dst[ 6] ^= groestl_T6[groestl_EXT_BYTE_2(src[15])];\
dst[ 7] ^= groestl_T6[groestl_EXT_BYTE_2(src[16])];\
dst[ 8] ^= groestl_T6[groestl_EXT_BYTE_2(src[17])];\
dst[ 9] ^= groestl_T6[groestl_EXT_BYTE_2(src[18])];\
dst[10] ^= groestl_T6[groestl_EXT_BYTE_2(src[19])];\
dst[11] ^= groestl_T6[groestl_EXT_BYTE_2(src[20])];\
dst[12] ^= groestl_T6[groestl_EXT_BYTE_2(src[21])];\
dst[13] ^= groestl_T6[groestl_EXT_BYTE_2(src[22])];\
dst[14] ^= groestl_T6[groestl_EXT_BYTE_2(src[23])];\
dst[15] ^= groestl_T6[groestl_EXT_BYTE_2(src[24])];\
dst[16] ^= groestl_T6[groestl_EXT_BYTE_2(src[25])];\
dst[17] ^= groestl_T6[groestl_EXT_BYTE_2(src[26])];\
dst[18] ^= groestl_T6[groestl_EXT_BYTE_2(src[27])];\
dst[19] ^= groestl_T6[groestl_EXT_BYTE_2(src[28])];\
dst[20] ^= groestl_T6[groestl_EXT_BYTE_2(src[29])];\
dst[21] ^= groestl_T6[groestl_EXT_BYTE_2(src[30])];\
dst[22] ^= groestl_T6[groestl_EXT_BYTE_2(src[31])];\
dst[23] ^= groestl_T6[groestl_EXT_BYTE_2(src[ 0])];\
dst[24] ^= groestl_T6[groestl_EXT_BYTE_2(src[ 1])];\
dst[25] ^= groestl_T6[groestl_EXT_BYTE_2(src[ 2])];\
dst[26] ^= groestl_T6[groestl_EXT_BYTE_2(src[ 3])];\
dst[27] ^= groestl_T6[groestl_EXT_BYTE_2(src[ 4])];\
dst[28] ^= groestl_T6[groestl_EXT_BYTE_2(src[ 5])];\
dst[29] ^= groestl_T6[groestl_EXT_BYTE_2(src[ 6])];\
dst[30] ^= groestl_T6[groestl_EXT_BYTE_2(src[ 7])];\
dst[31] ^= groestl_T6[groestl_EXT_BYTE_2(src[ 8])];\
dst[ 0] ^= groestl_T7[groestl_EXT_BYTE_3(src[13])];\
dst[ 1] ^= groestl_T7[groestl_EXT_BYTE_3(src[22])];\
dst[ 2] ^= groestl_T7[groestl_EXT_BYTE_3(src[15])];\
dst[ 3] ^= groestl_T7[groestl_EXT_BYTE_3(src[24])];\
dst[ 4] ^= groestl_T7[groestl_EXT_BYTE_3(src[17])];\
dst[ 5] ^= groestl_T7[groestl_EXT_BYTE_3(src[26])];\
dst[ 6] ^= groestl_T7[groestl_EXT_BYTE_3(src[19])];\
dst[ 7] ^= groestl_T7[groestl_EXT_BYTE_3(src[28])];\
dst[ 8] ^= groestl_T7[groestl_EXT_BYTE_3(src[21])];\
dst[ 9] ^= groestl_T7[groestl_EXT_BYTE_3(src[30])];\
dst[10] ^= groestl_T7[groestl_EXT_BYTE_3(src[23])];\
dst[11] ^= groestl_T7[groestl_EXT_BYTE_3(src[ 0])];\
dst[12] ^= groestl_T7[groestl_EXT_BYTE_3(src[25])];\
dst[13] ^= groestl_T7[groestl_EXT_BYTE_3(src[ 2])];\
dst[14] ^= groestl_T7[groestl_EXT_BYTE_3(src[27])];\
dst[15] ^= groestl_T7[groestl_EXT_BYTE_3(src[ 4])];\
dst[16] ^= groestl_T7[groestl_EXT_BYTE_3(src[29])];\
dst[17] ^= groestl_T7[groestl_EXT_BYTE_3(src[ 6])];\
dst[18] ^= groestl_T7[groestl_EXT_BYTE_3(src[31])];\
dst[19] ^= groestl_T7[groestl_EXT_BYTE_3(src[ 8])];\
dst[20] ^= groestl_T7[groestl_EXT_BYTE_3(src[ 1])];\
dst[21] ^= groestl_T7[groestl_EXT_BYTE_3(src[10])];\
dst[22] ^= groestl_T7[groestl_EXT_BYTE_3(src[ 3])];\
dst[23] ^= groestl_T7[groestl_EXT_BYTE_3(src[12])];\
dst[24] ^= groestl_T7[groestl_EXT_BYTE_3(src[ 5])];\
dst[25] ^= groestl_T7[groestl_EXT_BYTE_3(src[14])];\
dst[26] ^= groestl_T7[groestl_EXT_BYTE_3(src[ 7])];\
dst[27] ^= groestl_T7[groestl_EXT_BYTE_3(src[16])];\
dst[28] ^= groestl_T7[groestl_EXT_BYTE_3(src[ 9])];\
dst[29] ^= groestl_T7[groestl_EXT_BYTE_3(src[18])];\
dst[30] ^= groestl_T7[groestl_EXT_BYTE_3(src[11])];\
dst[31] ^= groestl_T7[groestl_EXT_BYTE_3(src[20])];

// init
const CONSTANT UINT32 groestl_T_init[256*8] =
{
0xa5f432c6UL,0x84976ff8UL,0x99b05eeeUL,0x8d8c7af6UL,0x0d17e8ffUL,0xbddc0ad6UL,0xb1c816deUL,0x54fc6d91UL,0x50f09060UL,0x03050702UL,0xa9e02eceUL,0x7d87d156UL,0x192bcce7UL,0x62a613b5UL,0xe6317c4dUL,0x9ab559ecUL,0x45cf408fUL,0x9dbca31fUL,0x40c04989UL,0x879268faUL,0x153fd0efUL,0xeb2694b2UL,0xc940ce8eUL,0x0b1de6fbUL,0xec2f6e41UL,0x67a91ab3UL,0xfd1c435fUL,0xea256045UL,0xbfdaf923UL,0xf7025153UL,0x96a145e4UL,0x5bed769bUL,0xc25d2875UL,0x1c24c5e1UL,0xaee9d43dUL,0x6abef24cUL,0x5aee826cUL,0x41c3bd7eUL,0x0206f3f5UL,0x4fd15283UL,0x5ce48c68UL,0xf4075651UL,0x345c8dd1UL,0x0818e1f9UL,0x93ae4ce2UL,0x73953eabUL,0x53f59762UL,0x3f416b2aUL,0x0c141c08UL,0x52f66395UL,0x65afe946UL,0x5ee27f9dUL,0x28784830UL,0xa1f8cf37UL,0x0f111b0aUL,0xb5c4eb2fUL,0x091b150eUL,0x365a7e24UL,0x9bb6ad1bUL,0x3d4798dfUL,0x266aa7cdUL,0x69bbf54eUL,0xcd4c337fUL,0x9fba50eaUL,0x1b2d3f12UL,0x9eb9a41dUL,0x749cc458UL,0x2e724634UL,0x2d774136UL,0xb2cd11dcUL,0xee299db4UL,0xfb164d5bUL,0xf601a5a4UL,0x4dd7a176UL,0x61a314b7UL,0xce49347dUL,0x7b8ddf52UL,0x3e429fddUL,0x7193cd5eUL,0x97a2b113UL,0xf504a2a6UL,0x68b801b9UL,0x00000000UL,0x2c74b5c1UL,0x60a0e040UL,0x1f21c2e3UL,0xc8433a79UL,0xed2c9ab6UL,0xbed90dd4UL,0x46ca478dUL,0xd9701767UL,0x4bddaf72UL,0xde79ed94UL,0xd467ff98UL,0xe82393b0UL,0x4ade5b85UL,0x6bbd06bbUL,0x2a7ebbc5UL,0xe5347b4fUL,0x163ad7edUL,0xc554d286UL,0xd762f89aUL,0x55ff9966UL,0x94a7b611UL,0xcf4ac08aUL,0x1030d9e9UL,0x060a0e04UL,0x819866feUL,0xf00baba0UL,0x44ccb478UL,0xbad5f025UL,0xe33e754bUL,0xf30eaca2UL,0xfe19445dUL,0xc05bdb80UL,0x8a858005UL,0xadecd33fUL,0xbcdffe21UL,0x48d8a870UL,0x040cfdf1UL,0xdf7a1963UL,0xc1582f77UL,0x759f30afUL,0x63a5e742UL,0x30507020UL,0x1a2ecbe5UL,0x0e12effdUL,0x6db708bfUL,0x4cd45581UL,0x143c2418UL,0x355f7926UL,0x2f71b2c3UL,0xe13886beUL,0xa2fdc835UL,0xcc4fc788UL,0x394b652eUL,0x57f96a93UL,0xf20d5855UL,0x829d61fcUL,0x47c9b37aUL,0xacef27c8UL,0xe73288baUL,0x2b7d4f32UL,0x95a442e6UL,0xa0fb3bc0UL,0x98b3aa19UL,0xd168f69eUL,0x7f8122a3UL,0x66aaee44UL,0x7e82d654UL,0xabe6dd3bUL,0x839e950bUL,0xca45c98cUL,0x297bbcc7UL,0xd36e056bUL,0x3c446c28UL,0x798b2ca7UL,0xe23d81bcUL,0x1d273116UL,0x769a37adUL,0x3b4d96dbUL,0x56fa9e64UL,0x4ed2a674UL,0x1e223614UL,0xdb76e492UL,0x0a1e120cUL,0x6cb4fc48UL,0xe4378fb8UL,0x5de7789fUL,0x6eb20fbdUL,0xef2a6943UL,0xa6f135c4UL,0xa8e3da39UL,0xa4f7c631UL,0x37598ad3UL,0x8b8674f2UL,0x325683d5UL,0x43c54e8bUL,0x59eb856eUL,0xb7c218daUL,0x8c8f8e01UL,0x64ac1db1UL,0xd26df19cUL,0xe03b7249UL,0xb4c71fd8UL,0xfa15b9acUL,0x0709faf3UL,0x256fa0cfUL,0xafea20caUL,0x8e897df4UL,0xe9206747UL,0x18283810UL,0xd5640b6fUL,0x888373f0UL,0x6fb1fb4aUL,0x7296ca5cUL,0x246c5438UL,0xf1085f57UL,0xc7522173UL,0x51f36497UL,0x2365aecbUL,0x7c8425a1UL,0x9cbf57e8UL,0x21635d3eUL,0xdd7cea96UL,0xdc7f1e61UL,0x86919c0dUL,0x85949b0fUL,0x90ab4be0UL,0x42c6ba7cUL,0xc4572671UL,0xaae529ccUL,0xd873e390UL,0x050f0906UL,0x0103f4f7UL,0x12362a1cUL,0xa3fe3cc2UL,0x5fe18b6aUL,0xf910beaeUL,0xd06b0269UL,0x91a8bf17UL,0x58e87199UL,0x2769533aUL,0xb9d0f727UL,0x384891d9UL,0x1335deebUL,0xb3cee52bUL,0x33557722UL,0xbbd604d2UL,0x709039a9UL,0x89808707UL,0xa7f2c133UL,0xb6c1ec2dUL,0x22665a3cUL,0x92adb815UL,0x2060a9c9UL,0x49db5c87UL,0xff1ab0aaUL,0x7888d850UL,0x7a8e2ba5UL,0x8f8a8903UL,0xf8134a59UL,0x809b9209UL,0x1739231aUL,0xda751065UL,0x315384d7UL,0xc651d584UL,0xb8d303d0UL,0xc35edc82UL,0xb0cbe229UL,0x7799c35aUL,0x11332d1eUL,0xcb463d7bUL,0xfc1fb7a8UL,0xd6610c6dUL,0x3a4e622cUL,
0xf432c6c6UL,0x976ff8f8UL,0xb05eeeeeUL,0x8c7af6f6UL,0x17e8ffffUL,0xdc0ad6d6UL,0xc816dedeUL,0xfc6d9191UL,0xf0906060UL,0x05070202UL,0xe02ececeUL,0x87d15656UL,0x2bcce7e7UL,0xa613b5b5UL,0x317c4d4dUL,0xb559ececUL,0xcf408f8fUL,0xbca31f1fUL,0xc0498989UL,0x9268fafaUL,0x3fd0efefUL,0x2694b2b2UL,0x40ce8e8eUL,0x1de6fbfbUL,0x2f6e4141UL,0xa91ab3b3UL,0x1c435f5fUL,0x25604545UL,0xdaf92323UL,0x02515353UL,0xa145e4e4UL,0xed769b9bUL,0x5d287575UL,0x24c5e1e1UL,0xe9d43d3dUL,0xbef24c4cUL,0xee826c6cUL,0xc3bd7e7eUL,0x06f3f5f5UL,0xd1528383UL,0xe48c6868UL,0x07565151UL,0x5c8dd1d1UL,0x18e1f9f9UL,0xae4ce2e2UL,0x953eababUL,0xf5976262UL,0x416b2a2aUL,0x141c0808UL,0xf6639595UL,0xafe94646UL,0xe27f9d9dUL,0x78483030UL,0xf8cf3737UL,0x111b0a0aUL,0xc4eb2f2fUL,0x1b150e0eUL,0x5a7e2424UL,0xb6ad1b1bUL,0x4798dfdfUL,0x6aa7cdcdUL,0xbbf54e4eUL,0x4c337f7fUL,0xba50eaeaUL,0x2d3f1212UL,0xb9a41d1dUL,0x9cc45858UL,0x72463434UL,0x77413636UL,0xcd11dcdcUL,0x299db4b4UL,0x164d5b5bUL,0x01a5a4a4UL,0xd7a17676UL,0xa314b7b7UL,0x49347d7dUL,0x8ddf5252UL,0x429fddddUL,0x93cd5e5eUL,0xa2b11313UL,0x04a2a6a6UL,0xb801b9b9UL,0x00000000UL,0x74b5c1c1UL,0xa0e04040UL,0x21c2e3e3UL,0x433a7979UL,0x2c9ab6b6UL,0xd90dd4d4UL,0xca478d8dUL,0x70176767UL,0xddaf7272UL,0x79ed9494UL,0x67ff9898UL,0x2393b0b0UL,0xde5b8585UL,0xbd06bbbbUL,0x7ebbc5c5UL,0x347b4f4fUL,0x3ad7ededUL,0x54d28686UL,0x62f89a9aUL,0xff996666UL,0xa7b61111UL,0x4ac08a8aUL,0x30d9e9e9UL,0x0a0e0404UL,0x9866fefeUL,0x0baba0a0UL,0xccb47878UL,0xd5f02525UL,0x3e754b4bUL,0x0eaca2a2UL,0x19445d5dUL,0x5bdb8080UL,0x85800505UL,0xecd33f3fUL,0xdffe2121UL,0xd8a87070UL,0x0cfdf1f1UL,0x7a196363UL,0x582f7777UL,0x9f30afafUL,0xa5e74242UL,0x50702020UL,0x2ecbe5e5UL,0x12effdfdUL,0xb708bfbfUL,0xd4558181UL,0x3c241818UL,0x5f792626UL,0x71b2c3c3UL,0x3886bebeUL,0xfdc83535UL,0x4fc78888UL,0x4b652e2eUL,0xf96a9393UL,0x0d585555UL,0x9d61fcfcUL,0xc9b37a7aUL,0xef27c8c8UL,0x3288babaUL,0x7d4f3232UL,0xa442e6e6UL,0xfb3bc0c0UL,0xb3aa1919UL,0x68f69e9eUL,0x8122a3a3UL,0xaaee4444UL,0x82d65454UL,0xe6dd3b3bUL,0x9e950b0bUL,0x45c98c8cUL,0x7bbcc7c7UL,0x6e056b6bUL,0x446c2828UL,0x8b2ca7a7UL,0x3d81bcbcUL,0x27311616UL,0x9a37adadUL,0x4d96dbdbUL,0xfa9e6464UL,0xd2a67474UL,0x22361414UL,0x76e49292UL,0x1e120c0cUL,0xb4fc4848UL,0x378fb8b8UL,0xe7789f9fUL,0xb20fbdbdUL,0x2a694343UL,0xf135c4c4UL,0xe3da3939UL,0xf7c63131UL,0x598ad3d3UL,0x8674f2f2UL,0x5683d5d5UL,0xc54e8b8bUL,0xeb856e6eUL,0xc218dadaUL,0x8f8e0101UL,0xac1db1b1UL,0x6df19c9cUL,0x3b724949UL,0xc71fd8d8UL,0x15b9acacUL,0x09faf3f3UL,0x6fa0cfcfUL,0xea20cacaUL,0x897df4f4UL,0x20674747UL,0x28381010UL,0x640b6f6fUL,0x8373f0f0UL,0xb1fb4a4aUL,0x96ca5c5cUL,0x6c543838UL,0x085f5757UL,0x52217373UL,0xf3649797UL,0x65aecbcbUL,0x8425a1a1UL,0xbf57e8e8UL,0x635d3e3eUL,0x7cea9696UL,0x7f1e6161UL,0x919c0d0dUL,0x949b0f0fUL,0xab4be0e0UL,0xc6ba7c7cUL,0x57267171UL,0xe529ccccUL,0x73e39090UL,0x0f090606UL,0x03f4f7f7UL,0x362a1c1cUL,0xfe3cc2c2UL,0xe18b6a6aUL,0x10beaeaeUL,0x6b026969UL,0xa8bf1717UL,0xe8719999UL,0x69533a3aUL,0xd0f72727UL,0x4891d9d9UL,0x35deebebUL,0xcee52b2bUL,0x55772222UL,0xd604d2d2UL,0x9039a9a9UL,0x80870707UL,0xf2c13333UL,0xc1ec2d2dUL,0x665a3c3cUL,0xadb81515UL,0x60a9c9c9UL,0xdb5c8787UL,0x1ab0aaaaUL,0x88d85050UL,0x8e2ba5a5UL,0x8a890303UL,0x134a5959UL,0x9b920909UL,0x39231a1aUL,0x75106565UL,0x5384d7d7UL,0x51d58484UL,0xd303d0d0UL,0x5edc8282UL,0xcbe22929UL,0x99c35a5aUL,0x332d1e1eUL,0x463d7b7bUL,0x1fb7a8a8UL,0x610c6d6dUL,0x4e622c2cUL,
0x32c6c6a5UL,0x6ff8f884UL,0x5eeeee99UL,0x7af6f68dUL,0xe8ffff0dUL,0x0ad6d6bdUL,0x16dedeb1UL,0x6d919154UL,0x90606050UL,0x07020203UL,0x2ececea9UL,0xd156567dUL,0xcce7e719UL,0x13b5b562UL,0x7c4d4de6UL,0x59ecec9aUL,0x408f8f45UL,0xa31f1f9dUL,0x49898940UL,0x68fafa87UL,0xd0efef15UL,0x94b2b2ebUL,0xce8e8ec9UL,0xe6fbfb0bUL,0x6e4141ecUL,0x1ab3b367UL,0x435f5ffdUL,0x604545eaUL,0xf92323bfUL,0x515353f7UL,0x45e4e496UL,0x769b9b5bUL,0x287575c2UL,0xc5e1e11cUL,0xd43d3daeUL,0xf24c4c6aUL,0x826c6c5aUL,0xbd7e7e41UL,0xf3f5f502UL,0x5283834fUL,0x8c68685cUL,0x565151f4UL,0x8dd1d134UL,0xe1f9f908UL,0x4ce2e293UL,0x3eabab73UL,0x97626253UL,0x6b2a2a3fUL,0x1c08080cUL,0x63959552UL,0xe9464665UL,0x7f9d9d5eUL,0x48303028UL,0xcf3737a1UL,0x1b0a0a0fUL,0xeb2f2fb5UL,0x150e0e09UL,0x7e242436UL,0xad1b1b9bUL,0x98dfdf3dUL,0xa7cdcd26UL,0xf54e4e69UL,0x337f7fcdUL,0x50eaea9fUL,0x3f12121bUL,0xa41d1d9eUL,0xc4585874UL,0x4634342eUL,0x4136362dUL,0x11dcdcb2UL,0x9db4b4eeUL,0x4d5b5bfbUL,0xa5a4a4f6UL,0xa176764dUL,0x14b7b761UL,0x347d7dceUL,0xdf52527bUL,0x9fdddd3eUL,0xcd5e5e71UL,0xb1131397UL,0xa2a6a6f5UL,0x01b9b968UL,0x00000000UL,0xb5c1c12cUL,0xe0404060UL,0xc2e3e31fUL,0x3a7979c8UL,0x9ab6b6edUL,0x0dd4d4beUL,0x478d8d46UL,0x176767d9UL,0xaf72724bUL,0xed9494deUL,0xff9898d4UL,0x93b0b0e8UL,0x5b85854aUL,0x06bbbb6bUL,0xbbc5c52aUL,0x7b4f4fe5UL,0xd7eded16UL,0xd28686c5UL,0xf89a9ad7UL,0x99666655UL,0xb6111194UL,0xc08a8acfUL,0xd9e9e910UL,0x0e040406UL,0x66fefe81UL,0xaba0a0f0UL,0xb4787844UL,0xf02525baUL,0x754b4be3UL,0xaca2a2f3UL,0x445d5dfeUL,0xdb8080c0UL,0x8005058aUL,0xd33f3fadUL,0xfe2121bcUL,0xa8707048UL,0xfdf1f104UL,0x196363dfUL,0x2f7777c1UL,0x30afaf75UL,0xe7424263UL,0x70202030UL,0xcbe5e51aUL,0xeffdfd0eUL,0x08bfbf6dUL,0x5581814cUL,0x24181814UL,0x79262635UL,0xb2c3c32fUL,0x86bebee1UL,0xc83535a2UL,0xc78888ccUL,0x652e2e39UL,0x6a939357UL,0x585555f2UL,0x61fcfc82UL,0xb37a7a47UL,0x27c8c8acUL,0x88babae7UL,0x4f32322bUL,0x42e6e695UL,0x3bc0c0a0UL,0xaa191998UL,0xf69e9ed1UL,0x22a3a37fUL,0xee444466UL,0xd654547eUL,0xdd3b3babUL,0x950b0b83UL,0xc98c8ccaUL,0xbcc7c729UL,0x056b6bd3UL,0x6c28283cUL,0x2ca7a779UL,0x81bcbce2UL,0x3116161dUL,0x37adad76UL,0x96dbdb3bUL,0x9e646456UL,0xa674744eUL,0x3614141eUL,0xe49292dbUL,0x120c0c0aUL,0xfc48486cUL,0x8fb8b8e4UL,0x789f9f5dUL,0x0fbdbd6eUL,0x694343efUL,0x35c4c4a6UL,0xda3939a8UL,0xc63131a4UL,0x8ad3d337UL,0x74f2f28bUL,0x83d5d532UL,0x4e8b8b43UL,0x856e6e59UL,0x18dadab7UL,0x8e01018cUL,0x1db1b164UL,0xf19c9cd2UL,0x724949e0UL,0x1fd8d8b4UL,0xb9acacfaUL,0xfaf3f307UL,0xa0cfcf25UL,0x20cacaafUL,0x7df4f48eUL,0x674747e9UL,0x38101018UL,0x0b6f6fd5UL,0x73f0f088UL,0xfb4a4a6fUL,0xca5c5c72UL,0x54383824UL,0x5f5757f1UL,0x217373c7UL,0x64979751UL,0xaecbcb23UL,0x25a1a17cUL,0x57e8e89cUL,0x5d3e3e21UL,0xea9696ddUL,0x1e6161dcUL,0x9c0d0d86UL,0x9b0f0f85UL,0x4be0e090UL,0xba7c7c42UL,0x267171c4UL,0x29ccccaaUL,0xe39090d8UL,0x09060605UL,0xf4f7f701UL,0x2a1c1c12UL,0x3cc2c2a3UL,0x8b6a6a5fUL,0xbeaeaef9UL,0x026969d0UL,0xbf171791UL,0x71999958UL,0x533a3a27UL,0xf72727b9UL,0x91d9d938UL,0xdeebeb13UL,0xe52b2bb3UL,0x77222233UL,0x04d2d2bbUL,0x39a9a970UL,0x87070789UL,0xc13333a7UL,0xec2d2db6UL,0x5a3c3c22UL,0xb8151592UL,0xa9c9c920UL,0x5c878749UL,0xb0aaaaffUL,0xd8505078UL,0x2ba5a57aUL,0x8903038fUL,0x4a5959f8UL,0x92090980UL,0x231a1a17UL,0x106565daUL,0x84d7d731UL,0xd58484c6UL,0x03d0d0b8UL,0xdc8282c3UL,0xe22929b0UL,0xc35a5a77UL,0x2d1e1e11UL,0x3d7b7bcbUL,0xb7a8a8fcUL,0x0c6d6dd6UL,0x622c2c3aUL,
0xc6c6a597UL,0xf8f884ebUL,0xeeee99c7UL,0xf6f68df7UL,0xffff0de5UL,0xd6d6bdb7UL,0xdedeb1a7UL,0x91915439UL,0x606050c0UL,0x02020304UL,0xcecea987UL,0x56567dacUL,0xe7e719d5UL,0xb5b56271UL,0x4d4de69aUL,0xecec9ac3UL,0x8f8f4505UL,0x1f1f9d3eUL,0x89894009UL,0xfafa87efUL,0xefef15c5UL,0xb2b2eb7fUL,0x8e8ec907UL,0xfbfb0bedUL,0x4141ec82UL,0xb3b3677dUL,0x5f5ffdbeUL,0x4545ea8aUL,0x2323bf46UL,0x5353f7a6UL,0xe4e496d3UL,0x9b9b5b2dUL,0x7575c2eaUL,0xe1e11cd9UL,0x3d3dae7aUL,0x4c4c6a98UL,0x6c6c5ad8UL,0x7e7e41fcUL,0xf5f502f1UL,0x83834f1dUL,0x68685cd0UL,0x5151f4a2UL,0xd1d134b9UL,0xf9f908e9UL,0xe2e293dfUL,0xabab734dUL,0x626253c4UL,0x2a2a3f54UL,0x08080c10UL,0x95955231UL,0x4646658cUL,0x9d9d5e21UL,0x30302860UL,0x3737a16eUL,0x0a0a0f14UL,0x2f2fb55eUL,0x0e0e091cUL,0x24243648UL,0x1b1b9b36UL,0xdfdf3da5UL,0xcdcd2681UL,0x4e4e699cUL,0x7f7fcdfeUL,0xeaea9fcfUL,0x12121b24UL,0x1d1d9e3aUL,0x585874b0UL,0x34342e68UL,0x36362d6cUL,0xdcdcb2a3UL,0xb4b4ee73UL,0x5b5bfbb6UL,0xa4a4f653UL,0x76764decUL,0xb7b76175UL,0x7d7dcefaUL,0x52527ba4UL,0xdddd3ea1UL,0x5e5e71bcUL,0x13139726UL,0xa6a6f557UL,0xb9b96869UL,0x00000000UL,0xc1c12c99UL,0x40406080UL,0xe3e31fddUL,0x7979c8f2UL,0xb6b6ed77UL,0xd4d4beb3UL,0x8d8d4601UL,0x6767d9ceUL,0x72724be4UL,0x9494de33UL,0x9898d42bUL,0xb0b0e87bUL,0x85854a11UL,0xbbbb6b6dUL,0xc5c52a91UL,0x4f4fe59eUL,0xeded16c1UL,0x8686c517UL,0x9a9ad72fUL,0x666655ccUL,0x11119422UL,0x8a8acf0fUL,0xe9e910c9UL,0x04040608UL,0xfefe81e7UL,0xa0a0f05bUL,0x787844f0UL,0x2525ba4aUL,0x4b4be396UL,0xa2a2f35fUL,0x5d5dfebaUL,0x8080c01bUL,0x05058a0aUL,0x3f3fad7eUL,0x2121bc42UL,0x707048e0UL,0xf1f104f9UL,0x6363dfc6UL,0x7777c1eeUL,0xafaf7545UL,0x42426384UL,0x20203040UL,0xe5e51ad1UL,0xfdfd0ee1UL,0xbfbf6d65UL,0x81814c19UL,0x18181430UL,0x2626354cUL,0xc3c32f9dUL,0xbebee167UL,0x3535a26aUL,0x8888cc0bUL,0x2e2e395cUL,0x9393573dUL,0x5555f2aaUL,0xfcfc82e3UL,0x7a7a47f4UL,0xc8c8ac8bUL,0xbabae76fUL,0x32322b64UL,0xe6e695d7UL,0xc0c0a09bUL,0x19199832UL,0x9e9ed127UL,0xa3a37f5dUL,0x44446688UL,0x54547ea8UL,0x3b3bab76UL,0x0b0b8316UL,0x8c8cca03UL,0xc7c72995UL,0x6b6bd3d6UL,0x28283c50UL,0xa7a77955UL,0xbcbce263UL,0x16161d2cUL,0xadad7641UL,0xdbdb3badUL,0x646456c8UL,0x74744ee8UL,0x14141e28UL,0x9292db3fUL,0x0c0c0a18UL,0x48486c90UL,0xb8b8e46bUL,0x9f9f5d25UL,0xbdbd6e61UL,0x4343ef86UL,0xc4c4a693UL,0x3939a872UL,0x3131a462UL,0xd3d337bdUL,0xf2f28bffUL,0xd5d532b1UL,0x8b8b430dUL,0x6e6e59dcUL,0xdadab7afUL,0x01018c02UL,0xb1b16479UL,0x9c9cd223UL,0x4949e092UL,0xd8d8b4abUL,0xacacfa43UL,0xf3f307fdUL,0xcfcf2585UL,0xcacaaf8fUL,0xf4f48ef3UL,0x4747e98eUL,0x10101820UL,0x6f6fd5deUL,0xf0f088fbUL,0x4a4a6f94UL,0x5c5c72b8UL,0x38382470UL,0x5757f1aeUL,0x7373c7e6UL,0x97975135UL,0xcbcb238dUL,0xa1a17c59UL,0xe8e89ccbUL,0x3e3e217cUL,0x9696dd37UL,0x6161dcc2UL,0x0d0d861aUL,0x0f0f851eUL,0xe0e090dbUL,0x7c7c42f8UL,0x7171c4e2UL,0xccccaa83UL,0x9090d83bUL,0x0606050cUL,0xf7f701f5UL,0x1c1c1238UL,0xc2c2a39fUL,0x6a6a5fd4UL,0xaeaef947UL,0x6969d0d2UL,0x1717912eUL,0x99995829UL,0x3a3a2774UL,0x2727b94eUL,0xd9d938a9UL,0xebeb13cdUL,0x2b2bb356UL,0x22223344UL,0xd2d2bbbfUL,0xa9a97049UL,0x0707890eUL,0x3333a766UL,0x2d2db65aUL,0x3c3c2278UL,0x1515922aUL,0xc9c92089UL,0x87874915UL,0xaaaaff4fUL,0x505078a0UL,0xa5a57a51UL,0x03038f06UL,0x5959f8b2UL,0x09098012UL,0x1a1a1734UL,0x6565dacaUL,0xd7d731b5UL,0x8484c613UL,0xd0d0b8bbUL,0x8282c31fUL,0x2929b052UL,0x5a5a77b4UL,0x1e1e113cUL,0x7b7bcbf6UL,0xa8a8fc4bUL,0x6d6dd6daUL,0x2c2c3a58UL,
0xc6a597f4UL,0xf884eb97UL,0xee99c7b0UL,0xf68df78cUL,0xff0de517UL,0xd6bdb7dcUL,0xdeb1a7c8UL,0x915439fcUL,0x6050c0f0UL,0x02030405UL,0xcea987e0UL,0x567dac87UL,0xe719d52bUL,0xb56271a6UL,0x4de69a31UL,0xec9ac3b5UL,0x8f4505cfUL,0x1f9d3ebcUL,0x894009c0UL,0xfa87ef92UL,0xef15c53fUL,0xb2eb7f26UL,0x8ec90740UL,0xfb0bed1dUL,0x41ec822fUL,0xb3677da9UL,0x5ffdbe1cUL,0x45ea8a25UL,0x23bf46daUL,0x53f7a602UL,0xe496d3a1UL,0x9b5b2dedUL,0x75c2ea5dUL,0xe11cd924UL,0x3dae7ae9UL,0x4c6a98beUL,0x6c5ad8eeUL,0x7e41fcc3UL,0xf502f106UL,0x834f1dd1UL,0x685cd0e4UL,0x51f4a207UL,0xd134b95cUL,0xf908e918UL,0xe293dfaeUL,0xab734d95UL,0x6253c4f5UL,0x2a3f5441UL,0x080c1014UL,0x955231f6UL,0x46658cafUL,0x9d5e21e2UL,0x30286078UL,0x37a16ef8UL,0x0a0f1411UL,0x2fb55ec4UL,0x0e091c1bUL,0x2436485aUL,0x1b9b36b6UL,0xdf3da547UL,0xcd26816aUL,0x4e699cbbUL,0x7fcdfe4cUL,0xea9fcfbaUL,0x121b242dUL,0x1d9e3ab9UL,0x5874b09cUL,0x342e6872UL,0x362d6c77UL,0xdcb2a3cdUL,0xb4ee7329UL,0x5bfbb616UL,0xa4f65301UL,0x764decd7UL,0xb76175a3UL,0x7dcefa49UL,0x527ba48dUL,0xdd3ea142UL,0x5e71bc93UL,0x139726a2UL,0xa6f55704UL,0xb96869b8UL,0x00000000UL,0xc12c9974UL,0x406080a0UL,0xe31fdd21UL,0x79c8f243UL,0xb6ed772cUL,0xd4beb3d9UL,0x8d4601caUL,0x67d9ce70UL,0x724be4ddUL,0x94de3379UL,0x98d42b67UL,0xb0e87b23UL,0x854a11deUL,0xbb6b6dbdUL,0xc52a917eUL,0x4fe59e34UL,0xed16c13aUL,0x86c51754UL,0x9ad72f62UL,0x6655ccffUL,0x119422a7UL,0x8acf0f4aUL,0xe910c930UL,0x0406080aUL,0xfe81e798UL,0xa0f05b0bUL,0x7844f0ccUL,0x25ba4ad5UL,0x4be3963eUL,0xa2f35f0eUL,0x5dfeba19UL,0x80c01b5bUL,0x058a0a85UL,0x3fad7eecUL,0x21bc42dfUL,0x7048e0d8UL,0xf104f90cUL,0x63dfc67aUL,0x77c1ee58UL,0xaf75459fUL,0x426384a5UL,0x20304050UL,0xe51ad12eUL,0xfd0ee112UL,0xbf6d65b7UL,0x814c19d4UL,0x1814303cUL,0x26354c5fUL,0xc32f9d71UL,0xbee16738UL,0x35a26afdUL,0x88cc0b4fUL,0x2e395c4bUL,0x93573df9UL,0x55f2aa0dUL,0xfc82e39dUL,0x7a47f4c9UL,0xc8ac8befUL,0xbae76f32UL,0x322b647dUL,0xe695d7a4UL,0xc0a09bfbUL,0x199832b3UL,0x9ed12768UL,0xa37f5d81UL,0x446688aaUL,0x547ea882UL,0x3bab76e6UL,0x0b83169eUL,0x8cca0345UL,0xc729957bUL,0x6bd3d66eUL,0x283c5044UL,0xa779558bUL,0xbce2633dUL,0x161d2c27UL,0xad76419aUL,0xdb3bad4dUL,0x6456c8faUL,0x744ee8d2UL,0x141e2822UL,0x92db3f76UL,0x0c0a181eUL,0x486c90b4UL,0xb8e46b37UL,0x9f5d25e7UL,0xbd6e61b2UL,0x43ef862aUL,0xc4a693f1UL,0x39a872e3UL,0x31a462f7UL,0xd337bd59UL,0xf28bff86UL,0xd532b156UL,0x8b430dc5UL,0x6e59dcebUL,0xdab7afc2UL,0x018c028fUL,0xb16479acUL,0x9cd2236dUL,0x49e0923bUL,0xd8b4abc7UL,0xacfa4315UL,0xf307fd09UL,0xcf25856fUL,0xcaaf8feaUL,0xf48ef389UL,0x47e98e20UL,0x10182028UL,0x6fd5de64UL,0xf088fb83UL,0x4a6f94b1UL,0x5c72b896UL,0x3824706cUL,0x57f1ae08UL,0x73c7e652UL,0x975135f3UL,0xcb238d65UL,0xa17c5984UL,0xe89ccbbfUL,0x3e217c63UL,0x96dd377cUL,0x61dcc27fUL,0x0d861a91UL,0x0f851e94UL,0xe090dbabUL,0x7c42f8c6UL,0x71c4e257UL,0xccaa83e5UL,0x90d83b73UL,0x06050c0fUL,0xf701f503UL,0x1c123836UL,0xc2a39ffeUL,0x6a5fd4e1UL,0xaef94710UL,0x69d0d26bUL,0x17912ea8UL,0x995829e8UL,0x3a277469UL,0x27b94ed0UL,0xd938a948UL,0xeb13cd35UL,0x2bb356ceUL,0x22334455UL,0xd2bbbfd6UL,0xa9704990UL,0x07890e80UL,0x33a766f2UL,0x2db65ac1UL,0x3c227866UL,0x15922aadUL,0xc9208960UL,0x874915dbUL,0xaaff4f1aUL,0x5078a088UL,0xa57a518eUL,0x038f068aUL,0x59f8b213UL,0x0980129bUL,0x1a173439UL,0x65daca75UL,0xd731b553UL,0x84c61351UL,0xd0b8bbd3UL,0x82c31f5eUL,0x29b052cbUL,0x5a77b499UL,0x1e113c33UL,0x7bcbf646UL,0xa8fc4b1fUL,0x6dd6da61UL,0x2c3a584eUL,
0xa597f4a5UL,0x84eb9784UL,0x99c7b099UL,0x8df78c8dUL,0x0de5170dUL,0xbdb7dcbdUL,0xb1a7c8b1UL,0x5439fc54UL,0x50c0f050UL,0x03040503UL,0xa987e0a9UL,0x7dac877dUL,0x19d52b19UL,0x6271a662UL,0xe69a31e6UL,0x9ac3b59aUL,0x4505cf45UL,0x9d3ebc9dUL,0x4009c040UL,0x87ef9287UL,0x15c53f15UL,0xeb7f26ebUL,0xc90740c9UL,0x0bed1d0bUL,0xec822fecUL,0x677da967UL,0xfdbe1cfdUL,0xea8a25eaUL,0xbf46dabfUL,0xf7a602f7UL,0x96d3a196UL,0x5b2ded5bUL,0xc2ea5dc2UL,0x1cd9241cUL,0xae7ae9aeUL,0x6a98be6aUL,0x5ad8ee5aUL,0x41fcc341UL,0x02f10602UL,0x4f1dd14fUL,0x5cd0e45cUL,0xf4a207f4UL,0x34b95c34UL,0x08e91808UL,0x93dfae93UL,0x734d9573UL,0x53c4f553UL,0x3f54413fUL,0x0c10140cUL,0x5231f652UL,0x658caf65UL,0x5e21e25eUL,0x28607828UL,0xa16ef8a1UL,0x0f14110fUL,0xb55ec4b5UL,0x091c1b09UL,0x36485a36UL,0x9b36b69bUL,0x3da5473dUL,0x26816a26UL,0x699cbb69UL,0xcdfe4ccdUL,0x9fcfba9fUL,0x1b242d1bUL,0x9e3ab99eUL,0x74b09c74UL,0x2e68722eUL,0x2d6c772dUL,0xb2a3cdb2UL,0xee7329eeUL,0xfbb616fbUL,0xf65301f6UL,0x4decd74dUL,0x6175a361UL,0xcefa49ceUL,0x7ba48d7bUL,0x3ea1423eUL,0x71bc9371UL,0x9726a297UL,0xf55704f5UL,0x6869b868UL,0x00000000UL,0x2c99742cUL,0x6080a060UL,0x1fdd211fUL,0xc8f243c8UL,0xed772cedUL,0xbeb3d9beUL,0x4601ca46UL,0xd9ce70d9UL,0x4be4dd4bUL,0xde3379deUL,0xd42b67d4UL,0xe87b23e8UL,0x4a11de4aUL,0x6b6dbd6bUL,0x2a917e2aUL,0xe59e34e5UL,0x16c13a16UL,0xc51754c5UL,0xd72f62d7UL,0x55ccff55UL,0x9422a794UL,0xcf0f4acfUL,0x10c93010UL,0x06080a06UL,0x81e79881UL,0xf05b0bf0UL,0x44f0cc44UL,0xba4ad5baUL,0xe3963ee3UL,0xf35f0ef3UL,0xfeba19feUL,0xc01b5bc0UL,0x8a0a858aUL,0xad7eecadUL,0xbc42dfbcUL,0x48e0d848UL,0x04f90c04UL,0xdfc67adfUL,0xc1ee58c1UL,0x75459f75UL,0x6384a563UL,0x30405030UL,0x1ad12e1aUL,0x0ee1120eUL,0x6d65b76dUL,0x4c19d44cUL,0x14303c14UL,0x354c5f35UL,0x2f9d712fUL,0xe16738e1UL,0xa26afda2UL,0xcc0b4fccUL,0x395c4b39UL,0x573df957UL,0xf2aa0df2UL,0x82e39d82UL,0x47f4c947UL,0xac8befacUL,0xe76f32e7UL,0x2b647d2bUL,0x95d7a495UL,0xa09bfba0UL,0x9832b398UL,0xd12768d1UL,0x7f5d817fUL,0x6688aa66UL,0x7ea8827eUL,0xab76e6abUL,0x83169e83UL,0xca0345caUL,0x29957b29UL,0xd3d66ed3UL,0x3c50443cUL,0x79558b79UL,0xe2633de2UL,0x1d2c271dUL,0x76419a76UL,0x3bad4d3bUL,0x56c8fa56UL,0x4ee8d24eUL,0x1e28221eUL,0xdb3f76dbUL,0x0a181e0aUL,0x6c90b46cUL,0xe46b37e4UL,0x5d25e75dUL,0x6e61b26eUL,0xef862aefUL,0xa693f1a6UL,0xa872e3a8UL,0xa462f7a4UL,0x37bd5937UL,0x8bff868bUL,0x32b15632UL,0x430dc543UL,0x59dceb59UL,0xb7afc2b7UL,0x8c028f8cUL,0x6479ac64UL,0xd2236dd2UL,0xe0923be0UL,0xb4abc7b4UL,0xfa4315faUL,0x07fd0907UL,0x25856f25UL,0xaf8feaafUL,0x8ef3898eUL,0xe98e20e9UL,0x18202818UL,0xd5de64d5UL,0x88fb8388UL,0x6f94b16fUL,0x72b89672UL,0x24706c24UL,0xf1ae08f1UL,0xc7e652c7UL,0x5135f351UL,0x238d6523UL,0x7c59847cUL,0x9ccbbf9cUL,0x217c6321UL,0xdd377cddUL,0xdcc27fdcUL,0x861a9186UL,0x851e9485UL,0x90dbab90UL,0x42f8c642UL,0xc4e257c4UL,0xaa83e5aaUL,0xd83b73d8UL,0x050c0f05UL,0x01f50301UL,0x12383612UL,0xa39ffea3UL,0x5fd4e15fUL,0xf94710f9UL,0xd0d26bd0UL,0x912ea891UL,0x5829e858UL,0x27746927UL,0xb94ed0b9UL,0x38a94838UL,0x13cd3513UL,0xb356ceb3UL,0x33445533UL,0xbbbfd6bbUL,0x70499070UL,0x890e8089UL,0xa766f2a7UL,0xb65ac1b6UL,0x22786622UL,0x922aad92UL,0x20896020UL,0x4915db49UL,0xff4f1affUL,0x78a08878UL,0x7a518e7aUL,0x8f068a8fUL,0xf8b213f8UL,0x80129b80UL,0x17343917UL,0xdaca75daUL,0x31b55331UL,0xc61351c6UL,0xb8bbd3b8UL,0xc31f5ec3UL,0xb052cbb0UL,0x77b49977UL,0x113c3311UL,0xcbf646cbUL,0xfc4b1ffcUL,0xd6da61d6UL,0x3a584e3aUL,
0x97f4a5f4UL,0xeb978497UL,0xc7b099b0UL,0xf78c8d8cUL,0xe5170d17UL,0xb7dcbddcUL,0xa7c8b1c8UL,0x39fc54fcUL,0xc0f050f0UL,0x04050305UL,0x87e0a9e0UL,0xac877d87UL,0xd52b192bUL,0x71a662a6UL,0x9a31e631UL,0xc3b59ab5UL,0x05cf45cfUL,0x3ebc9dbcUL,0x09c040c0UL,0xef928792UL,0xc53f153fUL,0x7f26eb26UL,0x0740c940UL,0xed1d0b1dUL,0x822fec2fUL,0x7da967a9UL,0xbe1cfd1cUL,0x8a25ea25UL,0x46dabfdaUL,0xa602f702UL,0xd3a196a1UL,0x2ded5bedUL,0xea5dc25dUL,0xd9241c24UL,0x7ae9aee9UL,0x98be6abeUL,0xd8ee5aeeUL,0xfcc341c3UL,0xf1060206UL,0x1dd14fd1UL,0xd0e45ce4UL,0xa207f407UL,0xb95c345cUL,0xe9180818UL,0xdfae93aeUL,0x4d957395UL,0xc4f553f5UL,0x54413f41UL,0x10140c14UL,0x31f652f6UL,0x8caf65afUL,0x21e25ee2UL,0x60782878UL,0x6ef8a1f8UL,0x14110f11UL,0x5ec4b5c4UL,0x1c1b091bUL,0x485a365aUL,0x36b69bb6UL,0xa5473d47UL,0x816a266aUL,0x9cbb69bbUL,0xfe4ccd4cUL,0xcfba9fbaUL,0x242d1b2dUL,0x3ab99eb9UL,0xb09c749cUL,0x68722e72UL,0x6c772d77UL,0xa3cdb2cdUL,0x7329ee29UL,0xb616fb16UL,0x5301f601UL,0xecd74dd7UL,0x75a361a3UL,0xfa49ce49UL,0xa48d7b8dUL,0xa1423e42UL,0xbc937193UL,0x26a297a2UL,0x5704f504UL,0x69b868b8UL,0x00000000UL,0x99742c74UL,0x80a060a0UL,0xdd211f21UL,0xf243c843UL,0x772ced2cUL,0xb3d9bed9UL,0x01ca46caUL,0xce70d970UL,0xe4dd4bddUL,0x3379de79UL,0x2b67d467UL,0x7b23e823UL,0x11de4adeUL,0x6dbd6bbdUL,0x917e2a7eUL,0x9e34e534UL,0xc13a163aUL,0x1754c554UL,0x2f62d762UL,0xccff55ffUL,0x22a794a7UL,0x0f4acf4aUL,0xc9301030UL,0x080a060aUL,0xe7988198UL,0x5b0bf00bUL,0xf0cc44ccUL,0x4ad5bad5UL,0x963ee33eUL,0x5f0ef30eUL,0xba19fe19UL,0x1b5bc05bUL,0x0a858a85UL,0x7eecadecUL,0x42dfbcdfUL,0xe0d848d8UL,0xf90c040cUL,0xc67adf7aUL,0xee58c158UL,0x459f759fUL,0x84a563a5UL,0x40503050UL,0xd12e1a2eUL,0xe1120e12UL,0x65b76db7UL,0x19d44cd4UL,0x303c143cUL,0x4c5f355fUL,0x9d712f71UL,0x6738e138UL,0x6afda2fdUL,0x0b4fcc4fUL,0x5c4b394bUL,0x3df957f9UL,0xaa0df20dUL,0xe39d829dUL,0xf4c947c9UL,0x8befacefUL,0x6f32e732UL,0x647d2b7dUL,0xd7a495a4UL,0x9bfba0fbUL,0x32b398b3UL,0x2768d168UL,0x5d817f81UL,0x88aa66aaUL,0xa8827e82UL,0x76e6abe6UL,0x169e839eUL,0x0345ca45UL,0x957b297bUL,0xd66ed36eUL,0x50443c44UL,0x558b798bUL,0x633de23dUL,0x2c271d27UL,0x419a769aUL,0xad4d3b4dUL,0xc8fa56faUL,0xe8d24ed2UL,0x28221e22UL,0x3f76db76UL,0x181e0a1eUL,0x90b46cb4UL,0x6b37e437UL,0x25e75de7UL,0x61b26eb2UL,0x862aef2aUL,0x93f1a6f1UL,0x72e3a8e3UL,0x62f7a4f7UL,0xbd593759UL,0xff868b86UL,0xb1563256UL,0x0dc543c5UL,0xdceb59ebUL,0xafc2b7c2UL,0x028f8c8fUL,0x79ac64acUL,0x236dd26dUL,0x923be03bUL,0xabc7b4c7UL,0x4315fa15UL,0xfd090709UL,0x856f256fUL,0x8feaafeaUL,0xf3898e89UL,0x8e20e920UL,0x20281828UL,0xde64d564UL,0xfb838883UL,0x94b16fb1UL,0xb8967296UL,0x706c246cUL,0xae08f108UL,0xe652c752UL,0x35f351f3UL,0x8d652365UL,0x59847c84UL,0xcbbf9cbfUL,0x7c632163UL,0x377cdd7cUL,0xc27fdc7fUL,0x1a918691UL,0x1e948594UL,0xdbab90abUL,0xf8c642c6UL,0xe257c457UL,0x83e5aae5UL,0x3b73d873UL,0x0c0f050fUL,0xf5030103UL,0x38361236UL,0x9ffea3feUL,0xd4e15fe1UL,0x4710f910UL,0xd26bd06bUL,0x2ea891a8UL,0x29e858e8UL,0x74692769UL,0x4ed0b9d0UL,0xa9483848UL,0xcd351335UL,0x56ceb3ceUL,0x44553355UL,0xbfd6bbd6UL,0x49907090UL,0x0e808980UL,0x66f2a7f2UL,0x5ac1b6c1UL,0x78662266UL,0x2aad92adUL,0x89602060UL,0x15db49dbUL,0x4f1aff1aUL,0xa0887888UL,0x518e7a8eUL,0x068a8f8aUL,0xb213f813UL,0x129b809bUL,0x34391739UL,0xca75da75UL,0xb5533153UL,0x1351c651UL,0xbbd3b8d3UL,0x1f5ec35eUL,0x52cbb0cbUL,0xb4997799UL,0x3c331133UL,0xf646cb46UL,0x4b1ffc1fUL,0xda61d661UL,0x584e3a4eUL,
0xf4a5f432UL,0x9784976fUL,0xb099b05eUL,0x8c8d8c7aUL,0x170d17e8UL,0xdcbddc0aUL,0xc8b1c816UL,0xfc54fc6dUL,0xf050f090UL,0x05030507UL,0xe0a9e02eUL,0x877d87d1UL,0x2b192bccUL,0xa662a613UL,0x31e6317cUL,0xb59ab559UL,0xcf45cf40UL,0xbc9dbca3UL,0xc040c049UL,0x92879268UL,0x3f153fd0UL,0x26eb2694UL,0x40c940ceUL,0x1d0b1de6UL,0x2fec2f6eUL,0xa967a91aUL,0x1cfd1c43UL,0x25ea2560UL,0xdabfdaf9UL,0x02f70251UL,0xa196a145UL,0xed5bed76UL,0x5dc25d28UL,0x241c24c5UL,0xe9aee9d4UL,0xbe6abef2UL,0xee5aee82UL,0xc341c3bdUL,0x060206f3UL,0xd14fd152UL,0xe45ce48cUL,0x07f40756UL,0x5c345c8dUL,0x180818e1UL,0xae93ae4cUL,0x9573953eUL,0xf553f597UL,0x413f416bUL,0x140c141cUL,0xf652f663UL,0xaf65afe9UL,0xe25ee27fUL,0x78287848UL,0xf8a1f8cfUL,0x110f111bUL,0xc4b5c4ebUL,0x1b091b15UL,0x5a365a7eUL,0xb69bb6adUL,0x473d4798UL,0x6a266aa7UL,0xbb69bbf5UL,0x4ccd4c33UL,0xba9fba50UL,0x2d1b2d3fUL,0xb99eb9a4UL,0x9c749cc4UL,0x722e7246UL,0x772d7741UL,0xcdb2cd11UL,0x29ee299dUL,0x16fb164dUL,0x01f601a5UL,0xd74dd7a1UL,0xa361a314UL,0x49ce4934UL,0x8d7b8ddfUL,0x423e429fUL,0x937193cdUL,0xa297a2b1UL,0x04f504a2UL,0xb868b801UL,0x00000000UL,0x742c74b5UL,0xa060a0e0UL,0x211f21c2UL,0x43c8433aUL,0x2ced2c9aUL,0xd9bed90dUL,0xca46ca47UL,0x70d97017UL,0xdd4bddafUL,0x79de79edUL,0x67d467ffUL,0x23e82393UL,0xde4ade5bUL,0xbd6bbd06UL,0x7e2a7ebbUL,0x34e5347bUL,0x3a163ad7UL,0x54c554d2UL,0x62d762f8UL,0xff55ff99UL,0xa794a7b6UL,0x4acf4ac0UL,0x301030d9UL,0x0a060a0eUL,0x98819866UL,0x0bf00babUL,0xcc44ccb4UL,0xd5bad5f0UL,0x3ee33e75UL,0x0ef30eacUL,0x19fe1944UL,0x5bc05bdbUL,0x858a8580UL,0xecadecd3UL,0xdfbcdffeUL,0xd848d8a8UL,0x0c040cfdUL,0x7adf7a19UL,0x58c1582fUL,0x9f759f30UL,0xa563a5e7UL,0x50305070UL,0x2e1a2ecbUL,0x120e12efUL,0xb76db708UL,0xd44cd455UL,0x3c143c24UL,0x5f355f79UL,0x712f71b2UL,0x38e13886UL,0xfda2fdc8UL,0x4fcc4fc7UL,0x4b394b65UL,0xf957f96aUL,0x0df20d58UL,0x9d829d61UL,0xc947c9b3UL,0xefacef27UL,0x32e73288UL,0x7d2b7d4fUL,0xa495a442UL,0xfba0fb3bUL,0xb398b3aaUL,0x68d168f6UL,0x817f8122UL,0xaa66aaeeUL,0x827e82d6UL,0xe6abe6ddUL,0x9e839e95UL,0x45ca45c9UL,0x7b297bbcUL,0x6ed36e05UL,0x443c446cUL,0x8b798b2cUL,0x3de23d81UL,0x271d2731UL,0x9a769a37UL,0x4d3b4d96UL,0xfa56fa9eUL,0xd24ed2a6UL,0x221e2236UL,0x76db76e4UL,0x1e0a1e12UL,0xb46cb4fcUL,0x37e4378fUL,0xe75de778UL,0xb26eb20fUL,0x2aef2a69UL,0xf1a6f135UL,0xe3a8e3daUL,0xf7a4f7c6UL,0x5937598aUL,0x868b8674UL,0x56325683UL,0xc543c54eUL,0xeb59eb85UL,0xc2b7c218UL,0x8f8c8f8eUL,0xac64ac1dUL,0x6dd26df1UL,0x3be03b72UL,0xc7b4c71fUL,0x15fa15b9UL,0x090709faUL,0x6f256fa0UL,0xeaafea20UL,0x898e897dUL,0x20e92067UL,0x28182838UL,0x64d5640bUL,0x83888373UL,0xb16fb1fbUL,0x967296caUL,0x6c246c54UL,0x08f1085fUL,0x52c75221UL,0xf351f364UL,0x652365aeUL,0x847c8425UL,0xbf9cbf57UL,0x6321635dUL,0x7cdd7ceaUL,0x7fdc7f1eUL,0x9186919cUL,0x9485949bUL,0xab90ab4bUL,0xc642c6baUL,0x57c45726UL,0xe5aae529UL,0x73d873e3UL,0x0f050f09UL,0x030103f4UL,0x3612362aUL,0xfea3fe3cUL,0xe15fe18bUL,0x10f910beUL,0x6bd06b02UL,0xa891a8bfUL,0xe858e871UL,0x69276953UL,0xd0b9d0f7UL,0x48384891UL,0x351335deUL,0xceb3cee5UL,0x55335577UL,0xd6bbd604UL,0x90709039UL,0x80898087UL,0xf2a7f2c1UL,0xc1b6c1ecUL,0x6622665aUL,0xad92adb8UL,0x602060a9UL,0xdb49db5cUL,0x1aff1ab0UL,0x887888d8UL,0x8e7a8e2bUL,0x8a8f8a89UL,0x13f8134aUL,0x9b809b92UL,0x39173923UL,0x75da7510UL,0x53315384UL,0x51c651d5UL,0xd3b8d303UL,0x5ec35edcUL,0xcbb0cbe2UL,0x997799c3UL,0x3311332dUL,0x46cb463dUL,0x1ffc1fb7UL,0x61d6610cUL,0x4e3a4e62UL
};

LOCAL UINT32 groestl_T_local[256*8];
const UINT32 LOCAL *groestl_T0 = &groestl_T_local[0 * 256];
const UINT32 LOCAL *groestl_T1 = &groestl_T_local[1 * 256];
const UINT32 LOCAL *groestl_T2 = &groestl_T_local[2 * 256];
const UINT32 LOCAL *groestl_T3 = &groestl_T_local[3 * 256];
const UINT32 LOCAL *groestl_T4 = &groestl_T_local[4 * 256];
const UINT32 LOCAL *groestl_T5 = &groestl_T_local[5 * 256];
const UINT32 LOCAL *groestl_T6 = &groestl_T_local[6 * 256];
const UINT32 LOCAL *groestl_T7 = &groestl_T_local[7 * 256];

UINT32 nLocalId = LOCALID;
{
for(i = 0; i < 256 * 8; i += WORKSIZE)
groestl_T_local[i + nLocalId ] = groestl_T_init[i + nLocalId];
}

// body
groestl_BuffC[16] = hash[16] = 0x80;
groestl_BuffC[17] = hash[17] = 0;
groestl_BuffC[18] = hash[18] = 0;
groestl_BuffC[19] = hash[19] = 0;
groestl_BuffC[20] = hash[20] = 0;
groestl_BuffC[21] = hash[21] = 0;
groestl_BuffC[22] = hash[22] = 0;
groestl_BuffC[23] = hash[23] = 0;
groestl_BuffC[24] = hash[24] = 0;
groestl_BuffC[25] = hash[25] = 0;
groestl_BuffC[26] = hash[26] = 0;
groestl_BuffC[27] = hash[27] = 0;
groestl_BuffC[28] = hash[28] = 0;
groestl_BuffC[29] = hash[29] = 0;
groestl_BuffC[30] = hash[30] = 0;
hash[31] = 0x01000000;
groestl_BuffC[31] = 0x01020000L;

#pragma unroll 16
for (groestl_i = 0; groestl_i < 16; groestl_i++)
{
groestl_BuffC[groestl_i] = hash[groestl_i];
}

for(groestl_i=0; groestl_i < 0x0d000000u; groestl_i+=0x01000000u)
{
groestl_QMIX(hash, groestl_BuffB, groestl_i)
groestl_i+=0x01000000u;
groestl_QMIX(groestl_BuffB, hash, groestl_i)
}

for(groestl_i=0; groestl_i<13; ++groestl_i)
{
groestl_PMIX(groestl_BuffC, groestl_BuffB, groestl_i)
++groestl_i;
groestl_PMIX(groestl_BuffB, groestl_BuffC, groestl_i)
}

#pragma unroll 32
for(groestl_i = 0; groestl_i < 32-1; groestl_i++)
{
hash[groestl_i] ^= groestl_BuffC[groestl_i];
groestl_BuffB[groestl_i] = hash[groestl_i];
}
hash[31] ^= 0x00020000UL ^ groestl_BuffC[31];
groestl_BuffB[31] = hash[31];

for(groestl_i = 0; groestl_i < 14;)
{
groestl_PMIX(groestl_BuffB, groestl_BuffC, groestl_i)
++groestl_i;
groestl_PMIX(groestl_BuffC, groestl_BuffB, groestl_i)
++groestl_i;
}

#pragma unroll 16
for(groestl_i = 0; groestl_i < 16; ++groestl_i)
{
hash[groestl_i] = groestl_BuffB[16+groestl_i] ^ hash[16+groestl_i];
}




Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on October 22, 2014, 01:42:53 AM
skein
Code:
	skein_p[0] = hash64[0];
skein_p[1] = hash64[1];
skein_p[2] = hash64[2];
skein_p[3] = hash64[3];
skein_p[4] = hash64[4];
skein_p[5] = hash64[5];
skein_p[6] = hash64[6];
skein_p[7] = hash64[7];

skein_p[0] += 0x4903ADFF749C51CEULL;
skein_p[1] += 0x0D95DE399746DF03ULL;
skein_p[2] += 0x8FD1934127C79BCEULL;
skein_p[3] += 0x9A255629FF352CB1ULL;
skein_p[4] += 0x5DB62599DF6CA7B0ULL;
skein_p[5] += 0xEABE394CA9D5C434ULL;
skein_p[6] += 0x891112C71A75B523ULL;
skein_p[7] += 0xAE18A40B660FCC33ULL;
skein_p[0] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 46) ^ skein_p[0];
skein_p[2] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 36) ^ skein_p[2];
skein_p[4] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 19) ^ skein_p[4];
skein_p[6] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 37) ^ skein_p[6];
skein_p[2] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 33) ^ skein_p[2];
skein_p[4] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 27) ^ skein_p[4];
skein_p[6] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 14) ^ skein_p[6];
skein_p[0] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 42) ^ skein_p[0];
skein_p[4] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 17) ^ skein_p[4];
skein_p[6] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 49) ^ skein_p[6];
skein_p[0] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 36) ^ skein_p[0];
skein_p[2] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 39) ^ skein_p[2];
skein_p[6] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 44) ^ skein_p[6];
skein_p[0] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7],  9) ^ skein_p[0];
skein_p[2] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 54) ^ skein_p[2];
skein_p[4] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 56) ^ skein_p[4];
skein_p[0] += 0x0D95DE399746DF03ULL;
skein_p[1] += 0x8FD1934127C79BCEULL;
skein_p[2] += 0x9A255629FF352CB1ULL;
skein_p[3] += 0x5DB62599DF6CA7B0ULL;
skein_p[4] += 0xEABE394CA9D5C3F4ULL;
skein_p[5] += 0x891112C71A75B523ULL;
skein_p[6] += 0x9E18A40B660FCC73ULL;
skein_p[7] += 0xcab2076d98173ec4ULL + (UINT64) 1;
skein_p[0] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 39) ^ skein_p[0];
skein_p[2] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 30) ^ skein_p[2];
skein_p[4] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 34) ^ skein_p[4];
skein_p[6] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 24) ^ skein_p[6];
skein_p[2] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 13) ^ skein_p[2];
skein_p[4] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 50) ^ skein_p[4];
skein_p[6] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 10) ^ skein_p[6];
skein_p[0] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 17) ^ skein_p[0];
skein_p[4] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 25) ^ skein_p[4];
skein_p[6] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 29) ^ skein_p[6];
skein_p[0] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 39) ^ skein_p[0];
skein_p[2] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 43) ^ skein_p[2];
skein_p[6] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1],  8) ^ skein_p[6];
skein_p[0] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 35) ^ skein_p[0];
skein_p[2] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 56) ^ skein_p[2];
skein_p[4] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 22) ^ skein_p[4];
skein_p[0] += 0x8FD1934127C79BCEULL;
skein_p[1] += 0x9A255629FF352CB1ULL;
skein_p[2] += 0x5DB62599DF6CA7B0ULL;
skein_p[3] += 0xEABE394CA9D5C3F4ULL;
skein_p[4] += 0x991112C71A75B523ULL;
skein_p[5] += 0x9E18A40B660FCC73ULL;
skein_p[6] += 0xCAB2076D98173F04ULL;
skein_p[7] += 0x4903ADFF749C51D0ULL;
skein_p[0] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 46) ^ skein_p[0];
skein_p[2] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 36) ^ skein_p[2];
skein_p[4] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 19) ^ skein_p[4];
skein_p[6] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 37) ^ skein_p[6];
skein_p[2] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 33) ^ skein_p[2];
skein_p[4] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 27) ^ skein_p[4];
skein_p[6] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 14) ^ skein_p[6];
skein_p[0] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 42) ^ skein_p[0];
skein_p[4] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 17) ^ skein_p[4];
skein_p[6] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 49) ^ skein_p[6];
skein_p[0] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 36) ^ skein_p[0];
skein_p[2] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 39) ^ skein_p[2];
skein_p[6] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 44) ^ skein_p[6];
skein_p[0] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7],  9) ^ skein_p[0];
skein_p[2] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 54) ^ skein_p[2];
skein_p[4] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 56) ^ skein_p[4];
skein_p[0] += 0x9A255629FF352CB1ULL;
skein_p[1] += 0x5DB62599DF6CA7B0ULL;
skein_p[2] += 0xEABE394CA9D5C3F4ULL;
skein_p[3] += 0x991112C71A75B523ULL;
skein_p[4] += 0xAE18A40B660FCC33ULL;
skein_p[5] += 0xcab2076d98173f04ULL;
skein_p[6] += 0x3903ADFF749C51CEULL;
skein_p[7] += 0x0D95DE399746DF03ULL + (UINT64) 3;
skein_p[0] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 39) ^ skein_p[0];
skein_p[2] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 30) ^ skein_p[2];
skein_p[4] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 34) ^ skein_p[4];
skein_p[6] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 24) ^ skein_p[6];
skein_p[2] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 13) ^ skein_p[2];
skein_p[4] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 50) ^ skein_p[4];
skein_p[6] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 10) ^ skein_p[6];
skein_p[0] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 17) ^ skein_p[0];
skein_p[4] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 25) ^ skein_p[4];
skein_p[6] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 29) ^ skein_p[6];
skein_p[0] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 39) ^ skein_p[0];
skein_p[2] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 43) ^ skein_p[2];
skein_p[6] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1],  8) ^ skein_p[6];
skein_p[0] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 35) ^ skein_p[0];
skein_p[2] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 56) ^ skein_p[2];
skein_p[4] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 22) ^ skein_p[4];
skein_p[0] += 0x5DB62599DF6CA7B0ULL;
skein_p[1] += 0xEABE394CA9D5C3F4ULL;
skein_p[2] += 0x991112C71A75B523ULL;
skein_p[3] += 0xAE18A40B660FCC33ULL;
skein_p[4] += 0xcab2076d98173ec4ULL;
skein_p[5] += 0x3903ADFF749C51CEULL;
skein_p[6] += 0xFD95DE399746DF43ULL;
skein_p[7] += 0x8FD1934127C79BD2ULL;
skein_p[0] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 46) ^ skein_p[0];
skein_p[2] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 36) ^ skein_p[2];
skein_p[4] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 19) ^ skein_p[4];
skein_p[6] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 37) ^ skein_p[6];
skein_p[2] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 33) ^ skein_p[2];
skein_p[4] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 27) ^ skein_p[4];
skein_p[6] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 14) ^ skein_p[6];
skein_p[0] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 42) ^ skein_p[0];
skein_p[4] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 17) ^ skein_p[4];
skein_p[6] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 49) ^ skein_p[6];
skein_p[0] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 36) ^ skein_p[0];
skein_p[2] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 39) ^ skein_p[2];
skein_p[6] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 44) ^ skein_p[6];
skein_p[0] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7],  9) ^ skein_p[0];
skein_p[2] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 54) ^ skein_p[2];
skein_p[4] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 56) ^ skein_p[4];
skein_p[0] += 0xEABE394CA9D5C3F4ULL;
skein_p[1] += 0x991112C71A75B523ULL;
skein_p[2] += 0xAE18A40B660FCC33ULL;
skein_p[3] += 0xcab2076d98173ec4ULL;
skein_p[4] += 0x4903ADFF749C51CEULL;
skein_p[5] += 0x0D95DE399746DF03ULL + 0xf000000000000040ULL;
skein_p[6] += 0x8FD1934127C79BCEULL + 0x0000000000000040ULL;
skein_p[7] += 0x9A255629FF352CB1ULL + (UINT64) 5;
skein_p[0] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 39) ^ skein_p[0];
skein_p[2] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 30) ^ skein_p[2];
skein_p[4] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 34) ^ skein_p[4];
skein_p[6] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 24) ^ skein_p[6];
skein_p[2] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 13) ^ skein_p[2];
skein_p[4] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 50) ^ skein_p[4];
skein_p[6] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 10) ^ skein_p[6];
skein_p[0] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 17) ^ skein_p[0];
skein_p[4] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 25) ^ skein_p[4];
skein_p[6] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 29) ^ skein_p[6];
skein_p[0] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 39) ^ skein_p[0];
skein_p[2] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 43) ^ skein_p[2];
skein_p[6] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1],  8) ^ skein_p[6];
skein_p[0] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 35) ^ skein_p[0];
skein_p[2] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 56) ^ skein_p[2];
skein_p[4] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 22) ^ skein_p[4];
skein_p[0] += 0x991112C71A75B523ULL;
skein_p[1] += 0xAE18A40B660FCC33ULL;
skein_p[2] += 0xcab2076d98173ec4ULL;
skein_p[3] += 0x4903ADFF749C51CEULL;
skein_p[4] += 0x0D95DE399746DF03ULL;
skein_p[5] += 0x8FD1934127C79BCEULL + 0x0000000000000040ULL;
skein_p[6] += 0x8A255629FF352CB1ULL;
skein_p[7] += 0x5DB62599DF6CA7B0ULL + (UINT64) 6;
skein_p[0] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 46) ^ skein_p[0];
skein_p[2] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 36) ^ skein_p[2];
skein_p[4] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 19) ^ skein_p[4];
skein_p[6] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 37) ^ skein_p[6];
skein_p[2] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 33) ^ skein_p[2];
skein_p[4] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 27) ^ skein_p[4];
skein_p[6] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 14) ^ skein_p[6];
skein_p[0] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 42) ^ skein_p[0];
skein_p[4] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 17) ^ skein_p[4];
skein_p[6] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 49) ^ skein_p[6];
skein_p[0] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 36) ^ skein_p[0];
skein_p[2] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 39) ^ skein_p[2];
skein_p[6] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 44) ^ skein_p[6];
skein_p[0] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7],  9) ^ skein_p[0];
skein_p[2] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 54) ^ skein_p[2];
skein_p[4] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 56) ^ skein_p[4];
skein_p[0] += 0xAE18A40B660FCC33ULL;
skein_p[1] += 0xcab2076d98173ec4ULL;
skein_p[2] += 0x4903ADFF749C51CEULL;
skein_p[3] += 0x0D95DE399746DF03ULL;
skein_p[4] += 0x8FD1934127C79BCEULL;
skein_p[5] += 0x8A255629FF352CB1ULL;
skein_p[6] += 0x4DB62599DF6CA7F0ULL;
skein_p[7] += 0xEABE394CA9D5C3F4ULL + (UINT64) 7;
skein_p[0] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 39) ^ skein_p[0];
skein_p[2] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 30) ^ skein_p[2];
skein_p[4] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 34) ^ skein_p[4];
skein_p[6] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 24) ^ skein_p[6];
skein_p[2] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 13) ^ skein_p[2];
skein_p[4] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 50) ^ skein_p[4];
skein_p[6] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 10) ^ skein_p[6];
skein_p[0] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 17) ^ skein_p[0];
skein_p[4] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 25) ^ skein_p[4];
skein_p[6] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 29) ^ skein_p[6];
skein_p[0] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 39) ^ skein_p[0];
skein_p[2] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 43) ^ skein_p[2];
skein_p[6] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1],  8) ^ skein_p[6];
skein_p[0] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 35) ^ skein_p[0];
skein_p[2] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 56) ^ skein_p[2];
skein_p[4] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 22) ^ skein_p[4];
skein_p[0] += 0xcab2076d98173ec4ULL;
skein_p[1] += 0x4903ADFF749C51CEULL;
skein_p[2] += 0x0D95DE399746DF03ULL;
skein_p[3] += 0x8FD1934127C79BCEULL;
skein_p[4] += 0x9A255629FF352CB1ULL;
skein_p[5] += 0x4DB62599DF6CA7F0ULL;
skein_p[6] += 0xEABE394CA9D5C434ULL;
skein_p[7] += 0x991112C71A75B52BULL;
skein_p[0] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 46) ^ skein_p[0];
skein_p[2] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 36) ^ skein_p[2];
skein_p[4] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 19) ^ skein_p[4];
skein_p[6] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 37) ^ skein_p[6];
skein_p[2] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 33) ^ skein_p[2];
skein_p[4] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 27) ^ skein_p[4];
skein_p[6] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 14) ^ skein_p[6];
skein_p[0] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 42) ^ skein_p[0];
skein_p[4] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 17) ^ skein_p[4];
skein_p[6] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 49) ^ skein_p[6];
skein_p[0] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 36) ^ skein_p[0];
skein_p[2] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 39) ^ skein_p[2];
skein_p[6] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 44) ^ skein_p[6];
skein_p[0] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7],  9) ^ skein_p[0];
skein_p[2] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 54) ^ skein_p[2];
skein_p[4] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 56) ^ skein_p[4];
skein_p[0] += 0x4903ADFF749C51CEULL;
skein_p[1] += 0x0D95DE399746DF03ULL;
skein_p[2] += 0x8FD1934127C79BCEULL;
skein_p[3] += 0x9A255629FF352CB1ULL;
skein_p[4] += 0x5DB62599DF6CA7B0ULL;
skein_p[5] += 0xEABE394CA9D5C434ULL;
skein_p[6] += 0x891112C71A75B523ULL;
skein_p[7] += 0xAE18A40B660FCC33ULL + (UINT64) 9;
skein_p[0] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 39) ^ skein_p[0];
skein_p[2] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 30) ^ skein_p[2];
skein_p[4] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 34) ^ skein_p[4];
skein_p[6] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 24) ^ skein_p[6];
skein_p[2] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 13) ^ skein_p[2];
skein_p[4] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 50) ^ skein_p[4];
skein_p[6] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 10) ^ skein_p[6];
skein_p[0] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 17) ^ skein_p[0];
skein_p[4] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 25) ^ skein_p[4];
skein_p[6] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 29) ^ skein_p[6];
skein_p[0] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 39) ^ skein_p[0];
skein_p[2] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 43) ^ skein_p[2];
skein_p[6] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1],  8) ^ skein_p[6];
skein_p[0] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 35) ^ skein_p[0];
skein_p[2] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 56) ^ skein_p[2];
skein_p[4] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 22) ^ skein_p[4];
skein_p[0] += 0x0D95DE399746DF03ULL;
skein_p[1] += 0x8FD1934127C79BCEULL;
skein_p[2] += 0x9A255629FF352CB1ULL;
skein_p[3] += 0x5DB62599DF6CA7B0ULL;
skein_p[4] += 0xEABE394CA9D5C3F4ULL;
skein_p[5] += 0x891112C71A75B523ULL;
skein_p[6] += 0x9E18A40B660FCC73ULL;
skein_p[7] += 0xcab2076d98173eceULL;
skein_p[0] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 46) ^ skein_p[0];
skein_p[2] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 36) ^ skein_p[2];
skein_p[4] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 19) ^ skein_p[4];
skein_p[6] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 37) ^ skein_p[6];
skein_p[2] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 33) ^ skein_p[2];
skein_p[4] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 27) ^ skein_p[4];
skein_p[6] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 14) ^ skein_p[6];
skein_p[0] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 42) ^ skein_p[0];
skein_p[4] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 17) ^ skein_p[4];
skein_p[6] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 49) ^ skein_p[6];
skein_p[0] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 36) ^ skein_p[0];
skein_p[2] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 39) ^ skein_p[2];
skein_p[6] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 44) ^ skein_p[6];
skein_p[0] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7],  9) ^ skein_p[0];
skein_p[2] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 54) ^ skein_p[2];
skein_p[4] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 56) ^ skein_p[4];
skein_p[0] += 0x8FD1934127C79BCEULL;
skein_p[1] += 0x9A255629FF352CB1ULL;
skein_p[2] += 0x5DB62599DF6CA7B0ULL;
skein_p[3] += 0xEABE394CA9D5C3F4ULL;
skein_p[4] += 0x991112C71A75B523ULL;
skein_p[5] += 0x9E18A40B660FCC73ULL;
skein_p[6] += 0xcab2076d98173ec4ULL + 0x0000000000000040ULL;
skein_p[7] += 0x4903ADFF749C51CEULL + (UINT64)11;
skein_p[0] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 39) ^ skein_p[0];
skein_p[2] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 30) ^ skein_p[2];
skein_p[4] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 34) ^ skein_p[4];
skein_p[6] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 24) ^ skein_p[6];
skein_p[2] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 13) ^ skein_p[2];
skein_p[4] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 50) ^ skein_p[4];
skein_p[6] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 10) ^ skein_p[6];
skein_p[0] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 17) ^ skein_p[0];
skein_p[4] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 25) ^ skein_p[4];
skein_p[6] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 29) ^ skein_p[6];
skein_p[0] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 39) ^ skein_p[0];
skein_p[2] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 43) ^ skein_p[2];
skein_p[6] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1],  8) ^ skein_p[6];
skein_p[0] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 35) ^ skein_p[0];
skein_p[2] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 56) ^ skein_p[2];
skein_p[4] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 22) ^ skein_p[4];
skein_p[0] += 0x9A255629FF352CB1ULL;
skein_p[1] += 0x5DB62599DF6CA7B0ULL;
skein_p[2] += 0xEABE394CA9D5C3F4ULL;
skein_p[3] += 0x991112C71A75B523ULL;
skein_p[4] += 0xAE18A40B660FCC33ULL;
skein_p[5] += 0xcab2076d98173ec4ULL + 0x0000000000000040ULL;
skein_p[6] += 0x3903ADFF749C51CEULL;
skein_p[7] += 0x0D95DE399746DF03ULL + (UINT64)12;
skein_p[0] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 46) ^ skein_p[0];
skein_p[2] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 36) ^ skein_p[2];
skein_p[4] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 19) ^ skein_p[4];
skein_p[6] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 37) ^ skein_p[6];
skein_p[2] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 33) ^ skein_p[2];
skein_p[4] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 27) ^ skein_p[4];
skein_p[6] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 14) ^ skein_p[6];
skein_p[0] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 42) ^ skein_p[0];
skein_p[4] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 17) ^ skein_p[4];
skein_p[6] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 49) ^ skein_p[6];
skein_p[0] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 36) ^ skein_p[0];
skein_p[2] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 39) ^ skein_p[2];
skein_p[6] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 44) ^ skein_p[6];
skein_p[0] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7],  9) ^ skein_p[0];
skein_p[2] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 54) ^ skein_p[2];
skein_p[4] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 56) ^ skein_p[4];
skein_p[0] += 0x5DB62599DF6CA7B0ULL;
skein_p[1] += 0xEABE394CA9D5C3F4ULL;
skein_p[2] += 0x991112C71A75B523ULL;
skein_p[3] += 0xAE18A40B660FCC33ULL;
skein_p[4] += 0xcab2076d98173ec4ULL;
skein_p[5] += 0x3903ADFF749C51CEULL;
skein_p[6] += 0x0D95DE399746DF03ULL + 0xf000000000000040ULL;
skein_p[7] += 0x8FD1934127C79BCEULL + (UINT64)13;
skein_p[0] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 39) ^ skein_p[0];
skein_p[2] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 30) ^ skein_p[2];
skein_p[4] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 34) ^ skein_p[4];
skein_p[6] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 24) ^ skein_p[6];
skein_p[2] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 13) ^ skein_p[2];
skein_p[4] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 50) ^ skein_p[4];
skein_p[6] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 10) ^ skein_p[6];
skein_p[0] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 17) ^ skein_p[0];
skein_p[4] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 25) ^ skein_p[4];
skein_p[6] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 29) ^ skein_p[6];
skein_p[0] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 39) ^ skein_p[0];
skein_p[2] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 43) ^ skein_p[2];
skein_p[6] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1],  8) ^ skein_p[6];
skein_p[0] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 35) ^ skein_p[0];
skein_p[2] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 56) ^ skein_p[2];
skein_p[4] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 22) ^ skein_p[4];
skein_p[0] += 0xEABE394CA9D5C3F4ULL;
skein_p[1] += 0x991112C71A75B523ULL;
skein_p[2] += 0xAE18A40B660FCC33ULL;
skein_p[3] += 0xcab2076d98173ec4ULL;
skein_p[4] += 0x4903ADFF749C51CEULL;
skein_p[5] += 0x0D95DE399746DF03ULL + 0xf000000000000040ULL;
skein_p[6] += 0x8FD1934127C79BCEULL + 0x0000000000000040ULL;
skein_p[7] += 0x9A255629FF352CB1ULL + (UINT64)14;
skein_p[0] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 46) ^ skein_p[0];
skein_p[2] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 36) ^ skein_p[2];
skein_p[4] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 19) ^ skein_p[4];
skein_p[6] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 37) ^ skein_p[6];
skein_p[2] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 33) ^ skein_p[2];
skein_p[4] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 27) ^ skein_p[4];
skein_p[6] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 14) ^ skein_p[6];
skein_p[0] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 42) ^ skein_p[0];
skein_p[4] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 17) ^ skein_p[4];
skein_p[6] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 49) ^ skein_p[6];
skein_p[0] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 36) ^ skein_p[0];
skein_p[2] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 39) ^ skein_p[2];
skein_p[6] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 44) ^ skein_p[6];
skein_p[0] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7],  9) ^ skein_p[0];
skein_p[2] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 54) ^ skein_p[2];
skein_p[4] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 56) ^ skein_p[4];
skein_p[0] += 0x991112C71A75B523ULL;
skein_p[1] += 0xAE18A40B660FCC33ULL;
skein_p[2] += 0xcab2076d98173ec4ULL;
skein_p[3] += 0x4903ADFF749C51CEULL;
skein_p[4] += 0x0D95DE399746DF03ULL;
skein_p[5] += 0x8FD1934127C79BCEULL + 0x0000000000000040ULL;
skein_p[6] += 0x8A255629FF352CB1ULL;
skein_p[7] += 0x5DB62599DF6CA7B0ULL + (UINT64)15;
skein_p[0] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 39) ^ skein_p[0];
skein_p[2] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 30) ^ skein_p[2];
skein_p[4] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 34) ^ skein_p[4];
skein_p[6] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 24) ^ skein_p[6];
skein_p[2] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 13) ^ skein_p[2];
skein_p[4] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 50) ^ skein_p[4];
skein_p[6] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 10) ^ skein_p[6];
skein_p[0] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 17) ^ skein_p[0];
skein_p[4] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 25) ^ skein_p[4];
skein_p[6] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 29) ^ skein_p[6];
skein_p[0] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 39) ^ skein_p[0];
skein_p[2] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 43) ^ skein_p[2];
skein_p[6] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1],  8) ^ skein_p[6];
skein_p[0] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 35) ^ skein_p[0];
skein_p[2] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 56) ^ skein_p[2];
skein_p[4] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 22) ^ skein_p[4];
skein_p[0] += 0xAE18A40B660FCC33ULL;
skein_p[1] += 0xcab2076d98173ec4ULL;
skein_p[2] += 0x4903ADFF749C51CEULL;
skein_p[3] += 0x0D95DE399746DF03ULL;
skein_p[4] += 0x8FD1934127C79BCEULL;
skein_p[5] += 0x8A255629FF352CB1ULL;
skein_p[6] += 0x4DB62599DF6CA7F0ULL;
skein_p[7] += 0xEABE394CA9D5C3F4ULL + (UINT64)16;
skein_p[0] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 46) ^ skein_p[0];
skein_p[2] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 36) ^ skein_p[2];
skein_p[4] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 19) ^ skein_p[4];
skein_p[6] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 37) ^ skein_p[6];
skein_p[2] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 33) ^ skein_p[2];
skein_p[4] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 27) ^ skein_p[4];
skein_p[6] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 14) ^ skein_p[6];
skein_p[0] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 42) ^ skein_p[0];
skein_p[4] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 17) ^ skein_p[4];
skein_p[6] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 49) ^ skein_p[6];
skein_p[0] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 36) ^ skein_p[0];
skein_p[2] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 39) ^ skein_p[2];
skein_p[6] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 44) ^ skein_p[6];
skein_p[0] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7],  9) ^ skein_p[0];
skein_p[2] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 54) ^ skein_p[2];
skein_p[4] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 56) ^ skein_p[4];
skein_p[0] += 0xcab2076d98173ec4ULL;
skein_p[1] += 0x4903ADFF749C51CEULL;
skein_p[2] += 0x0D95DE399746DF03ULL;
skein_p[3] += 0x8FD1934127C79BCEULL;
skein_p[4] += 0x9A255629FF352CB1ULL;
skein_p[5] += 0x4DB62599DF6CA7F0ULL;
skein_p[6] += 0xEABE394CA9D5C3F4ULL + 0x0000000000000040ULL;
skein_p[7] += 0x991112C71A75B523ULL + (UINT64)17;
skein_p[0] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 39) ^ skein_p[0];
skein_p[2] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 30) ^ skein_p[2];
skein_p[4] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 34) ^ skein_p[4];
skein_p[6] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 24) ^ skein_p[6];
skein_p[2] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 13) ^ skein_p[2];
skein_p[4] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 50) ^ skein_p[4];
skein_p[6] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 10) ^ skein_p[6];
skein_p[0] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 17) ^ skein_p[0];
skein_p[4] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1], 25) ^ skein_p[4];
skein_p[6] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 29) ^ skein_p[6];
skein_p[0] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 39) ^ skein_p[0];
skein_p[2] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 43) ^ skein_p[2];
skein_p[6] += skein_p[1];
skein_p[1] = ROTL64(skein_p[1],  8) ^ skein_p[6];
skein_p[0] += skein_p[7];
skein_p[7] = ROTL64(skein_p[7], 35) ^ skein_p[0];
skein_p[2] += skein_p[5];
skein_p[5] = ROTL64(skein_p[5], 56) ^ skein_p[2];
skein_p[4] += skein_p[3];
skein_p[3] = ROTL64(skein_p[3], 22) ^ skein_p[4];
skein_p[0] += 0x4903ADFF749C51CEULL;
skein_p[1] += 0x0D95DE399746DF03ULL;
skein_p[2] += 0x8FD1934127C79BCEULL;
skein_p[3] += 0x9A255629FF352CB1ULL;
skein_p[4] += 0x5DB62599DF6CA7B0ULL;
skein_p[5] += 0xEABE394CA9D5C3F4ULL + 0x0000000000000040ULL;
skein_p[6] += 0x891112C71A75B523ULL;
skein_p[7] += 0xAE18A40B660FCC33ULL + (UINT64)18;

#define h0 skein_p[0]
#define h1 skein_p[1]
#define h2 skein_p[2]
#define h3 skein_p[3]
#define h4 skein_p[4]
#define h5 skein_p[5]
#define h6 skein_p[6]
#define h7 skein_p[7]
h0 ^= hash64[0];
h1 ^= hash64[1];
h2 ^= hash64[2];
h3 ^= hash64[3];
h4 ^= hash64[4];
h5 ^= hash64[5];
h6 ^= hash64[6];
h7 ^= hash64[7];

hash64[0] = 0;
hash64[1] = 0;
hash64[2] = 0;
hash64[3] = 0;
hash64[4] = 0;
hash64[5] = 0;
hash64[6] = 0;
hash64[7] = 0;

skein_h8 = h0 ^ h1 ^ h2 ^ h3 ^ h4 ^ h5 ^ h6 ^ h7 ^ 0x1BD11BDAA9FC1A22ULL;

hash64[0] = (hash64[0] + h0);
hash64[1] = (hash64[1] + h1);
hash64[2] = (hash64[2] + h2);
hash64[3] = (hash64[3] + h3);
hash64[4] = (hash64[4] + h4);
hash64[5] = (hash64[5] + h5 + 8ULL);
hash64[6] = (hash64[6] + h6 + 0xff00000000000000ULL);
hash64[7] = (hash64[7] + h7 + (UINT64)0);
hash64[0] += hash64[1];
hash64[1] = ROTL64(hash64[1], 46) ^ hash64[0];
hash64[2] += hash64[3];
hash64[3] = ROTL64(hash64[3], 36) ^ hash64[2];
hash64[4] += hash64[5];
hash64[5] = ROTL64(hash64[5], 19) ^ hash64[4];
hash64[6] += hash64[7];
hash64[7] = ROTL64(hash64[7], 37) ^ hash64[6];
hash64[2] += hash64[1];
hash64[1] = ROTL64(hash64[1], 33) ^ hash64[2];
hash64[4] += hash64[7];
hash64[7] = ROTL64(hash64[7], 27) ^ hash64[4];
hash64[6] += hash64[5];
hash64[5] = ROTL64(hash64[5], 14) ^ hash64[6];
hash64[0] += hash64[3];
hash64[3] = ROTL64(hash64[3], 42) ^ hash64[0];
hash64[4] += hash64[1];
hash64[1] = ROTL64(hash64[1], 17) ^ hash64[4];
hash64[6] += hash64[3];
hash64[3] = ROTL64(hash64[3], 49) ^ hash64[6];
hash64[0] += hash64[5];
hash64[5] = ROTL64(hash64[5], 36) ^ hash64[0];
hash64[2] += hash64[7];
hash64[7] = ROTL64(hash64[7], 39) ^ hash64[2];
hash64[6] += hash64[1];
hash64[1] = ROTL64(hash64[1], 44) ^ hash64[6];
hash64[0] += hash64[7];
hash64[7] = ROTL64(hash64[7], 9) ^ hash64[0];
hash64[2] += hash64[5];
hash64[5] = ROTL64(hash64[5], 54) ^ hash64[2];
hash64[4] += hash64[3];
hash64[3] = ROTL64(hash64[3], 56) ^ hash64[4];
hash64[0] = (hash64[0] + h1);
hash64[1] = (hash64[1] + h2);
hash64[2] = (hash64[2] + h3);
hash64[3] = (hash64[3] + h4);
hash64[4] = (hash64[4] + h5);
hash64[5] = (hash64[5] + h6 + 0xff00000000000000ULL);
hash64[6] = (hash64[6] + h7 + 0xff00000000000008ULL);
hash64[7] = (hash64[7] + skein_h8 + (UINT64)1);
hash64[0] += hash64[1];
hash64[1] = ROTL64(hash64[1], 39) ^ hash64[0];
hash64[2] += hash64[3];
hash64[3] = ROTL64(hash64[3], 30) ^ hash64[2];
hash64[4] += hash64[5];
hash64[5] = ROTL64(hash64[5], 34) ^ hash64[4];
hash64[6] += hash64[7];
hash64[7] = ROTL64(hash64[7], 24) ^ hash64[6];
hash64[2] += hash64[1];
hash64[1] = ROTL64(hash64[1], 13) ^ hash64[2];
hash64[4] += hash64[7];
hash64[7] = ROTL64(hash64[7], 50) ^ hash64[4];
hash64[6] += hash64[5];
hash64[5] = ROTL64(hash64[5], 10) ^ hash64[6];
hash64[0] += hash64[3];
hash64[3] = ROTL64(hash64[3], 17) ^ hash64[0];
hash64[4] += hash64[1];
hash64[1] = ROTL64(hash64[1], 25) ^ hash64[4];
hash64[6] += hash64[3];
hash64[3] = ROTL64(hash64[3], 29) ^ hash64[6];
hash64[0] += hash64[5];
hash64[5] = ROTL64(hash64[5], 39) ^ hash64[0];
hash64[2] += hash64[7];
hash64[7] = ROTL64(hash64[7], 43) ^ hash64[2];
hash64[6] += hash64[1];
hash64[1] = ROTL64(hash64[1], 8) ^ hash64[6];
hash64[0] += hash64[7];
hash64[7] = ROTL64(hash64[7], 35) ^ hash64[0];
hash64[2] += hash64[5];
hash64[5] = ROTL64(hash64[5], 56) ^ hash64[2];
hash64[4] += hash64[3];
hash64[3] = ROTL64(hash64[3], 22) ^ hash64[4];
hash64[0] = (hash64[0] + h2);
hash64[1] = (hash64[1] + h3);
hash64[2] = (hash64[2] + h4);
hash64[3] = (hash64[3] + h5);
hash64[4] = (hash64[4] + h6);
hash64[5] = (hash64[5] + h7 + 0xff00000000000008ULL);
hash64[6] = (hash64[6] + skein_h8 + 8ULL);
hash64[7] = (hash64[7] + h0 + (UINT64)2);
hash64[0] += hash64[1];
hash64[1] = ROTL64(hash64[1], 46) ^ hash64[0];
hash64[2] += hash64[3];
hash64[3] = ROTL64(hash64[3], 36) ^ hash64[2];
hash64[4] += hash64[5];
hash64[5] = ROTL64(hash64[5], 19) ^ hash64[4];
hash64[6] += hash64[7];
hash64[7] = ROTL64(hash64[7], 37) ^ hash64[6];
hash64[2] += hash64[1];
hash64[1] = ROTL64(hash64[1], 33) ^ hash64[2];
hash64[4] += hash64[7];
hash64[7] = ROTL64(hash64[7], 27) ^ hash64[4];
hash64[6] += hash64[5];
hash64[5] = ROTL64(hash64[5], 14) ^ hash64[6];
hash64[0] += hash64[3];
hash64[3] = ROTL64(hash64[3], 42) ^ hash64[0];
hash64[4] += hash64[1];
hash64[1] = ROTL64(hash64[1], 17) ^ hash64[4];
hash64[6] += hash64[3];
hash64[3] = ROTL64(hash64[3], 49) ^ hash64[6];
hash64[0] += hash64[5];
hash64[5] = ROTL64(hash64[5], 36) ^ hash64[0];
hash64[2] += hash64[7];
hash64[7] = ROTL64(hash64[7], 39) ^ hash64[2];
hash64[6] += hash64[1];
hash64[1] = ROTL64(hash64[1], 44) ^ hash64[6];
hash64[0] += hash64[7];
hash64[7] = ROTL64(hash64[7], 9) ^ hash64[0];
hash64[2] += hash64[5];
hash64[5] = ROTL64(hash64[5], 54) ^ hash64[2];
hash64[4] += hash64[3];
hash64[3] = ROTL64(hash64[3], 56) ^ hash64[4];
hash64[0] = (hash64[0] + h3);
hash64[1] = (hash64[1] + h4);
hash64[2] = (hash64[2] + h5);
hash64[3] = (hash64[3] + h6);
hash64[4] = (hash64[4] + h7);
hash64[5] = (hash64[5] + skein_h8 + 8ULL);
hash64[6] = (hash64[6] + h0 + 0xff00000000000000ULL);
hash64[7] = (hash64[7] + h1 + (UINT64)3);
hash64[0] += hash64[1];
hash64[1] = ROTL64(hash64[1], 39) ^ hash64[0];
hash64[2] += hash64[3];
hash64[3] = ROTL64(hash64[3], 30) ^ hash64[2];
hash64[4] += hash64[5];
hash64[5] = ROTL64(hash64[5], 34) ^ hash64[4];
hash64[6] += hash64[7];
hash64[7] = ROTL64(hash64[7], 24) ^ hash64[6];
hash64[2] += hash64[1];
hash64[1] = ROTL64(hash64[1], 13) ^ hash64[2];
hash64[4] += hash64[7];
hash64[7] = ROTL64(hash64[7], 50) ^ hash64[4];
hash64[6] += hash64[5];
hash64[5] = ROTL64(hash64[5], 10) ^ hash64[6];
hash64[0] += hash64[3];
hash64[3] = ROTL64(hash64[3], 17) ^ hash64[0];
hash64[4] += hash64[1];
hash64[1] = ROTL64(hash64[1], 25) ^ hash64[4];
hash64[6] += hash64[3];
hash64[3] = ROTL64(hash64[3], 29) ^ hash64[6];
hash64[0] += hash64[5];
hash64[5] = ROTL64(hash64[5], 39) ^ hash64[0];
hash64[2] += hash64[7];
hash64[7] = ROTL64(hash64[7], 43) ^ hash64[2];
hash64[6] += hash64[1];
hash64[1] = ROTL64(hash64[1], 8) ^ hash64[6];
hash64[0] += hash64[7];
hash64[7] = ROTL64(hash64[7], 35) ^ hash64[0];
hash64[2] += hash64[5];
hash64[5] = ROTL64(hash64[5], 56) ^ hash64[2];
hash64[4] += hash64[3];
hash64[3] = ROTL64(hash64[3], 22) ^ hash64[4];
hash64[0] = (hash64[0] + h4);
hash64[1] = (hash64[1] + h5);
hash64[2] = (hash64[2] + h6);
hash64[3] = (hash64[3] + h7);
hash64[4] = (hash64[4] + skein_h8);
hash64[5] = (hash64[5] + h0 + 0xff00000000000000ULL);
hash64[6] = (hash64[6] + h1 + 0xff00000000000008ULL);
hash64[7] = (hash64[7] + h2 + (UINT64)4);
hash64[0] += hash64[1];
hash64[1] = ROTL64(hash64[1], 46) ^ hash64[0];
hash64[2] += hash64[3];
hash64[3] = ROTL64(hash64[3], 36) ^ hash64[2];
hash64[4] += hash64[5];
hash64[5] = ROTL64(hash64[5], 19) ^ hash64[4];
hash64[6] += hash64[7];
hash64[7] = ROTL64(hash64[7], 37) ^ hash64[6];
hash64[2] += hash64[1];
hash64[1] = ROTL64(hash64[1], 33) ^ hash64[2];
hash64[4] += hash64[7];
hash64[7] = ROTL64(hash64[7], 27) ^ hash64[4];
hash64[6] += hash64[5];
hash64[5] = ROTL64(hash64[5], 14) ^ hash64[6];
hash64[0] += hash64[3];
hash64[3] = ROTL64(hash64[3], 42) ^ hash64[0];
hash64[4] += hash64[1];
hash64[1] = ROTL64(hash64[1], 17) ^ hash64[4];
hash64[6] += hash64[3];
hash64[3] = ROTL64(hash64[3], 49) ^ hash64[6];
hash64[0] += hash64[5];
hash64[5] = ROTL64(hash64[5], 36) ^ hash64[0];
hash64[2] += hash64[7];
hash64[7] = ROTL64(hash64[7], 39) ^ hash64[2];
hash64[6] += hash64[1];
hash64[1] = ROTL64(hash64[1], 44) ^ hash64[6];
hash64[0] += hash64[7];
hash64[7] = ROTL64(hash64[7], 9) ^ hash64[0];
hash64[2] += hash64[5];
hash64[5] = ROTL64(hash64[5], 54) ^ hash64[2];
hash64[4] += hash64[3];
hash64[3] = ROTL64(hash64[3], 56) ^ hash64[4];
hash64[0] = (hash64[0] + h5);
hash64[1] = (hash64[1] + h6);
hash64[2] = (hash64[2] + h7);
hash64[3] = (hash64[3] + skein_h8);
hash64[4] = (hash64[4] + h0);
hash64[5] = (hash64[5] + h1 + 0xff00000000000008ULL);
hash64[6] = (hash64[6] + h2 + 8ULL);
hash64[7] = (hash64[7] + h3 + (UINT64)5);
hash64[0] += hash64[1];
hash64[1] = ROTL64(hash64[1], 39) ^ hash64[0];
hash64[2] += hash64[3];
hash64[3] = ROTL64(hash64[3], 30) ^ hash64[2];
hash64[4] += hash64[5];
hash64[5] = ROTL64(hash64[5], 34) ^ hash64[4];
hash64[6] += hash64[7];
hash64[7] = ROTL64(hash64[7], 24) ^ hash64[6];
hash64[2] += hash64[1];
hash64[1] = ROTL64(hash64[1], 13) ^ hash64[2];
hash64[4] += hash64[7];
hash64[7] = ROTL64(hash64[7], 50) ^ hash64[4];
hash64[6] += hash64[5];
hash64[5] = ROTL64(hash64[5], 10) ^ hash64[6];
hash64[0] += hash64[3];
hash64[3] = ROTL64(hash64[3], 17) ^ hash64[0];
hash64[4] += hash64[1];
hash64[1] = ROTL64(hash64[1], 25) ^ hash64[4];
hash64[6] += hash64[3];
hash64[3] = ROTL64(hash64[3], 29) ^ hash64[6];
hash64[0] += hash64[5];
hash64[5] = ROTL64(hash64[5], 39) ^ hash64[0];
hash64[2] += hash64[7];
hash64[7] = ROTL64(hash64[7], 43) ^ hash64[2];
hash64[6] += hash64[1];
hash64[1] = ROTL64(hash64[1], 8) ^ hash64[6];
hash64[0] += hash64[7];
hash64[7] = ROTL64(hash64[7], 35) ^ hash64[0];
hash64[2] += hash64[5];
hash64[5] = ROTL64(hash64[5], 56) ^ hash64[2];
hash64[4] += hash64[3];
hash64[3] = ROTL64(hash64[3], 22) ^ hash64[4];
hash64[0] = (hash64[0] + h6);
hash64[1] = (hash64[1] + h7);
hash64[2] = (hash64[2] + skein_h8);
hash64[3] = (hash64[3] + h0);
hash64[4] = (hash64[4] + h1);
hash64[5] = (hash64[5] + h2 + 8ULL);
hash64[6] = (hash64[6] + h3 + 0xff00000000000000ULL);
hash64[7] = (hash64[7] + h4 + (UINT64)6);
hash64[0] += hash64[1];
hash64[1] = ROTL64(hash64[1], 46) ^ hash64[0];
hash64[2] += hash64[3];
hash64[3] = ROTL64(hash64[3], 36) ^ hash64[2];
hash64[4] += hash64[5];
hash64[5] = ROTL64(hash64[5], 19) ^ hash64[4];
hash64[6] += hash64[7];
hash64[7] = ROTL64(hash64[7], 37) ^ hash64[6];
hash64[2] += hash64[1];
hash64[1] = ROTL64(hash64[1], 33) ^ hash64[2];
hash64[4] += hash64[7];
hash64[7] = ROTL64(hash64[7], 27) ^ hash64[4];
hash64[6] += hash64[5];
hash64[5] = ROTL64(hash64[5], 14) ^ hash64[6];
hash64[0] += hash64[3];
hash64[3] = ROTL64(hash64[3], 42) ^ hash64[0];
hash64[4] += hash64[1];
hash64[1] = ROTL64(hash64[1], 17) ^ hash64[4];
hash64[6] += hash64[3];
hash64[3] = ROTL64(hash64[3], 49) ^ hash64[6];
hash64[0] += hash64[5];
hash64[5] = ROTL64(hash64[5], 36) ^ hash64[0];
hash64[2] += hash64[7];
hash64[7] = ROTL64(hash64[7], 39) ^ hash64[2];
hash64[6] += hash64[1];
hash64[1] = ROTL64(hash64[1], 44) ^ hash64[6];
hash64[0] += hash64[7];
hash64[7] = ROTL64(hash64[7], 9) ^ hash64[0];
hash64[2] += hash64[5];
hash64[5] = ROTL64(hash64[5], 54) ^ hash64[2];
hash64[4] += hash64[3];
hash64[3] = ROTL64(hash64[3], 56) ^ hash64[4];
hash64[0] = (hash64[0] + h7);
hash64[1] = (hash64[1] + skein_h8);
hash64[2] = (hash64[2] + h0);
hash64[3] = (hash64[3] + h1);
hash64[4] = (hash64[4] + h2);
hash64[5] = (hash64[5] + h3 + 0xff00000000000000ULL);
hash64[6] = (hash64[6] + h4 + 0xff00000000000008ULL);
hash64[7] = (hash64[7] + h5 + (UINT64)7);
hash64[0] += hash64[1];
hash64[1] = ROTL64(hash64[1], 39) ^ hash64[0];
hash64[2] += hash64[3];
hash64[3] = ROTL64(hash64[3], 30) ^ hash64[2];
hash64[4] += hash64[5];
hash64[5] = ROTL64(hash64[5], 34) ^ hash64[4];
hash64[6] += hash64[7];
hash64[7] = ROTL64(hash64[7], 24) ^ hash64[6];
hash64[2] += hash64[1];
hash64[1] = ROTL64(hash64[1], 13) ^ hash64[2];
hash64[4] += hash64[7];
hash64[7] = ROTL64(hash64[7], 50) ^ hash64[4];
hash64[6] += hash64[5];
hash64[5] = ROTL64(hash64[5], 10) ^ hash64[6];
hash64[0] += hash64[3];
hash64[3] = ROTL64(hash64[3], 17) ^ hash64[0];
hash64[4] += hash64[1];
hash64[1] = ROTL64(hash64[1], 25) ^ hash64[4];
hash64[6] += hash64[3];
hash64[3] = ROTL64(hash64[3], 29) ^ hash64[6];
hash64[0] += hash64[5];
hash64[5] = ROTL64(hash64[5], 39) ^ hash64[0];
hash64[2] += hash64[7];
hash64[7] = ROTL64(hash64[7], 43) ^ hash64[2];
hash64[6] += hash64[1];
hash64[1] = ROTL64(hash64[1], 8) ^ hash64[6];
hash64[0] += hash64[7];
hash64[7] = ROTL64(hash64[7], 35) ^ hash64[0];
hash64[2] += hash64[5];
hash64[5] = ROTL64(hash64[5], 56) ^ hash64[2];
hash64[4] += hash64[3];
hash64[3] = ROTL64(hash64[3], 22) ^ hash64[4];
hash64[0] = (hash64[0] + skein_h8);
hash64[1] = (hash64[1] + h0);
hash64[2] = (hash64[2] + h1);
hash64[3] = (hash64[3] + h2);
hash64[4] = (hash64[4] + h3);
hash64[5] = (hash64[5] + h4 + 0xff00000000000008ULL);
hash64[6] = (hash64[6] + h5 + 8ULL);
hash64[7] = (hash64[7] + h6 + (UINT64)8);
hash64[0] += hash64[1];
hash64[1] = ROTL64(hash64[1], 46) ^ hash64[0];
hash64[2] += hash64[3];
hash64[3] = ROTL64(hash64[3], 36) ^ hash64[2];
hash64[4] += hash64[5];
hash64[5] = ROTL64(hash64[5], 19) ^ hash64[4];
hash64[6] += hash64[7];
hash64[7] = ROTL64(hash64[7], 37) ^ hash64[6];
hash64[2] += hash64[1];
hash64[1] = ROTL64(hash64[1], 33) ^ hash64[2];
hash64[4] += hash64[7];
hash64[7] = ROTL64(hash64[7], 27) ^ hash64[4];
hash64[6] += hash64[5];
hash64[5] = ROTL64(hash64[5], 14) ^ hash64[6];
hash64[0] += hash64[3];
hash64[3] = ROTL64(hash64[3], 42) ^ hash64[0];
hash64[4] += hash64[1];
hash64[1] = ROTL64(hash64[1], 17) ^ hash64[4];
hash64[6] += hash64[3];
hash64[3] = ROTL64(hash64[3], 49) ^ hash64[6];
hash64[0] += hash64[5];
hash64[5] = ROTL64(hash64[5], 36) ^ hash64[0];
hash64[2] += hash64[7];
hash64[7] = ROTL64(hash64[7], 39) ^ hash64[2];
hash64[6] += hash64[1];
hash64[1] = ROTL64(hash64[1], 44) ^ hash64[6];
hash64[0] += hash64[7];
hash64[7] = ROTL64(hash64[7], 9) ^ hash64[0];
hash64[2] += hash64[5];
hash64[5] = ROTL64(hash64[5], 54) ^ hash64[2];
hash64[4] += hash64[3];
hash64[3] = ROTL64(hash64[3], 56) ^ hash64[4];
hash64[0] = (hash64[0] + h0);
hash64[1] = (hash64[1] + h1);
hash64[2] = (hash64[2] + h2);
hash64[3] = (hash64[3] + h3);
hash64[4] = (hash64[4] + h4);
hash64[5] = (hash64[5] + h5 + 8ULL);
hash64[6] = (hash64[6] + h6 + 0xff00000000000000ULL);
hash64[7] = (hash64[7] + h7 + (UINT64)9);
hash64[0] += hash64[1];
hash64[1] = ROTL64(hash64[1], 39) ^ hash64[0];
hash64[2] += hash64[3];
hash64[3] = ROTL64(hash64[3], 30) ^ hash64[2];
hash64[4] += hash64[5];
hash64[5] = ROTL64(hash64[5], 34) ^ hash64[4];
hash64[6] += hash64[7];
hash64[7] = ROTL64(hash64[7], 24) ^ hash64[6];
hash64[2] += hash64[1];
hash64[1] = ROTL64(hash64[1], 13) ^ hash64[2];
hash64[4] += hash64[7];
hash64[7] = ROTL64(hash64[7], 50) ^ hash64[4];
hash64[6] += hash64[5];
hash64[5] = ROTL64(hash64[5], 10) ^ hash64[6];
hash64[0] += hash64[3];
hash64[3] = ROTL64(hash64[3], 17) ^ hash64[0];
hash64[4] += hash64[1];
hash64[1] = ROTL64(hash64[1], 25) ^ hash64[4];
hash64[6] += hash64[3];
hash64[3] = ROTL64(hash64[3], 29) ^ hash64[6];
hash64[0] += hash64[5];
hash64[5] = ROTL64(hash64[5], 39) ^ hash64[0];
hash64[2] += hash64[7];
hash64[7] = ROTL64(hash64[7], 43) ^ hash64[2];
hash64[6] += hash64[1];
hash64[1] = ROTL64(hash64[1], 8) ^ hash64[6];
hash64[0] += hash64[7];
hash64[7] = ROTL64(hash64[7], 35) ^ hash64[0];
hash64[2] += hash64[5];
hash64[5] = ROTL64(hash64[5], 56) ^ hash64[2];
hash64[4] += hash64[3];
hash64[3] = ROTL64(hash64[3], 22) ^ hash64[4];

hash64[0] = (hash64[0] + h1);
hash64[1] = (hash64[1] + h2);
hash64[2] = (hash64[2] + h3);
hash64[3] = (hash64[3] + h4);
hash64[4] = (hash64[4] + h5);
hash64[5] = (hash64[5] + h6 + 0xff00000000000000ULL);
hash64[6] = (hash64[6] + h7 + 0xff00000000000008ULL);
hash64[7] = (hash64[7] + skein_h8 + (UINT64)10);
hash64[0] += hash64[1];
hash64[1] = ROTL64(hash64[1], 46) ^ hash64[0];
hash64[2] += hash64[3];
hash64[3] = ROTL64(hash64[3], 36) ^ hash64[2];
hash64[4] += hash64[5];
hash64[5] = ROTL64(hash64[5], 19) ^ hash64[4];
hash64[6] += hash64[7];
hash64[7] = ROTL64(hash64[7], 37) ^ hash64[6];
hash64[2] += hash64[1];
hash64[1] = ROTL64(hash64[1], 33) ^ hash64[2];
hash64[4] += hash64[7];
hash64[7] = ROTL64(hash64[7], 27) ^ hash64[4];
hash64[6] += hash64[5];
hash64[5] = ROTL64(hash64[5], 14) ^ hash64[6];
hash64[0] += hash64[3];
hash64[3] = ROTL64(hash64[3], 42) ^ hash64[0];
hash64[4] += hash64[1];
hash64[1] = ROTL64(hash64[1], 17) ^ hash64[4];
hash64[6] += hash64[3];
hash64[3] = ROTL64(hash64[3], 49) ^ hash64[6];
hash64[0] += hash64[5];
hash64[5] = ROTL64(hash64[5], 36) ^ hash64[0];
hash64[2] += hash64[7];
hash64[7] = ROTL64(hash64[7], 39) ^ hash64[2];
hash64[6] += hash64[1];
hash64[1] = ROTL64(hash64[1], 44) ^ hash64[6];
hash64[0] += hash64[7];
hash64[7] = ROTL64(hash64[7], 9) ^ hash64[0];
hash64[2] += hash64[5];
hash64[5] = ROTL64(hash64[5], 54) ^ hash64[2];
hash64[4] += hash64[3];
hash64[3] = ROTL64(hash64[3], 56) ^ hash64[4];
hash64[0] = (hash64[0] + h2);
hash64[1] = (hash64[1] + h3);
hash64[2] = (hash64[2] + h4);
hash64[3] = (hash64[3] + h5);
hash64[4] = (hash64[4] + h6);
hash64[5] = (hash64[5] + h7 + 0xff00000000000008ULL);
hash64[6] = (hash64[6] + skein_h8 + 8ULL);
hash64[7] = (hash64[7] + h0 + (UINT64)11);
hash64[0] += hash64[1];
hash64[1] = ROTL64(hash64[1], 39) ^ hash64[0];
hash64[2] += hash64[3];
hash64[3] = ROTL64(hash64[3], 30) ^ hash64[2];
hash64[4] += hash64[5];
hash64[5] = ROTL64(hash64[5], 34) ^ hash64[4];
hash64[6] += hash64[7];
hash64[7] = ROTL64(hash64[7], 24) ^ hash64[6];
hash64[2] += hash64[1];
hash64[1] = ROTL64(hash64[1], 13) ^ hash64[2];
hash64[4] += hash64[7];
hash64[7] = ROTL64(hash64[7], 50) ^ hash64[4];
hash64[6] += hash64[5];
hash64[5] = ROTL64(hash64[5], 10) ^ hash64[6];
hash64[0] += hash64[3];
hash64[3] = ROTL64(hash64[3], 17) ^ hash64[0];
hash64[4] += hash64[1];
hash64[1] = ROTL64(hash64[1], 25) ^ hash64[4];
hash64[6] += hash64[3];
hash64[3] = ROTL64(hash64[3], 29) ^ hash64[6];
hash64[0] += hash64[5];
hash64[5] = ROTL64(hash64[5], 39) ^ hash64[0];
hash64[2] += hash64[7];
hash64[7] = ROTL64(hash64[7], 43) ^ hash64[2];
hash64[6] += hash64[1];
hash64[1] = ROTL64(hash64[1], 8) ^ hash64[6];
hash64[0] += hash64[7];
hash64[7] = ROTL64(hash64[7], 35) ^ hash64[0];
hash64[2] += hash64[5];
hash64[5] = ROTL64(hash64[5], 56) ^ hash64[2];
hash64[4] += hash64[3];
hash64[3] = ROTL64(hash64[3], 22) ^ hash64[4];
hash64[0] = (hash64[0] + h3);
hash64[1] = (hash64[1] + h4);
hash64[2] = (hash64[2] + h5);
hash64[3] = (hash64[3] + h6);
hash64[4] = (hash64[4] + h7);
hash64[5] = (hash64[5] + skein_h8 + 8ULL);
hash64[6] = (hash64[6] + h0 + 0xff00000000000000ULL);
hash64[7] = (hash64[7] + h1 + (UINT64)12);
hash64[0] += hash64[1];
hash64[1] = ROTL64(hash64[1], 46) ^ hash64[0];
hash64[2] += hash64[3];
hash64[3] = ROTL64(hash64[3], 36) ^ hash64[2];
hash64[4] += hash64[5];
hash64[5] = ROTL64(hash64[5], 19) ^ hash64[4];
hash64[6] += hash64[7];
hash64[7] = ROTL64(hash64[7], 37) ^ hash64[6];
hash64[2] += hash64[1];
hash64[1] = ROTL64(hash64[1], 33) ^ hash64[2];
hash64[4] += hash64[7];
hash64[7] = ROTL64(hash64[7], 27) ^ hash64[4];
hash64[6] += hash64[5];
hash64[5] = ROTL64(hash64[5], 14) ^ hash64[6];
hash64[0] += hash64[3];
hash64[3] = ROTL64(hash64[3], 42) ^ hash64[0];
hash64[4] += hash64[1];
hash64[1] = ROTL64(hash64[1], 17) ^ hash64[4];
hash64[6] += hash64[3];
hash64[3] = ROTL64(hash64[3], 49) ^ hash64[6];
hash64[0] += hash64[5];
hash64[5] = ROTL64(hash64[5], 36) ^ hash64[0];
hash64[2] += hash64[7];
hash64[7] = ROTL64(hash64[7], 39) ^ hash64[2];
hash64[6] += hash64[1];
hash64[1] = ROTL64(hash64[1], 44) ^ hash64[6];
hash64[0] += hash64[7];
hash64[7] = ROTL64(hash64[7], 9) ^ hash64[0];
hash64[2] += hash64[5];
hash64[5] = ROTL64(hash64[5], 54) ^ hash64[2];
hash64[4] += hash64[3];
hash64[3] = ROTL64(hash64[3], 56) ^ hash64[4];
hash64[0] = (hash64[0] + h4);
hash64[1] = (hash64[1] + h5);
hash64[2] = (hash64[2] + h6);
hash64[3] = (hash64[3] + h7);
hash64[4] = (hash64[4] + skein_h8);
hash64[5] = (hash64[5] + h0 + 0xff00000000000000ULL);
hash64[6] = (hash64[6] + h1 + 0xff00000000000008ULL);
hash64[7] = (hash64[7] + h2 + (UINT64)13);
hash64[0] += hash64[1];
hash64[1] = ROTL64(hash64[1], 39) ^ hash64[0];
hash64[2] += hash64[3];
hash64[3] = ROTL64(hash64[3], 30) ^ hash64[2];
hash64[4] += hash64[5];
hash64[5] = ROTL64(hash64[5], 34) ^ hash64[4];
hash64[6] += hash64[7];
hash64[7] = ROTL64(hash64[7], 24) ^ hash64[6];
hash64[2] += hash64[1];
hash64[1] = ROTL64(hash64[1], 13) ^ hash64[2];
hash64[4] += hash64[7];
hash64[7] = ROTL64(hash64[7], 50) ^ hash64[4];
hash64[6] += hash64[5];
hash64[5] = ROTL64(hash64[5], 10) ^ hash64[6];
hash64[0] += hash64[3];
hash64[3] = ROTL64(hash64[3], 17) ^ hash64[0];
hash64[4] += hash64[1];
hash64[1] = ROTL64(hash64[1], 25) ^ hash64[4];
hash64[6] += hash64[3];
hash64[3] = ROTL64(hash64[3], 29) ^ hash64[6];
hash64[0] += hash64[5];
hash64[5] = ROTL64(hash64[5], 39) ^ hash64[0];
hash64[2] += hash64[7];
hash64[7] = ROTL64(hash64[7], 43) ^ hash64[2];
hash64[6] += hash64[1];
hash64[1] = ROTL64(hash64[1], 8) ^ hash64[6];
hash64[0] += hash64[7];
hash64[7] = ROTL64(hash64[7], 35) ^ hash64[0];
hash64[2] += hash64[5];
hash64[5] = ROTL64(hash64[5], 56) ^ hash64[2];
hash64[4] += hash64[3];
hash64[3] = ROTL64(hash64[3], 22) ^ hash64[4];
hash64[0] = (hash64[0] + h5);
hash64[1] = (hash64[1] + h6);
hash64[2] = (hash64[2] + h7);
hash64[3] = (hash64[3] + skein_h8);
hash64[4] = (hash64[4] + h0);
hash64[5] = (hash64[5] + h1 + 0xff00000000000008ULL);
hash64[6] = (hash64[6] + h2 + 8ULL);
hash64[7] = (hash64[7] + h3 + (UINT64)14);
hash64[0] += hash64[1];
hash64[1] = ROTL64(hash64[1], 46) ^ hash64[0];
hash64[2] += hash64[3];
hash64[3] = ROTL64(hash64[3], 36) ^ hash64[2];
hash64[4] += hash64[5];
hash64[5] = ROTL64(hash64[5], 19) ^ hash64[4];
hash64[6] += hash64[7];
hash64[7] = ROTL64(hash64[7], 37) ^ hash64[6];
hash64[2] += hash64[1];
hash64[1] = ROTL64(hash64[1], 33) ^ hash64[2];
hash64[4] += hash64[7];
hash64[7] = ROTL64(hash64[7], 27) ^ hash64[4];
hash64[6] += hash64[5];
hash64[5] = ROTL64(hash64[5], 14) ^ hash64[6];
hash64[0] += hash64[3];
hash64[3] = ROTL64(hash64[3], 42) ^ hash64[0];
hash64[4] += hash64[1];
hash64[1] = ROTL64(hash64[1], 17) ^ hash64[4];
hash64[6] += hash64[3];
hash64[3] = ROTL64(hash64[3], 49) ^ hash64[6];
hash64[0] += hash64[5];
hash64[5] = ROTL64(hash64[5], 36) ^ hash64[0];
hash64[2] += hash64[7];
hash64[7] = ROTL64(hash64[7], 39) ^ hash64[2];
hash64[6] += hash64[1];
hash64[1] = ROTL64(hash64[1], 44) ^ hash64[6];
hash64[0] += hash64[7];
hash64[7] = ROTL64(hash64[7], 9) ^ hash64[0];
hash64[2] += hash64[5];
hash64[5] = ROTL64(hash64[5], 54) ^ hash64[2];
hash64[4] += hash64[3];
hash64[3] = ROTL64(hash64[3], 56) ^ hash64[4];
hash64[0] = (hash64[0] + h6);
hash64[1] = (hash64[1] + h7);
hash64[2] = (hash64[2] + skein_h8);
hash64[3] = (hash64[3] + h0);
hash64[4] = (hash64[4] + h1);
hash64[5] = (hash64[5] + h2 + 8ULL);
hash64[6] = (hash64[6] + h3 + 0xff00000000000000ULL);
hash64[7] = (hash64[7] + h4 + (UINT64)15);
hash64[0] += hash64[1];
hash64[1] = ROTL64(hash64[1], 39) ^ hash64[0];
hash64[2] += hash64[3];
hash64[3] = ROTL64(hash64[3], 30) ^ hash64[2];
hash64[4] += hash64[5];
hash64[5] = ROTL64(hash64[5], 34) ^ hash64[4];
hash64[6] += hash64[7];
hash64[7] = ROTL64(hash64[7], 24) ^ hash64[6];
hash64[2] += hash64[1];
hash64[1] = ROTL64(hash64[1], 13) ^ hash64[2];
hash64[4] += hash64[7];
hash64[7] = ROTL64(hash64[7], 50) ^ hash64[4];
hash64[6] += hash64[5];
hash64[5] = ROTL64(hash64[5], 10) ^ hash64[6];
hash64[0] += hash64[3];
hash64[3] = ROTL64(hash64[3], 17) ^ hash64[0];
hash64[4] += hash64[1];
hash64[1] = ROTL64(hash64[1], 25) ^ hash64[4];
hash64[6] += hash64[3];
hash64[3] = ROTL64(hash64[3], 29) ^ hash64[6];
hash64[0] += hash64[5];
hash64[5] = ROTL64(hash64[5], 39) ^ hash64[0];
hash64[2] += hash64[7];
hash64[7] = ROTL64(hash64[7], 43) ^ hash64[2];
hash64[6] += hash64[1];
hash64[1] = ROTL64(hash64[1], 8) ^ hash64[6];
hash64[0] += hash64[7];
hash64[7] = ROTL64(hash64[7], 35) ^ hash64[0];
hash64[2] += hash64[5];
hash64[5] = ROTL64(hash64[5], 56) ^ hash64[2];
hash64[4] += hash64[3];
hash64[3] = ROTL64(hash64[3], 22) ^ hash64[4];
hash64[0] = (hash64[0] + h7);
hash64[1] = (hash64[1] + skein_h8);
hash64[2] = (hash64[2] + h0);
hash64[3] = (hash64[3] + h1);
hash64[4] = (hash64[4] + h2);
hash64[5] = (hash64[5] + h3 + 0xff00000000000000ULL);
hash64[6] = (hash64[6] + h4 + 0xff00000000000008ULL);
hash64[7] = (hash64[7] + h5 + (UINT64)16);
hash64[0] += hash64[1];
hash64[1] = ROTL64(hash64[1], 46) ^ hash64[0];
hash64[2] += hash64[3];
hash64[3] = ROTL64(hash64[3], 36) ^ hash64[2];
hash64[4] += hash64[5];
hash64[5] = ROTL64(hash64[5], 19) ^ hash64[4];
hash64[6] += hash64[7];
hash64[7] = ROTL64(hash64[7], 37) ^ hash64[6];
hash64[2] += hash64[1];
hash64[1] = ROTL64(hash64[1], 33) ^ hash64[2];
hash64[4] += hash64[7];
hash64[7] = ROTL64(hash64[7], 27) ^ hash64[4];
hash64[6] += hash64[5];
hash64[5] = ROTL64(hash64[5], 14) ^ hash64[6];
hash64[0] += hash64[3];
hash64[3] = ROTL64(hash64[3], 42) ^ hash64[0];
hash64[4] += hash64[1];
hash64[1] = ROTL64(hash64[1], 17) ^ hash64[4];
hash64[6] += hash64[3];
hash64[3] = ROTL64(hash64[3], 49) ^ hash64[6];
hash64[0] += hash64[5];
hash64[5] = ROTL64(hash64[5], 36) ^ hash64[0];
hash64[2] += hash64[7];
hash64[7] = ROTL64(hash64[7], 39) ^ hash64[2];
hash64[6] += hash64[1];
hash64[1] = ROTL64(hash64[1], 44) ^ hash64[6];
hash64[0] += hash64[7];
hash64[7] = ROTL64(hash64[7], 9) ^ hash64[0];
hash64[2] += hash64[5];
hash64[5] = ROTL64(hash64[5], 54) ^ hash64[2];
hash64[4] += hash64[3];
hash64[3] = ROTL64(hash64[3], 56) ^ hash64[4];
hash64[0] = (hash64[0] + skein_h8);
hash64[1] = (hash64[1] + h0);
hash64[2] = (hash64[2] + h1);
hash64[3] = (hash64[3] + h2);
hash64[4] = (hash64[4] + h3);
hash64[5] = (hash64[5] + h4 + 0xff00000000000008ULL);
hash64[6] = (hash64[6] + h5 + 8ULL);
hash64[7] = (hash64[7] + h6 + (UINT64)17);
hash64[0] += hash64[1];
hash64[1] = ROTL64(hash64[1], 39) ^ hash64[0];
hash64[2] += hash64[3];
hash64[3] = ROTL64(hash64[3], 30) ^ hash64[2];
hash64[4] += hash64[5];
hash64[5] = ROTL64(hash64[5], 34) ^ hash64[4];
hash64[6] += hash64[7];
hash64[7] = ROTL64(hash64[7], 24) ^ hash64[6];
hash64[2] += hash64[1];
hash64[1] = ROTL64(hash64[1], 13) ^ hash64[2];
hash64[4] += hash64[7];
hash64[7] = ROTL64(hash64[7], 50) ^ hash64[4];
hash64[6] += hash64[5];
hash64[5] = ROTL64(hash64[5], 10) ^ hash64[6];
hash64[0] += hash64[3];
hash64[3] = ROTL64(hash64[3], 17) ^ hash64[0];
hash64[4] += hash64[1];
hash64[1] = ROTL64(hash64[1], 25) ^ hash64[4];
hash64[6] += hash64[3];
hash64[3] = ROTL64(hash64[3], 29) ^ hash64[6];
hash64[0] += hash64[5];
hash64[5] = ROTL64(hash64[5], 39) ^ hash64[0];
hash64[2] += hash64[7];
hash64[7] = ROTL64(hash64[7], 43) ^ hash64[2];
hash64[6] += hash64[1];
hash64[1] = ROTL64(hash64[1], 8) ^ hash64[6];
hash64[0] += hash64[7];
hash64[7] = ROTL64(hash64[7], 35) ^ hash64[0];
hash64[2] += hash64[5];
hash64[5] = ROTL64(hash64[5], 56) ^ hash64[2];
hash64[4] += hash64[3];
hash64[3] = ROTL64(hash64[3], 22) ^ hash64[4];

hash64[0] = (hash64[0] + h0);
hash64[1] = (hash64[1] + h1);
hash64[2] = (hash64[2] + h2);
hash64[3] = (hash64[3] + h3);
hash64[4] = (hash64[4] + h4);
hash64[5] = (hash64[5] + h5 + 8ULL);
hash64[6] = (hash64[6] + h6 + 0xff00000000000000ULL);
hash64[7] = (hash64[7] + h7 + (UINT64)18);

#undef h0
#undef h1
#undef h2
#undef h3
#undef h4
#undef h5
#undef h6
#undef h7


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on October 22, 2014, 01:47:45 AM
keccak (http://pastebin.com/W0G0ZY9u)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on October 22, 2014, 01:53:30 AM
JH
part 1 (http://pastebin.com/kT92Vdfx)
part 2 (http://pastebin.com/ASB81RCD)
part 3 (http://pastebin.com/DqZkukDP)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on April 12, 2015, 04:58:34 AM
Archiving old announcement
I finally got rid from the last pieces of GPL'ed code in my own miner and can now release it to the public. This miner is not free, a royalty of 1/8 (12.5%) is deducted from every mined block. (Coinbase transaction have 2 outputs, so I get my fee at exactly the same moment you'll get your coins).

Download link:https://mega.co.nz/#!QMMEFBYY!AgH4OGrKaRHkRjiVfVXXzxBHbTIlgdD5o3ak2VFuU78

Edit quarkcoin.conf (or Offering.conf, or securecoin.conf) file of your wallet to enable solo-mining, put your own username and password there:
listen=1
rpcallowip=127.0.0.1
rpcuser=username
rpcpassword=password
rpcport=8772
server=1

Edit sm.cmd from downloaded archive, put your own username, password and wallet address there:
smelter -o http://127.0.0.1:8772 -u username -p password -a QNiGvoYctyMwzV1ZjNbjhEoKdQVzFKsmVw

This is pre-alpha software, expect all kinds of bugs to be found, don't hesitate to report it here!
NVidia and old/rare AMD cards are not supported. Please, give me some time to iron out bugs :)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on April 12, 2015, 05:08:53 AM
New public version (https://mega.co.nz/#!qMxmjJLT!fvjyuW23op5mUFYC-QPiyrkWbC-hn5faQg2wdMPd0pc), now it's Smelter for WhirlpoolX. Closed-sourced, buggy as hell, Windows-only, Tahiti (R9 280x) only, Stratum-only - but free.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: grizscom on April 12, 2015, 05:14:23 AM
And what is about  linux version?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on April 12, 2015, 05:17:27 AM
And what is about  linux version?
I'm going to release it, but later. Paranoid about "modified build process" clause in one of licenses in the toolchain, so it's time to try LLVM.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on April 14, 2015, 10:50:58 AM
Getting Stratum work. Nicehash changes work and rises difficulty from 1/256 to 10.24, couple of stale shares slip to the server. The right thing to do is to follow protocol specification and start enforcing new work and difficulty only after mining.notify, but at such rates server may ban miner.

Code:
1:0 A:1464 R:22 HW:0 Speed: 519.26MH/s 5s: 519.67MH/s
STRATUM: mining.set_extranonce: new ExtraNonce1=48001aa4eb new size of ExtraNonce2=3
STRATUM: mining.set_difficulty: 0.003906
STRATUM: mining.notify
1:0 A:1566 R:22 HW:0 Speed: 519.26MH/s 5s: 520.09MH/s
1:0 A:1734 R:22 HW:0 Speed: 519.27MH/s 5s: 520.30MH/s
STRATUM: mining.set_extranonce: new ExtraNonce1=77ff7c94a8 new size of ExtraNonce2=3
STRATUM: mining.set_difficulty: 10.24
STRATUM: mining.notify
STRATUM: Share rejected (Error code 21, Job not found.)
STRATUM: Share rejected (Error code 21, Job not found.)
STRATUM: Share rejected (Error code 21, Job not found.)
1:0 A:1735 R:25 HW:0 Speed: 519.27MH/s 5s: 519.88MH/s


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on April 14, 2015, 08:55:30 PM
You were enforcing it immediately? I'm storing the new difficulty in another variable, then setting a flag if the current diff is outdated - the mining.notify handler checks the flag, and if it's set, copies the new diff from its storage space to the main diff variable, then clears the flag. I also only enforce a miner thread restart if the pool server tells me to clear the jobs.
I did postponed diff/job update, as spec says, then tried instant job change, without waiting for mining.notify, now it's time to revert back, do the build and let everyone meet the bugs :)
Another issue with Nicehash - sometime response to mining.submit is delayed, sometime (rarely) there is no response at all. Every request has to be stored and checked for timeouts.


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on April 15, 2015, 01:05:37 AM
Next build is out (https://mega.co.nz/#!vQgzCCxY!iprRvA5CsiouU5EfrY6ptct8dFuE1_Y-vZnGkjcI_Kc), with more work on Stratum.
Tested only with single 280x, but those cards should work:
   Juniper (6770, 6750, 5750, 5770)
   Pitcairn (7850, 7870, Curacao: 265, 270, 270X)
   Tahiti (7870, 7950, 7970, 280, 290X)
   Tonga (285)


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: JuanHungLo on April 15, 2015, 01:28:18 PM
Next build is out (https://mega.co.nz/#!vQgzCCxY!iprRvA5CsiouU5EfrY6ptct8dFuE1_Y-vZnGkjcI_Kc), with more work on Stratum.
Tested only with single 280x, but those cards should work:
   Juniper (6770, 6750, 5750, 5770)
   Pitcairn (7850, 7870, Curacao: 265, 270, 270X)
   Tahiti (7870, 7950, 7970, 280, 290X)
   Tonga (285)


Thanks for your efforts.  What command line settings work for 280x please?


Title: Re: [Preview] Smelter - GPU miner for Quark-based coins
Post by: smolen on April 15, 2015, 05:03:52 PM
Thanks for your efforts.  What command line settings work for 280x please?
Oh, yes, detailed announcement and readme are missing, mea culpa

There isn't much to be configured. User can play with worksize (64, 128 and 256) and number of threads. To flood the screen with tons of diagnostics use --debug. Before claiming that I violated GPL, take a look at 'smelter --copyrights' output. To exit, use control-C or type any letter and then ENTER.
Intensity options is missing, it was removed to protect users from one obscure driver bug, with too high value PC is dead hang. There is no way yet to select GPU to run or set clock, those options are in my TODO list.

Typical command line looks like this, just change pool address, user name and password. 280x runs well with 4 threads and worksize 64, I hope users will share best settings for other cards.
Code:
smelter -o stratum+tcp://vnl.suprnova.cc:1111 -u user -p pass -g 4 -W 64

Full list of options:
Code:
Program options:
  -? [ --help ]           This help message
  --copyrights            Print libraries copyright message(s)
  -o [ --url ] arg        pool url (ex: -o http://pool:port )
  -u [ --user ] arg       Pool username
  -p [ --pass ] arg       Pool password
  -w [ --worksize ] arg   Worksize
  -g [ --gputhreads ] arg Threads per GPU
  -D [ --debug ]          Enable debug output


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: Bombadil on April 16, 2015, 07:13:14 AM
Intensity options is missing, it was removed to protect users from one obscure driver bug, with too high value PC is dead hang. There is no way yet to select GPU to run or set clock, those options are in my TODO list.

You aren't used to cudamining, I guess :P It's regular beef here that the system needs a complete reboot if you're playing with intensities and overclock :D
Part of the fun, isn't it? ^^" (Sucks too, my bitcoin blockchain gets corrupted that way if I'm running it)


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: smolen on April 16, 2015, 07:25:52 AM
Intensity options is missing, it was removed to protect users from one obscure driver bug, with too high value PC is dead hang. There is no way yet to select GPU to run or set clock, those options are in my TODO list.

You aren't used to cudamining, I guess :P It's regular beef here that the system needs a complete reboot if you're playing with intensities and overclock :D
Part of the fun, isn't it? ^^" (Sucks too, my bitcoin blockchain gets corrupted that way if I'm running it)
Looks like driver can't handle more than 2^32 scheduled workitems at once - no matter how splitted between threads and kernels. Not a pleasure to play with it on work PC, have I backups or not :)


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: elpis on April 16, 2015, 08:01:33 AM
smolen
Why is the speed falls with time from 1.17 Gh under 400 Mh? ???
AMD 3x7950 1000/625.

On the other rig 4x7970 1000/625--freezes.
Why is the CPU load to 100% and freezes.
CPU Celeron 1620.


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: smolen on April 16, 2015, 08:12:45 AM
smolen
Why is the speed falls with time from 1.17 Gh under 400 Mh? ???
AMD 3x7950 1000/625
Smelter is still too basic, there is no per-GPU data, nor mining thread monitoring, nor logging. Right now I can only guess that 2 of 3 your GPUs are hung. Wait a bit, I'm going to do better status reporting in next versions.


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: elpis on April 16, 2015, 09:20:16 AM
Why is the CPU load to 100%? Can be corrected in newer versions GPU miner?


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: smolen on April 16, 2015, 12:02:57 PM
Why is the CPU load to 100%? Can be corrected in newer versions GPU miner?
1) Because of some bug, may be on Smelter side, may be in AMD driver
2) Probably

Try to add this in cmd file as the first line
setx GPU_USE_SYNC_OBJECTS 1


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: fenomenhaa on April 16, 2015, 02:31:20 PM
Is there a bug on 15.3 driver?(280x+7950) İ cannot reduce my mem clock ++ and cannot change coreclock of 7950 's . Thst's couse of smelter or driver ?


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: z0n0 on April 16, 2015, 05:50:50 PM
smolen will there be versions for other algos too or you'll stick just with whirlpoolx?


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: mik_druid on April 16, 2015, 07:23:44 PM
Any configs for r 290? What speed do you have while mining vanilla?


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: smolen on April 17, 2015, 12:13:31 AM
Don't worry, I do read all the feedback. Right now priorities are:
- Better logging, so user could just send log file to me, without typing all needed details (OS, driver version, GPU model, pool, etc). Unless done, bugs and I have some disagreements about the idea of bughunting :)
- Pool monitoring, balancing and failover. Must have.
- Better printed statistics, now it's not always clear what Smelter is busy with

smolen will there be versions for other algos too or you'll stick just with whirlpoolx?
I'm stuck not with kernel, but with miner itself. Yes, expect new kernels later, but some will be paid ones, most probably with profit splitting.

Is there a bug on 15.3 driver?(280x+7950) İ cannot reduce my mem clock ++ and cannot change coreclock of 7950 's . Thst's couse of smelter or driver ?
Right now I can only guess. Wait for the next version, then I'll be able to get to it.

Any configs for r 290? What speed do you have while mining vanilla?
I have only one 280x, the best settings for other cards may differ. Right now speed is 542MH/s with 280x, 4 threads, worksize 64, core 1150, mem 500 on Linux. (Linux build will be released when I figure out how to do license-safe static build)


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: Bombadil on April 17, 2015, 08:32:16 AM
Don't forget an API so external tools can play with it too ;) (While you're busy doing logging, failover, etc...)


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: uplodex on April 17, 2015, 11:56:06 AM
I intend to buy a AMD Radeon r9 280x for mining vanilla coin.
I look for a tutorial that explains how to mining vanilla and how optimized the AMD Radeon r9 280x for 400 Mh / s


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: fenomenhaa on April 17, 2015, 04:12:32 PM
Don't worry, I do read all the feedback. Right now priorities are:
- Better logging, so user could just send log file to me, without typing all needed details (OS, driver version, GPU model, pool, etc). Unless done, bugs and I have some disagreements about the idea of bughunting :)
- Pool monitoring, balancing and failover. Must have.
- Better printed statistics, now it's not always clear what Smelter is busy with

smolen will there be versions for other algos too or you'll stick just with whirlpoolx?
I'm stuck not with kernel, but with miner itself. Yes, expect new kernels later, but some will be paid ones, most probably with profit splitting.

Is there a bug on 15.3 driver?(280x+7950) İ cannot reduce my mem clock ++ and cannot change coreclock of 7950 's . Thst's couse of smelter or driver ?
Right now I can only guess. Wait for the next version, then I'll be able to get to it.

Any configs for r 290? What speed do you have while mining vanilla?
I have only one 280x, the best settings for other cards may differ. Right now speed is 542MH/s with 280x, 4 threads, worksize 64, core 1150, mem 500 on Linux. (Linux build will be released when I figure out how to do license-safe static build)

Tried different drivers, nothing changed. i guess it's cus of smelter ))) .will wait your updates, :))) 


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: M1ST3R on April 17, 2015, 08:14:59 PM
Smolen, thanks for sharing but I cannot get both version .6 and .7 to work on 4 GPUs (2 r9 290 + 2 r9 290x) rig. Doesn't matter what setting was used - max hashrate was 5+MHS for the rig. BTW, this is on Windows 8.1 pro x64 with CAT 14.6 RC3


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: groggin on April 17, 2015, 09:01:38 PM

 yes! thank you for sharing   :D


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: Vampire_sumy on April 21, 2015, 10:41:18 PM
Smolen, thanks for sharing but I cannot get both version .6 and .7 to work on 4 GPUs (2 r9 290 + 2 r9 290x) rig. Doesn't matter what setting was used - max hashrate was 5+MHS for the rig. BTW, this is on Windows 8.1 pro x64 with CAT 14.6 RC3
You must place amd_opencl64.dll , amd_opencl32.dll , amdocl64.dll and amdocl.dll files into smelter miners folder. (This files you can find in amd drivers)


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: cinnamon_carter on April 28, 2015, 06:01:30 AM
Smolen do you have a github with source for anything you 'released' open , maybe others could contribute things and also end up solving other issues you may be running into.... if not , i understand , this is your 'business' and choice to release or not relase the source..... to anyone who complains be glad someone is working on a gpu miner for your algo....  gpu with fee is better than cpu without one.... mining like that is like having a ruber band slingshot while other miners have ak's lol


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: smolen on April 29, 2015, 06:34:44 PM
Don't forget an API so external tools can play with it too ;) (While you're busy doing logging, failover, etc...)
I'm probably aiming too high here - good algo/pool switching code must be able to catch and exploit short spikes in prices and difficulties. For example, when current Vanillacoin block has low difficulty, miner should be able to temporarily switch to solo and then back to the pool. My code is not ready for it yet, not sure about standalone mining managers.

I intend to buy a AMD Radeon r9 280x for mining vanilla coin.
I look for a tutorial that explains how to mining vanilla and how optimized the AMD Radeon r9 280x for 400 Mh / s
Oh, no, you'd better to try water with more mature software like sgminer.

yes! thank you for sharing   :D
My profit here is user feedback - never know what way to break the software will find in the wild :)


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: smolen on April 29, 2015, 07:35:17 PM
Smolen do you have a github with source for anything you 'released' open , maybe others could contribute things and also end up solving other issues you may be running into.... if not , i understand , this is your 'business' and choice to release or not relase the source..... to anyone who complains be glad someone is working on a gpu miner for your algo....  gpu with fee is better than cpu without one.... mining like that is like having a ruber band slingshot while other miners have ak's lol
Actually my second post on this forum was about releasing Copperlark miner - with sources on github. I've sent almost all OpenCL sources (except Groestl) to someone who just asked via PM. Then all the OpenCL code from Quark kernel was published right here, in this thread - and Skein implementation found new home in sp_'s Ccminer. All but one nuances about WhirlpoolX kernel were talked about openly, everybody is welcome to use this tricks. You see, I'm reasonably open about ideas, share old code, but greedy with hot new toys :)

I'm working on my own closed GPU miner that I plan to release, as well - from his standpoint, I don't see why he would. Should be far more flexible than the current miners and have a sane structure, as well; currently mines successfully at pools! :3
Good miner under BSD/X11 license will raise the share of all mining kernel developers. But working miner for PoS coins would be even better :)


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: BogdanEraser on May 04, 2015, 02:48:57 PM
With worksize 256 and 4 threads  R9 270x on 1100/1400 gives 267Mh/s. Many thanx. Waiting for clocks and temp control within Smelter.


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: malickie on May 07, 2015, 08:13:57 PM
So, not sure why people are getting low rates but my R9 290x is sitting comfortably at 600+ MH/s.  I did notice trying to use anything other than the most up to date driver for AMD does seem to drop the Hash rate down dramatically.  Also this is on Windows 8.1 at Stock speeds, no OC.  OC seems to heat the Card up way too much for my tastes.  This is a HIS R9 290x base speed is 1040/1350 for this card 87c is what the temp is at and the voltage draw looks to max out at 1080ish according to MSI Afterburner.

Edit:  Forgot to add, this is my settings in the .cmd file,
smelter -o stratum+tcp://stratum.westhash.com:3343 -u user.name -p password -g 4 -W 64
Going up in Worksize seems to bring the hash rate down just an FYI

This software does desperately need control over Fan Speed.  Auto-Fan, Gpu Over Heat/Target Temp/Temp Cutoff.

I have an old 6850 that I would like to get to work with this software.  Any possibilities of seeing that card added?


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: bitspill on May 07, 2015, 10:33:05 PM
Heads up to any miners who may be watching this thread but not the official vanilla coin thread, PoW mining is going to be paused for 20,000 blocks starting at block 117,833

https://talk.vanillacoin.net/topic/143/temporary-proof-of-work-pause-at-block-117833/3

The pause is to allow testing of mobile staking and fpga development without only a few developers raping the coin.


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: smolen on May 08, 2015, 12:57:14 AM
Heads up to any miners who may be watching this thread but not the official vanilla coin thread, PoW mining is going to be paused for 20,000 blocks starting at block 117,833
Thank you for warning. Not sure I will release new version before this pause :(

Waiting for clocks and temp control within Smelter.
Yes, it's in work.

This software does desperately need control over Fan Speed.  Auto-Fan, Gpu Over Heat/Target Temp/Temp Cutoff.
Oops, sorry, not going to be implemented in the nearest releases. I cannot just copy control algorithm from cgminer and friends, getting it done from scratch will take time.

I have an old 6850 that I would like to get to work with this software.  Any possibilities of seeing that card added?
Yes, still possible while my code is OpenCL.


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: malickie on May 08, 2015, 08:56:44 PM
Why not release new Versions, you can still use it to mine say WestHash/NiceHash Pools and whatever other pools offer WhirlPoolx Algo.

Edit: Found a trick with Smelter at least on my R9 290x.  IT by default does GPU Clock Dynamic so it doesn't fully utilize the Overclock there.  What I did was open Sgminer so it would pin GPU Clock to max and instead of using q to quit just click x on the window so your GPU Clock stays locked into whatever OC it is.  Than open Smelter.  Mining at 700.59 MH/s.  Granted at this speed and OC 1100/1500 My card is pretty darn toasty so I wouldn't recommend it unless you have Liquid or really good Fans and Airflow for the GPU 90c with fans at 100% and 67f with fan blowing into PC.

Edit: I also just noticed that it seems the speed has way more to do with GPU Clock than Mem Clock.  Sweetspot on my GPU Clock seems to be 1125, 1150 gave artifacting, so it would be 1125/1350, speed seems to be around 715 MH/s I think, although it is still climbing slowly. Still runs very toasty though at 90c. 


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: bitspill on May 09, 2015, 03:50:40 AM
Why not release new Versions, you can still use it to mine say WestHash/NiceHash Pools and whatever other pools offer WhirlPoolx Algo.

Pointing your miner at a pool won't do anything if the coins network won't accept the blocks.


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: smolen on May 09, 2015, 12:45:58 PM
Edit: Found a trick with Smelter at least on my R9 290x.  IT by default does GPU Clock Dynamic so it doesn't fully utilize the Overclock there.  What I did was open Sgminer so it would pin GPU Clock to max and instead of using q to quit just click x on the window so your GPU Clock stays locked into whatever OC it is.  Than open Smelter.  Mining at 700.59 MH/s.  Granted at this speed and OC 1100/1500 My card is pretty darn toasty so I wouldn't recommend it unless you have Liquid or really good Fans and Airflow for the GPU 90c with fans at 100% and 67f with fan blowing into PC.

Edit: I also just noticed that it seems the speed has way more to do with GPU Clock than Mem Clock.  Sweetspot on my GPU Clock seems to be 1125, 1150 gave artifacting, so it would be 1125/1350, speed seems to be around 715 MH/s I think, although it is still climbing slowly. Still runs very toasty though at 90c. 
Cool tricks, cool speeds!
Core/mem clock control is in the work but not ready yet :(

Why not release new Versions, you can still use it to mine say WestHash/NiceHash Pools and whatever other pools offer WhirlPoolx Algo.

Pointing your miner at a pool won't do anything if the coins network won't accept the blocks.
Yes, no point in releasing miner that is fast but cannot be used. So I'm working on new kernel for another algorithm, if it will be slow enough, the release will be public :)


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: malickie on May 11, 2015, 03:50:37 PM
Why not release new Versions, you can still use it to mine say WestHash/NiceHash Pools and whatever other pools offer WhirlPoolx Algo.

Pointing your miner at a pool won't do anything if the coins network won't accept the blocks.

Yea I just noticed that it does nothing on the Pools I was talking about :(  Oh well, will have to wait until the block is back to PoW.


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: malickie on May 13, 2015, 01:59:46 PM
Edit: Found a trick with Smelter at least on my R9 290x.  IT by default does GPU Clock Dynamic so it doesn't fully utilize the Overclock there.  What I did was open Sgminer so it would pin GPU Clock to max and instead of using q to quit just click x on the window so your GPU Clock stays locked into whatever OC it is.  Than open Smelter.  Mining at 700.59 MH/s.  Granted at this speed and OC 1100/1500 My card is pretty darn toasty so I wouldn't recommend it unless you have Liquid or really good Fans and Airflow for the GPU 90c with fans at 100% and 67f with fan blowing into PC.

Edit: I also just noticed that it seems the speed has way more to do with GPU Clock than Mem Clock.  Sweetspot on my GPU Clock seems to be 1125, 1150 gave artifacting, so it would be 1125/1350, speed seems to be around 715 MH/s I think, although it is still climbing slowly. Still runs very toasty though at 90c. 
Cool tricks, cool speeds!
Core/mem clock control is in the work but not ready yet :(

Why not release new Versions, you can still use it to mine say WestHash/NiceHash Pools and whatever other pools offer WhirlPoolx Algo.

Pointing your miner at a pool won't do anything if the coins network won't accept the blocks.
Yes, no point in releasing miner that is fast but cannot be used. So I'm working on new kernel for another algorithm, if it will be slow enough, the release will be public :)

My miner supports three algos, full-custom stratum implementation. But it needs multiple pool support, getblocktemplate support, GPU ADL controls (fan/clocks/other shit). Also need a pool-specific mutex on the socket... I don't use cURL (because fucking ewww), but when mining at extreme low diff, stratum can die, probably cause of the socket being used by multiple threads.

Well, I look forward to seeing your Miner Wolf0.  I must say you do some good work, your Bin file for X11 Algo. for my R9 290x has me at darn near 9 MH/s.  Granted I am also using AMD Opencl files within SGMiner to help it a bit, I think it's 14.9 or maybe 14.6 RC2.  Either way with Just OpenCL it will run at around 6 MH/s.  So yea your bin def. helped.


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: smolen on May 13, 2015, 05:25:58 PM
My miner supports three algos, full-custom stratum implementation. But it needs multiple pool support, getblocktemplate support, GPU ADL controls (fan/clocks/other shit). Also need a pool-specific mutex on the socket... I don't use cURL (because fucking ewww), but when mining at extreme low diff, stratum can die, probably cause of the socket being used by multiple threads.
At very low difficulties it's possible to accidentally submit too many stale shares and get banned, may be the problem is on the pool's end. For Stratum networking I switched from curl to boost::asio, curl is still here for getwork/getwork2/getblocktemplate.

Anyways, the ADL SDK is a pain in the ass, but initializing, cleaning up, and getting/setting fan speed works!
Is your CL<->ADL code done in cgminer way or in the right way? :)


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: _javi_ on August 02, 2015, 10:53:46 PM
i have problems with a rig with 4 GPUs (working fine in sgminer).

This rig hashes the same as a 3 GPU rig.

what should i check?  ???

(Win 7 64, catalyst 14.4, proper DLLs in smelter dir, Gigabytes 280x, -g 4 -w64.)


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: gaalx on August 04, 2015, 04:14:21 AM
Warm algorithm, how to adjust settings fan?


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: z0n0 on August 04, 2015, 04:18:27 AM
Warm algorithm, how to adjust settings fan?

I don't think its possible with this version  :-\


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: lowhashminer on August 04, 2015, 08:40:33 PM
Warm algorithm, how to adjust settings fan?

You can download TRIXX app from Sapphire website. Should work on any AMD card.


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: splootch on August 05, 2015, 09:18:37 AM
why is that smelter last official miner only get me 5-6 mh on nicehash?


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: smolen on August 07, 2015, 10:27:40 AM
I'm very sorry, new version with bugfixes and better diagnostics was almost done when I was distracted by other, non-crypto things :(

i have problems with a rig with 4 GPUs (working fine in sgminer).

This rig hashes the same as a 3 GPU rig.

what should i check?  ???

(Win 7 64, catalyst 14.4, proper DLLs in smelter dir, Gigabytes 280x, -g 4 -w64.)

Probably one of GPUs overheated and does not work. Try to lower clock speed for all cards, then raise it back card-by-card. There is no speed settings in the released version, use external tool (Afterburner or something) for overclocking.

Warm algorithm, how to adjust settings fan?

I don't think its possible with this version  :-\
Yes, not yet

why is that smelter last official miner only get me 5-6 mh on nicehash?
First of all wait a bit, pool calculates speed by accepted shares, give it some time (~ 5-10 min) to catch up. Look at miner window, may be there are some diagnostic messages about rejected shares and h/w errors, if yes, post it here. Lower GPU clocks with Afterburner and see if the speed raises to expected for your card.
If nothing will help - take my apologies, I'm very sorry for abandoning the project, and wait for new version :(


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: smolen on January 15, 2016, 05:30:16 AM
Smelter is again abandoned and I'm again publishing kernel source - this time for Vanillacoin WhirlpoolX algorithm

Code:
static UINT64 arrPrecalc[8*256] =
{

0xD83078C018601818ULL, 0x2646AF05238C2323ULL, 0xB891F97EC63FC6C6ULL, 0xFBCD6F13E887E8E8ULL, 0xCB13A14C87268787ULL, 0x116D62A9B8DAB8B8ULL, 0x0902050801040101ULL, 0x0D9E6E424F214F4FULL, 0x9B6CEEAD36D83636ULL, 0xFF510459A6A2A6A6ULL, 0x0CB9BDDED26FD2D2ULL, 0x0EF706FBF5F3F5F5ULL, 0x96F280EF79F97979ULL, 0x30DECE5F6FA16F6FULL, 0x6D3FEFFC917E9191ULL, 0xF8A407AA52555252ULL, 0x47C0FD27609D6060ULL, 0x35657689BCCABCBCULL, 0x372BCDAC9B569B9BULL, 0x8A018C048E028E8EULL, 0xD25B1571A3B6A3A3ULL, 0x6C183C600C300C0CULL, 0x84F68AFF7BF17B7BULL, 0x806AE1B535D43535ULL, 0xF53A69E81D741D1DULL, 0xB3DD4753E0A7E0E0ULL, 0x21B3ACF6D77BD7D7ULL, 0x9C99ED5EC22FC2C2ULL, 0x435C966D2EB82E2EULL, 0x29967A624B314B4BULL, 0x5DE121A3FEDFFEFEULL, 0xD5AE168257415757ULL, 0xBD2A41A815541515ULL, 0xE8EEB69F77C17777ULL, 0x926EEBA537DC3737ULL, 0x9ED7567BE5B3E5E5ULL, 0x1323D98C9F469F9FULL, 0x23FD17D3F0E7F0F0ULL, 0x20947F6A4A354A4AULL, 0x44A9959EDA4FDADAULL, 0xA2B025FA587D5858ULL, 0xCF8FCA06C903C9C9ULL, 0x7C528D5529A42929ULL, 0x5A1422500A280A0AULL, 0x507F4FE1B1FEB1B1ULL, 0xC95D1A69A0BAA0A0ULL, 0x14D6DA7F6BB16B6BULL, 0xD917AB5C852E8585ULL, 0x3C677381BDCEBDBDULL, 0x8FBA34D25D695D5DULL, 0x9020508010401010ULL, 0x07F503F3F4F7F4F4ULL, 0xDD8BC016CB0BCBCBULL, 0xD37CC6ED3EF83E3EULL, 0x2D0A112805140505ULL, 0x78CEE61F67816767ULL, 0x97D55373E4B7E4E4ULL, 0x024EBB25279C2727ULL, 0x7382583241194141ULL, 0xA70B9D2C8B168B8BULL, 0xF6530151A7A6A7A7ULL, 0xB2FA94CF7DE97D7DULL, 0x4937FBDC956E9595ULL, 0x56AD9F8ED847D8D8ULL, 0x70EB308BFBCBFBFBULL, 0xCDC17123EE9FEEEEULL, 0xBBF891C77CED7C7CULL, 0x71CCE31766856666ULL, 0x7BA78EA6DD53DDDDULL, 0xAF2E4BB8175C1717ULL, 0x458E460247014747ULL, 0x1A21DC849E429E9EULL, 0xD489C51ECA0FCACAULL, 0x585A99752DB42D2DULL, 0x2E637991BFC6BFBFULL, 0x3F0E1B38071C0707ULL, 0xAC472301AD8EADADULL, 0xB0B42FEA5A755A5AULL, 0xEF1BB56C83368383ULL, 0xB666FF8533CC3333ULL, 0x5CC6F23F63916363ULL, 0x12040A1002080202ULL, 0x93493839AA92AAAAULL, 0xDEE2A8AF71D97171ULL, 0xC68DCF0EC807C8C8ULL, 0xD1327DC819641919ULL, 0x3B92707249394949ULL, 0x5FAF9A86D943D9D9ULL, 0x31F91DC3F2EFF2F2ULL, 0xA8DB484BE3ABE3E3ULL, 0xB9B62AE25B715B5BULL, 0xBC0D9234881A8888ULL, 0x3E29C8A49A529A9AULL, 0x0B4CBE2D26982626ULL, 0xBF64FA8D32C83232ULL, 0x597D4AE9B0FAB0B0ULL, 0xF2CF6A1BE983E9E9ULL, 0x771E33780F3C0F0FULL, 0x33B7A6E6D573D5D5ULL, 0xF41DBA74803A8080ULL, 0x27617C99BEC2BEBEULL, 0xEB87DE26CD13CDCDULL, 0x8968E4BD34D03434ULL, 0x3290757A483D4848ULL, 0x54E324ABFFDBFFFFULL, 0x8DF48FF77AF57A7AULL, 0x643DEAF4907A9090ULL, 0x9DBE3EC25F615F5FULL, 0x3D40A01D20802020ULL, 0x0FD0D56768BD6868ULL, 0xCA3472D01A681A1AULL, 0xB7412C19AE82AEAEULL, 0x7D755EC9B4EAB4B4ULL, 0xCEA8199A544D5454ULL, 0x7F3BE5EC93769393ULL, 0x2F44AA0D22882222ULL, 0x63C8E907648D6464ULL, 0x2AFF12DBF1E3F1F1ULL, 0xCCE6A2BF73D17373ULL, 0x82245A9012481212ULL, 0x7A805D3A401D4040ULL, 0x4810284008200808ULL, 0x959BE856C32BC3C3ULL, 0xDFC57B33EC97ECECULL, 0x4DAB9096DB4BDBDBULL, 0xC05F1F61A1BEA1A1ULL, 0x9107831C8D0E8D8DULL, 0xC87AC9F53DF43D3DULL, 0x5B33F1CC97669797ULL, 0x0000000000000000ULL, 0xF983D436CF1BCFCFULL, 0x6E5687452BAC2B2BULL, 0xE1ECB39776C57676ULL, 0xE619B06482328282ULL, 0x28B1A9FED67FD6D6ULL, 0xC33677D81B6C1B1BULL, 0x74775BC1B5EEB5B5ULL, 0xBE432911AF86AFAFULL, 0x1DD4DF776AB56A6AULL, 0xEAA00DBA505D5050ULL, 0x578A4C1245094545ULL, 0x38FB18CBF3EBF3F3ULL, 0xAD60F09D30C03030ULL, 0xC4C3742BEF9BEFEFULL, 0xDA7EC3E53FFC3F3FULL, 0xC7AA1C9255495555ULL, 0xDB591079A2B2A2A2ULL, 0xE9C96503EA8FEAEAULL, 0x6ACAEC0F65896565ULL, 0x036968B9BAD2BABAULL, 0x4A5E93652FBC2F2FULL, 0x8E9DE74EC027C0C0ULL, 0x60A181BEDE5FDEDEULL, 0xFC386CE01C701C1CULL, 0x46E72EBBFDD3FDFDULL, 0x1F9A64524D294D4DULL, 0x7639E0E492729292ULL, 0xFAEABC8F75C97575ULL, 0x360C1E3006180606ULL, 0xAE0998248A128A8AULL, 0x4B7940F9B2F2B2B2ULL, 0x85D15963E6BFE6E6ULL, 0x7E1C36700E380E0EULL, 0xE73E63F81F7C1F1FULL, 0x55C4F73762956262ULL, 0x3AB5A3EED477D4D4ULL, 0x814D3229A89AA8A8ULL, 0x5231F4C496629696ULL, 0x62EF3A9BF9C3F9F9ULL, 0xA397F666C533C5C5ULL, 0x104AB13525942525ULL, 0xABB220F259795959ULL, 0xD015AE54842A8484ULL, 0xC5E4A7B772D57272ULL, 0xEC72DDD539E43939ULL, 0x1698615A4C2D4C4CULL, 0x94BC3BCA5E655E5EULL, 0x9FF085E778FD7878ULL, 0xE570D8DD38E03838ULL, 0x980586148C0A8C8CULL, 0x17BFB2C6D163D1D1ULL, 0xE4570B41A5AEA5A5ULL, 0xA1D94D43E2AFE2E2ULL, 0x4EC2F82F61996161ULL, 0x427B45F1B3F6B3B3ULL, 0x3442A51521842121ULL, 0x0825D6949C4A9C9CULL, 0xEE3C66F01E781E1EULL, 0x6186522243114343ULL, 0xB193FC76C73BC7C7ULL, 0x4FE52BB3FCD7FCFCULL, 0x2408142004100404ULL, 0xE3A208B251595151ULL, 0x252FC7BC995E9999ULL, 0x22DAC44F6DA96D6DULL, 0x651A39680D340D0DULL, 0x79E93583FACFFAFAULL, 0x69A384B6DF5BDFDFULL, 0xA9FC9BD77EE57E7EULL, 0x1948B43D24902424ULL, 0xFE76D7C53BEC3B3BULL, 0x9A4B3D31AB96ABABULL, 0xF081D13ECE1FCECEULL, 0x9922558811441111ULL, 0x8303890C8F068F8FULL, 0x049C6B4A4E254E4EULL, 0x667351D1B7E6B7B7ULL, 0xE0CB600BEB8BEBEBULL, 0xC178CCFD3CF03C3CULL, 0xFD1FBF7C813E8181ULL, 0x4035FED4946A9494ULL, 0x1CF30CEBF7FBF7F7ULL, 0x186F67A1B9DEB9B9ULL, 0x8B265F98134C1313ULL, 0x51589C7D2CB02C2CULL, 0x05BBB8D6D36BD3D3ULL, 0x8CD35C6BE7BBE7E7ULL, 0x39DCCB576EA56E6EULL, 0xAA95F36EC437C4C4ULL, 0x1B060F18030C0303ULL, 0xDCAC138A56455656ULL, 0x5E88491A440D4444ULL, 0xA0FE9EDF7FE17F7FULL, 0x884F3721A99EA9A9ULL, 0x6754824D2AA82A2AULL, 0x0A6B6DB1BBD6BBBBULL, 0x879FE246C123C1C1ULL, 0xF1A602A253515353ULL, 0x72A58BAEDC57DCDCULL, 0x531627580B2C0B0BULL, 0x0127D39C9D4E9D9DULL, 0x2BD8C1476CAD6C6CULL, 0xA462F59531C43131ULL, 0xF3E8B98774CD7474ULL, 0x15F109E3F6FFF6F6ULL, 0x4C8C430A46054646ULL, 0xA5452609AC8AACACULL, 0xB50F973C891E8989ULL, 0xB42844A014501414ULL, 0xBADF425BE1A3E1E1ULL, 0xA62C4EB016581616ULL, 0xF774D2CD3AE83A3AULL, 0x06D2D06F69B96969ULL, 0x41122D4809240909ULL, 0xD7E0ADA770DD7070ULL, 0x6F7154D9B6E2B6B6ULL, 0x1EBDB7CED067D0D0ULL, 0xD6C77E3BED93EDEDULL, 0xE285DB2ECC17CCCCULL, 0x6884572A42154242ULL, 0x2C2DC2B4985A9898ULL, 0xED550E49A4AAA4A4ULL, 0x7550885D28A02828ULL, 0x86B831DA5C6D5C5CULL, 0x6BED3F93F8C7F8F8ULL, 0xC211A44486228686ULL,

0x3078C018601818D8ULL, 0x46AF05238C232326ULL, 0x91F97EC63FC6C6B8ULL, 0xCD6F13E887E8E8FBULL, 0x13A14C87268787CBULL, 0x6D62A9B8DAB8B811ULL, 0x0205080104010109ULL, 0x9E6E424F214F4F0DULL, 0x6CEEAD36D836369BULL, 0x510459A6A2A6A6FFULL, 0xB9BDDED26FD2D20CULL, 0xF706FBF5F3F5F50EULL, 0xF280EF79F9797996ULL, 0xDECE5F6FA16F6F30ULL, 0x3FEFFC917E91916DULL, 0xA407AA52555252F8ULL, 0xC0FD27609D606047ULL, 0x657689BCCABCBC35ULL, 0x2BCDAC9B569B9B37ULL, 0x018C048E028E8E8AULL, 0x5B1571A3B6A3A3D2ULL, 0x183C600C300C0C6CULL, 0xF68AFF7BF17B7B84ULL, 0x6AE1B535D4353580ULL, 0x3A69E81D741D1DF5ULL, 0xDD4753E0A7E0E0B3ULL, 0xB3ACF6D77BD7D721ULL, 0x99ED5EC22FC2C29CULL, 0x5C966D2EB82E2E43ULL, 0x967A624B314B4B29ULL, 0xE121A3FEDFFEFE5DULL, 0xAE168257415757D5ULL, 0x2A41A815541515BDULL, 0xEEB69F77C17777E8ULL, 0x6EEBA537DC373792ULL, 0xD7567BE5B3E5E59EULL, 0x23D98C9F469F9F13ULL, 0xFD17D3F0E7F0F023ULL, 0x947F6A4A354A4A20ULL, 0xA9959EDA4FDADA44ULL, 0xB025FA587D5858A2ULL, 0x8FCA06C903C9C9CFULL, 0x528D5529A429297CULL, 0x1422500A280A0A5AULL, 0x7F4FE1B1FEB1B150ULL, 0x5D1A69A0BAA0A0C9ULL, 0xD6DA7F6BB16B6B14ULL, 0x17AB5C852E8585D9ULL, 0x677381BDCEBDBD3CULL, 0xBA34D25D695D5D8FULL, 0x2050801040101090ULL, 0xF503F3F4F7F4F407ULL, 0x8BC016CB0BCBCBDDULL, 0x7CC6ED3EF83E3ED3ULL, 0x0A1128051405052DULL, 0xCEE61F6781676778ULL, 0xD55373E4B7E4E497ULL, 0x4EBB25279C272702ULL, 0x8258324119414173ULL, 0x0B9D2C8B168B8BA7ULL, 0x530151A7A6A7A7F6ULL, 0xFA94CF7DE97D7DB2ULL, 0x37FBDC956E959549ULL, 0xAD9F8ED847D8D856ULL, 0xEB308BFBCBFBFB70ULL, 0xC17123EE9FEEEECDULL, 0xF891C77CED7C7CBBULL, 0xCCE3176685666671ULL, 0xA78EA6DD53DDDD7BULL, 0x2E4BB8175C1717AFULL, 0x8E46024701474745ULL, 0x21DC849E429E9E1AULL, 0x89C51ECA0FCACAD4ULL, 0x5A99752DB42D2D58ULL, 0x637991BFC6BFBF2EULL, 0x0E1B38071C07073FULL, 0x472301AD8EADADACULL, 0xB42FEA5A755A5AB0ULL, 0x1BB56C83368383EFULL, 0x66FF8533CC3333B6ULL, 0xC6F23F639163635CULL, 0x040A100208020212ULL, 0x493839AA92AAAA93ULL, 0xE2A8AF71D97171DEULL, 0x8DCF0EC807C8C8C6ULL, 0x327DC819641919D1ULL, 0x927072493949493BULL, 0xAF9A86D943D9D95FULL, 0xF91DC3F2EFF2F231ULL, 0xDB484BE3ABE3E3A8ULL, 0xB62AE25B715B5BB9ULL, 0x0D9234881A8888BCULL, 0x29C8A49A529A9A3EULL, 0x4CBE2D269826260BULL, 0x64FA8D32C83232BFULL, 0x7D4AE9B0FAB0B059ULL, 0xCF6A1BE983E9E9F2ULL, 0x1E33780F3C0F0F77ULL, 0xB7A6E6D573D5D533ULL, 0x1DBA74803A8080F4ULL, 0x617C99BEC2BEBE27ULL, 0x87DE26CD13CDCDEBULL, 0x68E4BD34D0343489ULL, 0x90757A483D484832ULL, 0xE324ABFFDBFFFF54ULL, 0xF48FF77AF57A7A8DULL, 0x3DEAF4907A909064ULL, 0xBE3EC25F615F5F9DULL, 0x40A01D208020203DULL, 0xD0D56768BD68680FULL, 0x3472D01A681A1ACAULL, 0x412C19AE82AEAEB7ULL, 0x755EC9B4EAB4B47DULL, 0xA8199A544D5454CEULL, 0x3BE5EC937693937FULL, 0x44AA0D228822222FULL, 0xC8E907648D646463ULL, 0xFF12DBF1E3F1F12AULL, 0xE6A2BF73D17373CCULL, 0x245A901248121282ULL, 0x805D3A401D40407AULL, 0x1028400820080848ULL, 0x9BE856C32BC3C395ULL, 0xC57B33EC97ECECDFULL, 0xAB9096DB4BDBDB4DULL, 0x5F1F61A1BEA1A1C0ULL, 0x07831C8D0E8D8D91ULL, 0x7AC9F53DF43D3DC8ULL, 0x33F1CC976697975BULL, 0x0000000000000000ULL, 0x83D436CF1BCFCFF9ULL, 0x5687452BAC2B2B6EULL, 0xECB39776C57676E1ULL, 0x19B06482328282E6ULL, 0xB1A9FED67FD6D628ULL, 0x3677D81B6C1B1BC3ULL, 0x775BC1B5EEB5B574ULL, 0x432911AF86AFAFBEULL, 0xD4DF776AB56A6A1DULL, 0xA00DBA505D5050EAULL, 0x8A4C124509454557ULL, 0xFB18CBF3EBF3F338ULL, 0x60F09D30C03030ADULL, 0xC3742BEF9BEFEFC4ULL, 0x7EC3E53FFC3F3FDAULL, 0xAA1C9255495555C7ULL, 0x591079A2B2A2A2DBULL, 0xC96503EA8FEAEAE9ULL, 0xCAEC0F658965656AULL, 0x6968B9BAD2BABA03ULL, 0x5E93652FBC2F2F4AULL, 0x9DE74EC027C0C08EULL, 0xA181BEDE5FDEDE60ULL, 0x386CE01C701C1CFCULL, 0xE72EBBFDD3FDFD46ULL, 0x9A64524D294D4D1FULL, 0x39E0E49272929276ULL, 0xEABC8F75C97575FAULL, 0x0C1E300618060636ULL, 0x0998248A128A8AAEULL, 0x7940F9B2F2B2B24BULL, 0xD15963E6BFE6E685ULL, 0x1C36700E380E0E7EULL, 0x3E63F81F7C1F1FE7ULL, 0xC4F7376295626255ULL, 0xB5A3EED477D4D43AULL, 0x4D3229A89AA8A881ULL, 0x31F4C49662969652ULL, 0xEF3A9BF9C3F9F962ULL, 0x97F666C533C5C5A3ULL, 0x4AB1352594252510ULL, 0xB220F259795959ABULL, 0x15AE54842A8484D0ULL, 0xE4A7B772D57272C5ULL, 0x72DDD539E43939ECULL, 0x98615A4C2D4C4C16ULL, 0xBC3BCA5E655E5E94ULL, 0xF085E778FD78789FULL, 0x70D8DD38E03838E5ULL, 0x0586148C0A8C8C98ULL, 0xBFB2C6D163D1D117ULL, 0x570B41A5AEA5A5E4ULL, 0xD94D43E2AFE2E2A1ULL, 0xC2F82F619961614EULL, 0x7B45F1B3F6B3B342ULL, 0x42A5152184212134ULL, 0x25D6949C4A9C9C08ULL, 0x3C66F01E781E1EEEULL, 0x8652224311434361ULL, 0x93FC76C73BC7C7B1ULL, 0xE52BB3FCD7FCFC4FULL, 0x0814200410040424ULL, 0xA208B251595151E3ULL, 0x2FC7BC995E999925ULL, 0xDAC44F6DA96D6D22ULL, 0x1A39680D340D0D65ULL, 0xE93583FACFFAFA79ULL, 0xA384B6DF5BDFDF69ULL, 0xFC9BD77EE57E7EA9ULL, 0x48B43D2490242419ULL, 0x76D7C53BEC3B3BFEULL, 0x4B3D31AB96ABAB9AULL, 0x81D13ECE1FCECEF0ULL, 0x2255881144111199ULL, 0x03890C8F068F8F83ULL, 0x9C6B4A4E254E4E04ULL, 0x7351D1B7E6B7B766ULL, 0xCB600BEB8BEBEBE0ULL, 0x78CCFD3CF03C3CC1ULL, 0x1FBF7C813E8181FDULL, 0x35FED4946A949440ULL, 0xF30CEBF7FBF7F71CULL, 0x6F67A1B9DEB9B918ULL, 0x265F98134C13138BULL, 0x589C7D2CB02C2C51ULL, 0xBBB8D6D36BD3D305ULL, 0xD35C6BE7BBE7E78CULL, 0xDCCB576EA56E6E39ULL, 0x95F36EC437C4C4AAULL, 0x060F18030C03031BULL, 0xAC138A56455656DCULL, 0x88491A440D44445EULL, 0xFE9EDF7FE17F7FA0ULL, 0x4F3721A99EA9A988ULL, 0x54824D2AA82A2A67ULL, 0x6B6DB1BBD6BBBB0AULL, 0x9FE246C123C1C187ULL, 0xA602A253515353F1ULL, 0xA58BAEDC57DCDC72ULL, 0x1627580B2C0B0B53ULL, 0x27D39C9D4E9D9D01ULL, 0xD8C1476CAD6C6C2BULL, 0x62F59531C43131A4ULL, 0xE8B98774CD7474F3ULL, 0xF109E3F6FFF6F615ULL, 0x8C430A460546464CULL, 0x452609AC8AACACA5ULL, 0x0F973C891E8989B5ULL, 0x2844A014501414B4ULL, 0xDF425BE1A3E1E1BAULL, 0x2C4EB016581616A6ULL, 0x74D2CD3AE83A3AF7ULL, 0xD2D06F69B9696906ULL, 0x122D480924090941ULL, 0xE0ADA770DD7070D7ULL, 0x7154D9B6E2B6B66FULL, 0xBDB7CED067D0D01EULL, 0xC77E3BED93EDEDD6ULL, 0x85DB2ECC17CCCCE2ULL, 0x84572A4215424268ULL, 0x2DC2B4985A98982CULL, 0x550E49A4AAA4A4EDULL, 0x50885D28A0282875ULL, 0xB831DA5C6D5C5C86ULL, 0xED3F93F8C7F8F86BULL, 0x11A44486228686C2ULL,

0x78C018601818D830ULL, 0xAF05238C23232646ULL, 0xF97EC63FC6C6B891ULL, 0x6F13E887E8E8FBCDULL, 0xA14C87268787CB13ULL, 0x62A9B8DAB8B8116DULL, 0x0508010401010902ULL, 0x6E424F214F4F0D9EULL, 0xEEAD36D836369B6CULL, 0x0459A6A2A6A6FF51ULL, 0xBDDED26FD2D20CB9ULL, 0x06FBF5F3F5F50EF7ULL, 0x80EF79F9797996F2ULL, 0xCE5F6FA16F6F30DEULL, 0xEFFC917E91916D3FULL, 0x07AA52555252F8A4ULL, 0xFD27609D606047C0ULL, 0x7689BCCABCBC3565ULL, 0xCDAC9B569B9B372BULL, 0x8C048E028E8E8A01ULL, 0x1571A3B6A3A3D25BULL, 0x3C600C300C0C6C18ULL, 0x8AFF7BF17B7B84F6ULL, 0xE1B535D43535806AULL, 0x69E81D741D1DF53AULL, 0x4753E0A7E0E0B3DDULL, 0xACF6D77BD7D721B3ULL, 0xED5EC22FC2C29C99ULL, 0x966D2EB82E2E435CULL, 0x7A624B314B4B2996ULL, 0x21A3FEDFFEFE5DE1ULL, 0x168257415757D5AEULL, 0x41A815541515BD2AULL, 0xB69F77C17777E8EEULL, 0xEBA537DC3737926EULL, 0x567BE5B3E5E59ED7ULL, 0xD98C9F469F9F1323ULL, 0x17D3F0E7F0F023FDULL, 0x7F6A4A354A4A2094ULL, 0x959EDA4FDADA44A9ULL, 0x25FA587D5858A2B0ULL, 0xCA06C903C9C9CF8FULL, 0x8D5529A429297C52ULL, 0x22500A280A0A5A14ULL, 0x4FE1B1FEB1B1507FULL, 0x1A69A0BAA0A0C95DULL, 0xDA7F6BB16B6B14D6ULL, 0xAB5C852E8585D917ULL, 0x7381BDCEBDBD3C67ULL, 0x34D25D695D5D8FBAULL, 0x5080104010109020ULL, 0x03F3F4F7F4F407F5ULL, 0xC016CB0BCBCBDD8BULL, 0xC6ED3EF83E3ED37CULL, 0x1128051405052D0AULL, 0xE61F6781676778CEULL, 0x5373E4B7E4E497D5ULL, 0xBB25279C2727024EULL, 0x5832411941417382ULL, 0x9D2C8B168B8BA70BULL, 0x0151A7A6A7A7F653ULL, 0x94CF7DE97D7DB2FAULL, 0xFBDC956E95954937ULL, 0x9F8ED847D8D856ADULL, 0x308BFBCBFBFB70EBULL, 0x7123EE9FEEEECDC1ULL, 0x91C77CED7C7CBBF8ULL, 0xE3176685666671CCULL, 0x8EA6DD53DDDD7BA7ULL, 0x4BB8175C1717AF2EULL, 0x460247014747458EULL, 0xDC849E429E9E1A21ULL, 0xC51ECA0FCACAD489ULL, 0x99752DB42D2D585AULL, 0x7991BFC6BFBF2E63ULL, 0x1B38071C07073F0EULL, 0x2301AD8EADADAC47ULL, 0x2FEA5A755A5AB0B4ULL, 0xB56C83368383EF1BULL, 0xFF8533CC3333B666ULL, 0xF23F639163635CC6ULL, 0x0A10020802021204ULL, 0x3839AA92AAAA9349ULL, 0xA8AF71D97171DEE2ULL, 0xCF0EC807C8C8C68DULL, 0x7DC819641919D132ULL, 0x7072493949493B92ULL, 0x9A86D943D9D95FAFULL, 0x1DC3F2EFF2F231F9ULL, 0x484BE3ABE3E3A8DBULL, 0x2AE25B715B5BB9B6ULL, 0x9234881A8888BC0DULL, 0xC8A49A529A9A3E29ULL, 0xBE2D269826260B4CULL, 0xFA8D32C83232BF64ULL, 0x4AE9B0FAB0B0597DULL, 0x6A1BE983E9E9F2CFULL, 0x33780F3C0F0F771EULL, 0xA6E6D573D5D533B7ULL, 0xBA74803A8080F41DULL, 0x7C99BEC2BEBE2761ULL, 0xDE26CD13CDCDEB87ULL, 0xE4BD34D034348968ULL, 0x757A483D48483290ULL, 0x24ABFFDBFFFF54E3ULL, 0x8FF77AF57A7A8DF4ULL, 0xEAF4907A9090643DULL, 0x3EC25F615F5F9DBEULL, 0xA01D208020203D40ULL, 0xD56768BD68680FD0ULL, 0x72D01A681A1ACA34ULL, 0x2C19AE82AEAEB741ULL, 0x5EC9B4EAB4B47D75ULL, 0x199A544D5454CEA8ULL, 0xE5EC937693937F3BULL, 0xAA0D228822222F44ULL, 0xE907648D646463C8ULL, 0x12DBF1E3F1F12AFFULL, 0xA2BF73D17373CCE6ULL, 0x5A90124812128224ULL, 0x5D3A401D40407A80ULL, 0x2840082008084810ULL, 0xE856C32BC3C3959BULL, 0x7B33EC97ECECDFC5ULL, 0x9096DB4BDBDB4DABULL, 0x1F61A1BEA1A1C05FULL, 0x831C8D0E8D8D9107ULL, 0xC9F53DF43D3DC87AULL, 0xF1CC976697975B33ULL, 0x0000000000000000ULL, 0xD436CF1BCFCFF983ULL, 0x87452BAC2B2B6E56ULL, 0xB39776C57676E1ECULL, 0xB06482328282E619ULL, 0xA9FED67FD6D628B1ULL, 0x77D81B6C1B1BC336ULL, 0x5BC1B5EEB5B57477ULL, 0x2911AF86AFAFBE43ULL, 0xDF776AB56A6A1DD4ULL, 0x0DBA505D5050EAA0ULL, 0x4C1245094545578AULL, 0x18CBF3EBF3F338FBULL, 0xF09D30C03030AD60ULL, 0x742BEF9BEFEFC4C3ULL, 0xC3E53FFC3F3FDA7EULL, 0x1C9255495555C7AAULL, 0x1079A2B2A2A2DB59ULL, 0x6503EA8FEAEAE9C9ULL, 0xEC0F658965656ACAULL, 0x68B9BAD2BABA0369ULL, 0x93652FBC2F2F4A5EULL, 0xE74EC027C0C08E9DULL, 0x81BEDE5FDEDE60A1ULL, 0x6CE01C701C1CFC38ULL, 0x2EBBFDD3FDFD46E7ULL, 0x64524D294D4D1F9AULL, 0xE0E4927292927639ULL, 0xBC8F75C97575FAEAULL, 0x1E3006180606360CULL, 0x98248A128A8AAE09ULL, 0x40F9B2F2B2B24B79ULL, 0x5963E6BFE6E685D1ULL, 0x36700E380E0E7E1CULL, 0x63F81F7C1F1FE73EULL, 0xF7376295626255C4ULL, 0xA3EED477D4D43AB5ULL, 0x3229A89AA8A8814DULL, 0xF4C4966296965231ULL, 0x3A9BF9C3F9F962EFULL, 0xF666C533C5C5A397ULL, 0xB13525942525104AULL, 0x20F259795959ABB2ULL, 0xAE54842A8484D015ULL, 0xA7B772D57272C5E4ULL, 0xDDD539E43939EC72ULL, 0x615A4C2D4C4C1698ULL, 0x3BCA5E655E5E94BCULL, 0x85E778FD78789FF0ULL, 0xD8DD38E03838E570ULL, 0x86148C0A8C8C9805ULL, 0xB2C6D163D1D117BFULL, 0x0B41A5AEA5A5E457ULL, 0x4D43E2AFE2E2A1D9ULL, 0xF82F619961614EC2ULL, 0x45F1B3F6B3B3427BULL, 0xA515218421213442ULL, 0xD6949C4A9C9C0825ULL, 0x66F01E781E1EEE3CULL, 0x5222431143436186ULL, 0xFC76C73BC7C7B193ULL, 0x2BB3FCD7FCFC4FE5ULL, 0x1420041004042408ULL, 0x08B251595151E3A2ULL, 0xC7BC995E9999252FULL, 0xC44F6DA96D6D22DAULL, 0x39680D340D0D651AULL, 0x3583FACFFAFA79E9ULL, 0x84B6DF5BDFDF69A3ULL, 0x9BD77EE57E7EA9FCULL, 0xB43D249024241948ULL, 0xD7C53BEC3B3BFE76ULL, 0x3D31AB96ABAB9A4BULL, 0xD13ECE1FCECEF081ULL, 0x5588114411119922ULL, 0x890C8F068F8F8303ULL, 0x6B4A4E254E4E049CULL, 0x51D1B7E6B7B76673ULL, 0x600BEB8BEBEBE0CBULL, 0xCCFD3CF03C3CC178ULL, 0xBF7C813E8181FD1FULL, 0xFED4946A94944035ULL, 0x0CEBF7FBF7F71CF3ULL, 0x67A1B9DEB9B9186FULL, 0x5F98134C13138B26ULL, 0x9C7D2CB02C2C5158ULL, 0xB8D6D36BD3D305BBULL, 0x5C6BE7BBE7E78CD3ULL, 0xCB576EA56E6E39DCULL, 0xF36EC437C4C4AA95ULL, 0x0F18030C03031B06ULL, 0x138A56455656DCACULL, 0x491A440D44445E88ULL, 0x9EDF7FE17F7FA0FEULL, 0x3721A99EA9A9884FULL, 0x824D2AA82A2A6754ULL, 0x6DB1BBD6BBBB0A6BULL, 0xE246C123C1C1879FULL, 0x02A253515353F1A6ULL, 0x8BAEDC57DCDC72A5ULL, 0x27580B2C0B0B5316ULL, 0xD39C9D4E9D9D0127ULL, 0xC1476CAD6C6C2BD8ULL, 0xF59531C43131A462ULL, 0xB98774CD7474F3E8ULL, 0x09E3F6FFF6F615F1ULL, 0x430A460546464C8CULL, 0x2609AC8AACACA545ULL, 0x973C891E8989B50FULL, 0x44A014501414B428ULL, 0x425BE1A3E1E1BADFULL, 0x4EB016581616A62CULL, 0xD2CD3AE83A3AF774ULL, 0xD06F69B9696906D2ULL, 0x2D48092409094112ULL, 0xADA770DD7070D7E0ULL, 0x54D9B6E2B6B66F71ULL, 0xB7CED067D0D01EBDULL, 0x7E3BED93EDEDD6C7ULL, 0xDB2ECC17CCCCE285ULL, 0x572A421542426884ULL, 0xC2B4985A98982C2DULL, 0x0E49A4AAA4A4ED55ULL, 0x885D28A028287550ULL, 0x31DA5C6D5C5C86B8ULL, 0x3F93F8C7F8F86BEDULL, 0xA44486228686C211ULL,

0xC018601818D83078ULL, 0x05238C23232646AFULL, 0x7EC63FC6C6B891F9ULL, 0x13E887E8E8FBCD6FULL, 0x4C87268787CB13A1ULL, 0xA9B8DAB8B8116D62ULL, 0x0801040101090205ULL, 0x424F214F4F0D9E6EULL, 0xAD36D836369B6CEEULL, 0x59A6A2A6A6FF5104ULL, 0xDED26FD2D20CB9BDULL, 0xFBF5F3F5F50EF706ULL, 0xEF79F9797996F280ULL, 0x5F6FA16F6F30DECEULL, 0xFC917E91916D3FEFULL, 0xAA52555252F8A407ULL, 0x27609D606047C0FDULL, 0x89BCCABCBC356576ULL, 0xAC9B569B9B372BCDULL, 0x048E028E8E8A018CULL, 0x71A3B6A3A3D25B15ULL, 0x600C300C0C6C183CULL, 0xFF7BF17B7B84F68AULL, 0xB535D43535806AE1ULL, 0xE81D741D1DF53A69ULL, 0x53E0A7E0E0B3DD47ULL, 0xF6D77BD7D721B3ACULL, 0x5EC22FC2C29C99EDULL, 0x6D2EB82E2E435C96ULL, 0x624B314B4B29967AULL, 0xA3FEDFFEFE5DE121ULL, 0x8257415757D5AE16ULL, 0xA815541515BD2A41ULL, 0x9F77C17777E8EEB6ULL, 0xA537DC3737926EEBULL, 0x7BE5B3E5E59ED756ULL, 0x8C9F469F9F1323D9ULL, 0xD3F0E7F0F023FD17ULL, 0x6A4A354A4A20947FULL, 0x9EDA4FDADA44A995ULL, 0xFA587D5858A2B025ULL, 0x06C903C9C9CF8FCAULL, 0x5529A429297C528DULL, 0x500A280A0A5A1422ULL, 0xE1B1FEB1B1507F4FULL, 0x69A0BAA0A0C95D1AULL, 0x7F6BB16B6B14D6DAULL, 0x5C852E8585D917ABULL, 0x81BDCEBDBD3C6773ULL, 0xD25D695D5D8FBA34ULL, 0x8010401010902050ULL, 0xF3F4F7F4F407F503ULL, 0x16CB0BCBCBDD8BC0ULL, 0xED3EF83E3ED37CC6ULL, 0x28051405052D0A11ULL, 0x1F6781676778CEE6ULL, 0x73E4B7E4E497D553ULL, 0x25279C2727024EBBULL, 0x3241194141738258ULL, 0x2C8B168B8BA70B9DULL, 0x51A7A6A7A7F65301ULL, 0xCF7DE97D7DB2FA94ULL, 0xDC956E95954937FBULL, 0x8ED847D8D856AD9FULL, 0x8BFBCBFBFB70EB30ULL, 0x23EE9FEEEECDC171ULL, 0xC77CED7C7CBBF891ULL, 0x176685666671CCE3ULL, 0xA6DD53DDDD7BA78EULL, 0xB8175C1717AF2E4BULL, 0x0247014747458E46ULL, 0x849E429E9E1A21DCULL, 0x1ECA0FCACAD489C5ULL, 0x752DB42D2D585A99ULL, 0x91BFC6BFBF2E6379ULL, 0x38071C07073F0E1BULL, 0x01AD8EADADAC4723ULL, 0xEA5A755A5AB0B42FULL, 0x6C83368383EF1BB5ULL, 0x8533CC3333B666FFULL, 0x3F639163635CC6F2ULL, 0x100208020212040AULL, 0x39AA92AAAA934938ULL, 0xAF71D97171DEE2A8ULL, 0x0EC807C8C8C68DCFULL, 0xC819641919D1327DULL, 0x72493949493B9270ULL, 0x86D943D9D95FAF9AULL, 0xC3F2EFF2F231F91DULL, 0x4BE3ABE3E3A8DB48ULL, 0xE25B715B5BB9B62AULL, 0x34881A8888BC0D92ULL, 0xA49A529A9A3E29C8ULL, 0x2D269826260B4CBEULL, 0x8D32C83232BF64FAULL, 0xE9B0FAB0B0597D4AULL, 0x1BE983E9E9F2CF6AULL, 0x780F3C0F0F771E33ULL, 0xE6D573D5D533B7A6ULL, 0x74803A8080F41DBAULL, 0x99BEC2BEBE27617CULL, 0x26CD13CDCDEB87DEULL, 0xBD34D034348968E4ULL, 0x7A483D4848329075ULL, 0xABFFDBFFFF54E324ULL, 0xF77AF57A7A8DF48FULL, 0xF4907A9090643DEAULL, 0xC25F615F5F9DBE3EULL, 0x1D208020203D40A0ULL, 0x6768BD68680FD0D5ULL, 0xD01A681A1ACA3472ULL, 0x19AE82AEAEB7412CULL, 0xC9B4EAB4B47D755EULL, 0x9A544D5454CEA819ULL, 0xEC937693937F3BE5ULL, 0x0D228822222F44AAULL, 0x07648D646463C8E9ULL, 0xDBF1E3F1F12AFF12ULL, 0xBF73D17373CCE6A2ULL, 0x901248121282245AULL, 0x3A401D40407A805DULL, 0x4008200808481028ULL, 0x56C32BC3C3959BE8ULL, 0x33EC97ECECDFC57BULL, 0x96DB4BDBDB4DAB90ULL, 0x61A1BEA1A1C05F1FULL, 0x1C8D0E8D8D910783ULL, 0xF53DF43D3DC87AC9ULL, 0xCC976697975B33F1ULL, 0x0000000000000000ULL, 0x36CF1BCFCFF983D4ULL, 0x452BAC2B2B6E5687ULL, 0x9776C57676E1ECB3ULL, 0x6482328282E619B0ULL, 0xFED67FD6D628B1A9ULL, 0xD81B6C1B1BC33677ULL, 0xC1B5EEB5B574775BULL, 0x11AF86AFAFBE4329ULL, 0x776AB56A6A1DD4DFULL, 0xBA505D5050EAA00DULL, 0x1245094545578A4CULL, 0xCBF3EBF3F338FB18ULL, 0x9D30C03030AD60F0ULL, 0x2BEF9BEFEFC4C374ULL, 0xE53FFC3F3FDA7EC3ULL, 0x9255495555C7AA1CULL, 0x79A2B2A2A2DB5910ULL, 0x03EA8FEAEAE9C965ULL, 0x0F658965656ACAECULL, 0xB9BAD2BABA036968ULL, 0x652FBC2F2F4A5E93ULL, 0x4EC027C0C08E9DE7ULL, 0xBEDE5FDEDE60A181ULL, 0xE01C701C1CFC386CULL, 0xBBFDD3FDFD46E72EULL, 0x524D294D4D1F9A64ULL, 0xE4927292927639E0ULL, 0x8F75C97575FAEABCULL, 0x3006180606360C1EULL, 0x248A128A8AAE0998ULL, 0xF9B2F2B2B24B7940ULL, 0x63E6BFE6E685D159ULL, 0x700E380E0E7E1C36ULL, 0xF81F7C1F1FE73E63ULL, 0x376295626255C4F7ULL, 0xEED477D4D43AB5A3ULL, 0x29A89AA8A8814D32ULL, 0xC4966296965231F4ULL, 0x9BF9C3F9F962EF3AULL, 0x66C533C5C5A397F6ULL, 0x3525942525104AB1ULL, 0xF259795959ABB220ULL, 0x54842A8484D015AEULL, 0xB772D57272C5E4A7ULL, 0xD539E43939EC72DDULL, 0x5A4C2D4C4C169861ULL, 0xCA5E655E5E94BC3BULL, 0xE778FD78789FF085ULL, 0xDD38E03838E570D8ULL, 0x148C0A8C8C980586ULL, 0xC6D163D1D117BFB2ULL, 0x41A5AEA5A5E4570BULL, 0x43E2AFE2E2A1D94DULL, 0x2F619961614EC2F8ULL, 0xF1B3F6B3B3427B45ULL, 0x15218421213442A5ULL, 0x949C4A9C9C0825D6ULL, 0xF01E781E1EEE3C66ULL, 0x2243114343618652ULL, 0x76C73BC7C7B193FCULL, 0xB3FCD7FCFC4FE52BULL, 0x2004100404240814ULL, 0xB251595151E3A208ULL, 0xBC995E9999252FC7ULL, 0x4F6DA96D6D22DAC4ULL, 0x680D340D0D651A39ULL, 0x83FACFFAFA79E935ULL, 0xB6DF5BDFDF69A384ULL, 0xD77EE57E7EA9FC9BULL, 0x3D249024241948B4ULL, 0xC53BEC3B3BFE76D7ULL, 0x31AB96ABAB9A4B3DULL, 0x3ECE1FCECEF081D1ULL, 0x8811441111992255ULL, 0x0C8F068F8F830389ULL, 0x4A4E254E4E049C6BULL, 0xD1B7E6B7B7667351ULL, 0x0BEB8BEBEBE0CB60ULL, 0xFD3CF03C3CC178CCULL, 0x7C813E8181FD1FBFULL, 0xD4946A94944035FEULL, 0xEBF7FBF7F71CF30CULL, 0xA1B9DEB9B9186F67ULL, 0x98134C13138B265FULL, 0x7D2CB02C2C51589CULL, 0xD6D36BD3D305BBB8ULL, 0x6BE7BBE7E78CD35CULL, 0x576EA56E6E39DCCBULL, 0x6EC437C4C4AA95F3ULL, 0x18030C03031B060FULL, 0x8A56455656DCAC13ULL, 0x1A440D44445E8849ULL, 0xDF7FE17F7FA0FE9EULL, 0x21A99EA9A9884F37ULL, 0x4D2AA82A2A675482ULL, 0xB1BBD6BBBB0A6B6DULL, 0x46C123C1C1879FE2ULL, 0xA253515353F1A602ULL, 0xAEDC57DCDC72A58BULL, 0x580B2C0B0B531627ULL, 0x9C9D4E9D9D0127D3ULL, 0x476CAD6C6C2BD8C1ULL, 0x9531C43131A462F5ULL, 0x8774CD7474F3E8B9ULL, 0xE3F6FFF6F615F109ULL, 0x0A460546464C8C43ULL, 0x09AC8AACACA54526ULL, 0x3C891E8989B50F97ULL, 0xA014501414B42844ULL, 0x5BE1A3E1E1BADF42ULL, 0xB016581616A62C4EULL, 0xCD3AE83A3AF774D2ULL, 0x6F69B9696906D2D0ULL, 0x480924090941122DULL, 0xA770DD7070D7E0ADULL, 0xD9B6E2B6B66F7154ULL, 0xCED067D0D01EBDB7ULL, 0x3BED93EDEDD6C77EULL, 0x2ECC17CCCCE285DBULL, 0x2A42154242688457ULL, 0xB4985A98982C2DC2ULL, 0x49A4AAA4A4ED550EULL, 0x5D28A02828755088ULL, 0xDA5C6D5C5C86B831ULL, 0x93F8C7F8F86BED3FULL, 0x4486228686C211A4ULL,

0x18601818D83078C0ULL, 0x238C23232646AF05ULL, 0xC63FC6C6B891F97EULL, 0xE887E8E8FBCD6F13ULL, 0x87268787CB13A14CULL, 0xB8DAB8B8116D62A9ULL, 0x0104010109020508ULL, 0x4F214F4F0D9E6E42ULL, 0x36D836369B6CEEADULL, 0xA6A2A6A6FF510459ULL, 0xD26FD2D20CB9BDDEULL, 0xF5F3F5F50EF706FBULL, 0x79F9797996F280EFULL, 0x6FA16F6F30DECE5FULL, 0x917E91916D3FEFFCULL, 0x52555252F8A407AAULL, 0x609D606047C0FD27ULL, 0xBCCABCBC35657689ULL, 0x9B569B9B372BCDACULL, 0x8E028E8E8A018C04ULL, 0xA3B6A3A3D25B1571ULL, 0x0C300C0C6C183C60ULL, 0x7BF17B7B84F68AFFULL, 0x35D43535806AE1B5ULL, 0x1D741D1DF53A69E8ULL, 0xE0A7E0E0B3DD4753ULL, 0xD77BD7D721B3ACF6ULL, 0xC22FC2C29C99ED5EULL, 0x2EB82E2E435C966DULL, 0x4B314B4B29967A62ULL, 0xFEDFFEFE5DE121A3ULL, 0x57415757D5AE1682ULL, 0x15541515BD2A41A8ULL, 0x77C17777E8EEB69FULL, 0x37DC3737926EEBA5ULL, 0xE5B3E5E59ED7567BULL, 0x9F469F9F1323D98CULL, 0xF0E7F0F023FD17D3ULL, 0x4A354A4A20947F6AULL, 0xDA4FDADA44A9959EULL, 0x587D5858A2B025FAULL, 0xC903C9C9CF8FCA06ULL, 0x29A429297C528D55ULL, 0x0A280A0A5A142250ULL, 0xB1FEB1B1507F4FE1ULL, 0xA0BAA0A0C95D1A69ULL, 0x6BB16B6B14D6DA7FULL, 0x852E8585D917AB5CULL, 0xBDCEBDBD3C677381ULL, 0x5D695D5D8FBA34D2ULL, 0x1040101090205080ULL, 0xF4F7F4F407F503F3ULL, 0xCB0BCBCBDD8BC016ULL, 0x3EF83E3ED37CC6EDULL, 0x051405052D0A1128ULL, 0x6781676778CEE61FULL, 0xE4B7E4E497D55373ULL, 0x279C2727024EBB25ULL, 0x4119414173825832ULL, 0x8B168B8BA70B9D2CULL, 0xA7A6A7A7F6530151ULL, 0x7DE97D7DB2FA94CFULL, 0x956E95954937FBDCULL, 0xD847D8D856AD9F8EULL, 0xFBCBFBFB70EB308BULL, 0xEE9FEEEECDC17123ULL, 0x7CED7C7CBBF891C7ULL, 0x6685666671CCE317ULL, 0xDD53DDDD7BA78EA6ULL, 0x175C1717AF2E4BB8ULL, 0x47014747458E4602ULL, 0x9E429E9E1A21DC84ULL, 0xCA0FCACAD489C51EULL, 0x2DB42D2D585A9975ULL, 0xBFC6BFBF2E637991ULL, 0x071C07073F0E1B38ULL, 0xAD8EADADAC472301ULL, 0x5A755A5AB0B42FEAULL, 0x83368383EF1BB56CULL, 0x33CC3333B666FF85ULL, 0x639163635CC6F23FULL, 0x0208020212040A10ULL, 0xAA92AAAA93493839ULL, 0x71D97171DEE2A8AFULL, 0xC807C8C8C68DCF0EULL, 0x19641919D1327DC8ULL, 0x493949493B927072ULL, 0xD943D9D95FAF9A86ULL, 0xF2EFF2F231F91DC3ULL, 0xE3ABE3E3A8DB484BULL, 0x5B715B5BB9B62AE2ULL, 0x881A8888BC0D9234ULL, 0x9A529A9A3E29C8A4ULL, 0x269826260B4CBE2DULL, 0x32C83232BF64FA8DULL, 0xB0FAB0B0597D4AE9ULL, 0xE983E9E9F2CF6A1BULL, 0x0F3C0F0F771E3378ULL, 0xD573D5D533B7A6E6ULL, 0x803A8080F41DBA74ULL, 0xBEC2BEBE27617C99ULL, 0xCD13CDCDEB87DE26ULL, 0x34D034348968E4BDULL, 0x483D48483290757AULL, 0xFFDBFFFF54E324ABULL, 0x7AF57A7A8DF48FF7ULL, 0x907A9090643DEAF4ULL, 0x5F615F5F9DBE3EC2ULL, 0x208020203D40A01DULL, 0x68BD68680FD0D567ULL, 0x1A681A1ACA3472D0ULL, 0xAE82AEAEB7412C19ULL, 0xB4EAB4B47D755EC9ULL, 0x544D5454CEA8199AULL, 0x937693937F3BE5ECULL, 0x228822222F44AA0DULL, 0x648D646463C8E907ULL, 0xF1E3F1F12AFF12DBULL, 0x73D17373CCE6A2BFULL, 0x1248121282245A90ULL, 0x401D40407A805D3AULL, 0x0820080848102840ULL, 0xC32BC3C3959BE856ULL, 0xEC97ECECDFC57B33ULL, 0xDB4BDBDB4DAB9096ULL, 0xA1BEA1A1C05F1F61ULL, 0x8D0E8D8D9107831CULL, 0x3DF43D3DC87AC9F5ULL, 0x976697975B33F1CCULL, 0x0000000000000000ULL, 0xCF1BCFCFF983D436ULL, 0x2BAC2B2B6E568745ULL, 0x76C57676E1ECB397ULL, 0x82328282E619B064ULL, 0xD67FD6D628B1A9FEULL, 0x1B6C1B1BC33677D8ULL, 0xB5EEB5B574775BC1ULL, 0xAF86AFAFBE432911ULL, 0x6AB56A6A1DD4DF77ULL, 0x505D5050EAA00DBAULL, 0x45094545578A4C12ULL, 0xF3EBF3F338FB18CBULL, 0x30C03030AD60F09DULL, 0xEF9BEFEFC4C3742BULL, 0x3FFC3F3FDA7EC3E5ULL, 0x55495555C7AA1C92ULL, 0xA2B2A2A2DB591079ULL, 0xEA8FEAEAE9C96503ULL, 0x658965656ACAEC0FULL, 0xBAD2BABA036968B9ULL, 0x2FBC2F2F4A5E9365ULL, 0xC027C0C08E9DE74EULL, 0xDE5FDEDE60A181BEULL, 0x1C701C1CFC386CE0ULL, 0xFDD3FDFD46E72EBBULL, 0x4D294D4D1F9A6452ULL, 0x927292927639E0E4ULL, 0x75C97575FAEABC8FULL, 0x06180606360C1E30ULL, 0x8A128A8AAE099824ULL, 0xB2F2B2B24B7940F9ULL, 0xE6BFE6E685D15963ULL, 0x0E380E0E7E1C3670ULL, 0x1F7C1F1FE73E63F8ULL, 0x6295626255C4F737ULL, 0xD477D4D43AB5A3EEULL, 0xA89AA8A8814D3229ULL, 0x966296965231F4C4ULL, 0xF9C3F9F962EF3A9BULL, 0xC533C5C5A397F666ULL, 0x25942525104AB135ULL, 0x59795959ABB220F2ULL, 0x842A8484D015AE54ULL, 0x72D57272C5E4A7B7ULL, 0x39E43939EC72DDD5ULL, 0x4C2D4C4C1698615AULL, 0x5E655E5E94BC3BCAULL, 0x78FD78789FF085E7ULL, 0x38E03838E570D8DDULL, 0x8C0A8C8C98058614ULL, 0xD163D1D117BFB2C6ULL, 0xA5AEA5A5E4570B41ULL, 0xE2AFE2E2A1D94D43ULL, 0x619961614EC2F82FULL, 0xB3F6B3B3427B45F1ULL, 0x218421213442A515ULL, 0x9C4A9C9C0825D694ULL, 0x1E781E1EEE3C66F0ULL, 0x4311434361865222ULL, 0xC73BC7C7B193FC76ULL, 0xFCD7FCFC4FE52BB3ULL, 0x0410040424081420ULL, 0x51595151E3A208B2ULL, 0x995E9999252FC7BCULL, 0x6DA96D6D22DAC44FULL, 0x0D340D0D651A3968ULL, 0xFACFFAFA79E93583ULL, 0xDF5BDFDF69A384B6ULL, 0x7EE57E7EA9FC9BD7ULL, 0x249024241948B43DULL, 0x3BEC3B3BFE76D7C5ULL, 0xAB96ABAB9A4B3D31ULL, 0xCE1FCECEF081D13EULL, 0x1144111199225588ULL, 0x8F068F8F8303890CULL, 0x4E254E4E049C6B4AULL, 0xB7E6B7B7667351D1ULL, 0xEB8BEBEBE0CB600BULL, 0x3CF03C3CC178CCFDULL, 0x813E8181FD1FBF7CULL, 0x946A94944035FED4ULL, 0xF7FBF7F71CF30CEBULL, 0xB9DEB9B9186F67A1ULL, 0x134C13138B265F98ULL, 0x2CB02C2C51589C7DULL, 0xD36BD3D305BBB8D6ULL, 0xE7BBE7E78CD35C6BULL, 0x6EA56E6E39DCCB57ULL, 0xC437C4C4AA95F36EULL, 0x030C03031B060F18ULL, 0x56455656DCAC138AULL, 0x440D44445E88491AULL, 0x7FE17F7FA0FE9EDFULL, 0xA99EA9A9884F3721ULL, 0x2AA82A2A6754824DULL, 0xBBD6BBBB0A6B6DB1ULL, 0xC123C1C1879FE246ULL, 0x53515353F1A602A2ULL, 0xDC57DCDC72A58BAEULL, 0x0B2C0B0B53162758ULL, 0x9D4E9D9D0127D39CULL, 0x6CAD6C6C2BD8C147ULL, 0x31C43131A462F595ULL, 0x74CD7474F3E8B987ULL, 0xF6FFF6F615F109E3ULL, 0x460546464C8C430AULL, 0xAC8AACACA5452609ULL, 0x891E8989B50F973CULL, 0x14501414B42844A0ULL, 0xE1A3E1E1BADF425BULL, 0x16581616A62C4EB0ULL, 0x3AE83A3AF774D2CDULL, 0x69B9696906D2D06FULL, 0x0924090941122D48ULL, 0x70DD7070D7E0ADA7ULL, 0xB6E2B6B66F7154D9ULL, 0xD067D0D01EBDB7CEULL, 0xED93EDEDD6C77E3BULL, 0xCC17CCCCE285DB2EULL, 0x421542426884572AULL, 0x985A98982C2DC2B4ULL, 0xA4AAA4A4ED550E49ULL, 0x28A028287550885DULL, 0x5C6D5C5C86B831DAULL, 0xF8C7F8F86BED3F93ULL, 0x86228686C211A444ULL,

0x601818D83078C018ULL, 0x8C23232646AF0523ULL, 0x3FC6C6B891F97EC6ULL, 0x87E8E8FBCD6F13E8ULL, 0x268787CB13A14C87ULL, 0xDAB8B8116D62A9B8ULL, 0x0401010902050801ULL, 0x214F4F0D9E6E424FULL, 0xD836369B6CEEAD36ULL, 0xA2A6A6FF510459A6ULL, 0x6FD2D20CB9BDDED2ULL, 0xF3F5F50EF706FBF5ULL, 0xF9797996F280EF79ULL, 0xA16F6F30DECE5F6FULL, 0x7E91916D3FEFFC91ULL, 0x555252F8A407AA52ULL, 0x9D606047C0FD2760ULL, 0xCABCBC35657689BCULL, 0x569B9B372BCDAC9BULL, 0x028E8E8A018C048EULL, 0xB6A3A3D25B1571A3ULL, 0x300C0C6C183C600CULL, 0xF17B7B84F68AFF7BULL, 0xD43535806AE1B535ULL, 0x741D1DF53A69E81DULL, 0xA7E0E0B3DD4753E0ULL, 0x7BD7D721B3ACF6D7ULL, 0x2FC2C29C99ED5EC2ULL, 0xB82E2E435C966D2EULL, 0x314B4B29967A624BULL, 0xDFFEFE5DE121A3FEULL, 0x415757D5AE168257ULL, 0x541515BD2A41A815ULL, 0xC17777E8EEB69F77ULL, 0xDC3737926EEBA537ULL, 0xB3E5E59ED7567BE5ULL, 0x469F9F1323D98C9FULL, 0xE7F0F023FD17D3F0ULL, 0x354A4A20947F6A4AULL, 0x4FDADA44A9959EDAULL, 0x7D5858A2B025FA58ULL, 0x03C9C9CF8FCA06C9ULL, 0xA429297C528D5529ULL, 0x280A0A5A1422500AULL, 0xFEB1B1507F4FE1B1ULL, 0xBAA0A0C95D1A69A0ULL, 0xB16B6B14D6DA7F6BULL, 0x2E8585D917AB5C85ULL, 0xCEBDBD3C677381BDULL, 0x695D5D8FBA34D25DULL, 0x4010109020508010ULL, 0xF7F4F407F503F3F4ULL, 0x0BCBCBDD8BC016CBULL, 0xF83E3ED37CC6ED3EULL, 0x1405052D0A112805ULL, 0x81676778CEE61F67ULL, 0xB7E4E497D55373E4ULL, 0x9C2727024EBB2527ULL, 0x1941417382583241ULL, 0x168B8BA70B9D2C8BULL, 0xA6A7A7F6530151A7ULL, 0xE97D7DB2FA94CF7DULL, 0x6E95954937FBDC95ULL, 0x47D8D856AD9F8ED8ULL, 0xCBFBFB70EB308BFBULL, 0x9FEEEECDC17123EEULL, 0xED7C7CBBF891C77CULL, 0x85666671CCE31766ULL, 0x53DDDD7BA78EA6DDULL, 0x5C1717AF2E4BB817ULL, 0x014747458E460247ULL, 0x429E9E1A21DC849EULL, 0x0FCACAD489C51ECAULL, 0xB42D2D585A99752DULL, 0xC6BFBF2E637991BFULL, 0x1C07073F0E1B3807ULL, 0x8EADADAC472301ADULL, 0x755A5AB0B42FEA5AULL, 0x368383EF1BB56C83ULL, 0xCC3333B666FF8533ULL, 0x9163635CC6F23F63ULL, 0x08020212040A1002ULL, 0x92AAAA93493839AAULL, 0xD97171DEE2A8AF71ULL, 0x07C8C8C68DCF0EC8ULL, 0x641919D1327DC819ULL, 0x3949493B92707249ULL, 0x43D9D95FAF9A86D9ULL, 0xEFF2F231F91DC3F2ULL, 0xABE3E3A8DB484BE3ULL, 0x715B5BB9B62AE25BULL, 0x1A8888BC0D923488ULL, 0x529A9A3E29C8A49AULL, 0x9826260B4CBE2D26ULL, 0xC83232BF64FA8D32ULL, 0xFAB0B0597D4AE9B0ULL, 0x83E9E9F2CF6A1BE9ULL, 0x3C0F0F771E33780FULL, 0x73D5D533B7A6E6D5ULL, 0x3A8080F41DBA7480ULL, 0xC2BEBE27617C99BEULL, 0x13CDCDEB87DE26CDULL, 0xD034348968E4BD34ULL, 0x3D48483290757A48ULL, 0xDBFFFF54E324ABFFULL, 0xF57A7A8DF48FF77AULL, 0x7A9090643DEAF490ULL, 0x615F5F9DBE3EC25FULL, 0x8020203D40A01D20ULL, 0xBD68680FD0D56768ULL, 0x681A1ACA3472D01AULL, 0x82AEAEB7412C19AEULL, 0xEAB4B47D755EC9B4ULL, 0x4D5454CEA8199A54ULL, 0x7693937F3BE5EC93ULL, 0x8822222F44AA0D22ULL, 0x8D646463C8E90764ULL, 0xE3F1F12AFF12DBF1ULL, 0xD17373CCE6A2BF73ULL, 0x48121282245A9012ULL, 0x1D40407A805D3A40ULL, 0x2008084810284008ULL, 0x2BC3C3959BE856C3ULL, 0x97ECECDFC57B33ECULL, 0x4BDBDB4DAB9096DBULL, 0xBEA1A1C05F1F61A1ULL, 0x0E8D8D9107831C8DULL, 0xF43D3DC87AC9F53DULL, 0x6697975B33F1CC97ULL, 0x0000000000000000ULL, 0x1BCFCFF983D436CFULL, 0xAC2B2B6E5687452BULL, 0xC57676E1ECB39776ULL, 0x328282E619B06482ULL, 0x7FD6D628B1A9FED6ULL, 0x6C1B1BC33677D81BULL, 0xEEB5B574775BC1B5ULL, 0x86AFAFBE432911AFULL, 0xB56A6A1DD4DF776AULL, 0x5D5050EAA00DBA50ULL, 0x094545578A4C1245ULL, 0xEBF3F338FB18CBF3ULL, 0xC03030AD60F09D30ULL, 0x9BEFEFC4C3742BEFULL, 0xFC3F3FDA7EC3E53FULL, 0x495555C7AA1C9255ULL, 0xB2A2A2DB591079A2ULL, 0x8FEAEAE9C96503EAULL, 0x8965656ACAEC0F65ULL, 0xD2BABA036968B9BAULL, 0xBC2F2F4A5E93652FULL, 0x27C0C08E9DE74EC0ULL, 0x5FDEDE60A181BEDEULL, 0x701C1CFC386CE01CULL, 0xD3FDFD46E72EBBFDULL, 0x294D4D1F9A64524DULL, 0x7292927639E0E492ULL, 0xC97575FAEABC8F75ULL, 0x180606360C1E3006ULL, 0x128A8AAE0998248AULL, 0xF2B2B24B7940F9B2ULL, 0xBFE6E685D15963E6ULL, 0x380E0E7E1C36700EULL, 0x7C1F1FE73E63F81FULL, 0x95626255C4F73762ULL, 0x77D4D43AB5A3EED4ULL, 0x9AA8A8814D3229A8ULL, 0x6296965231F4C496ULL, 0xC3F9F962EF3A9BF9ULL, 0x33C5C5A397F666C5ULL, 0x942525104AB13525ULL, 0x795959ABB220F259ULL, 0x2A8484D015AE5484ULL, 0xD57272C5E4A7B772ULL, 0xE43939EC72DDD539ULL, 0x2D4C4C1698615A4CULL, 0x655E5E94BC3BCA5EULL, 0xFD78789FF085E778ULL, 0xE03838E570D8DD38ULL, 0x0A8C8C980586148CULL, 0x63D1D117BFB2C6D1ULL, 0xAEA5A5E4570B41A5ULL, 0xAFE2E2A1D94D43E2ULL, 0x9961614EC2F82F61ULL, 0xF6B3B3427B45F1B3ULL, 0x8421213442A51521ULL, 0x4A9C9C0825D6949CULL, 0x781E1EEE3C66F01EULL, 0x1143436186522243ULL, 0x3BC7C7B193FC76C7ULL, 0xD7FCFC4FE52BB3FCULL, 0x1004042408142004ULL, 0x595151E3A208B251ULL, 0x5E9999252FC7BC99ULL, 0xA96D6D22DAC44F6DULL, 0x340D0D651A39680DULL, 0xCFFAFA79E93583FAULL, 0x5BDFDF69A384B6DFULL, 0xE57E7EA9FC9BD77EULL, 0x9024241948B43D24ULL, 0xEC3B3BFE76D7C53BULL, 0x96ABAB9A4B3D31ABULL, 0x1FCECEF081D13ECEULL, 0x4411119922558811ULL, 0x068F8F8303890C8FULL, 0x254E4E049C6B4A4EULL, 0xE6B7B7667351D1B7ULL, 0x8BEBEBE0CB600BEBULL, 0xF03C3CC178CCFD3CULL, 0x3E8181FD1FBF7C81ULL, 0x6A94944035FED494ULL, 0xFBF7F71CF30CEBF7ULL, 0xDEB9B9186F67A1B9ULL, 0x4C13138B265F9813ULL, 0xB02C2C51589C7D2CULL, 0x6BD3D305BBB8D6D3ULL, 0xBBE7E78CD35C6BE7ULL, 0xA56E6E39DCCB576EULL, 0x37C4C4AA95F36EC4ULL, 0x0C03031B060F1803ULL, 0x455656DCAC138A56ULL, 0x0D44445E88491A44ULL, 0xE17F7FA0FE9EDF7FULL, 0x9EA9A9884F3721A9ULL, 0xA82A2A6754824D2AULL, 0xD6BBBB0A6B6DB1BBULL, 0x23C1C1879FE246C1ULL, 0x515353F1A602A253ULL, 0x57DCDC72A58BAEDCULL, 0x2C0B0B531627580BULL, 0x4E9D9D0127D39C9DULL, 0xAD6C6C2BD8C1476CULL, 0xC43131A462F59531ULL, 0xCD7474F3E8B98774ULL, 0xFFF6F615F109E3F6ULL, 0x0546464C8C430A46ULL, 0x8AACACA5452609ACULL, 0x1E8989B50F973C89ULL, 0x501414B42844A014ULL, 0xA3E1E1BADF425BE1ULL, 0x581616A62C4EB016ULL, 0xE83A3AF774D2CD3AULL, 0xB9696906D2D06F69ULL, 0x24090941122D4809ULL, 0xDD7070D7E0ADA770ULL, 0xE2B6B66F7154D9B6ULL, 0x67D0D01EBDB7CED0ULL, 0x93EDEDD6C77E3BEDULL, 0x17CCCCE285DB2ECCULL, 0x1542426884572A42ULL, 0x5A98982C2DC2B498ULL, 0xAAA4A4ED550E49A4ULL, 0xA028287550885D28ULL, 0x6D5C5C86B831DA5CULL, 0xC7F8F86BED3F93F8ULL, 0x228686C211A44486ULL,

0x1818D83078C01860ULL, 0x23232646AF05238CULL, 0xC6C6B891F97EC63FULL, 0xE8E8FBCD6F13E887ULL, 0x8787CB13A14C8726ULL, 0xB8B8116D62A9B8DAULL, 0x0101090205080104ULL, 0x4F4F0D9E6E424F21ULL, 0x36369B6CEEAD36D8ULL, 0xA6A6FF510459A6A2ULL, 0xD2D20CB9BDDED26FULL, 0xF5F50EF706FBF5F3ULL, 0x797996F280EF79F9ULL, 0x6F6F30DECE5F6FA1ULL, 0x91916D3FEFFC917EULL, 0x5252F8A407AA5255ULL, 0x606047C0FD27609DULL, 0xBCBC35657689BCCAULL, 0x9B9B372BCDAC9B56ULL, 0x8E8E8A018C048E02ULL, 0xA3A3D25B1571A3B6ULL, 0x0C0C6C183C600C30ULL, 0x7B7B84F68AFF7BF1ULL, 0x3535806AE1B535D4ULL, 0x1D1DF53A69E81D74ULL, 0xE0E0B3DD4753E0A7ULL, 0xD7D721B3ACF6D77BULL, 0xC2C29C99ED5EC22FULL, 0x2E2E435C966D2EB8ULL, 0x4B4B29967A624B31ULL, 0xFEFE5DE121A3FEDFULL, 0x5757D5AE16825741ULL, 0x1515BD2A41A81554ULL, 0x7777E8EEB69F77C1ULL, 0x3737926EEBA537DCULL, 0xE5E59ED7567BE5B3ULL, 0x9F9F1323D98C9F46ULL, 0xF0F023FD17D3F0E7ULL, 0x4A4A20947F6A4A35ULL, 0xDADA44A9959EDA4FULL, 0x5858A2B025FA587DULL, 0xC9C9CF8FCA06C903ULL, 0x29297C528D5529A4ULL, 0x0A0A5A1422500A28ULL, 0xB1B1507F4FE1B1FEULL, 0xA0A0C95D1A69A0BAULL, 0x6B6B14D6DA7F6BB1ULL, 0x8585D917AB5C852EULL, 0xBDBD3C677381BDCEULL, 0x5D5D8FBA34D25D69ULL, 0x1010902050801040ULL, 0xF4F407F503F3F4F7ULL, 0xCBCBDD8BC016CB0BULL, 0x3E3ED37CC6ED3EF8ULL, 0x05052D0A11280514ULL, 0x676778CEE61F6781ULL, 0xE4E497D55373E4B7ULL, 0x2727024EBB25279CULL, 0x4141738258324119ULL, 0x8B8BA70B9D2C8B16ULL, 0xA7A7F6530151A7A6ULL, 0x7D7DB2FA94CF7DE9ULL, 0x95954937FBDC956EULL, 0xD8D856AD9F8ED847ULL, 0xFBFB70EB308BFBCBULL, 0xEEEECDC17123EE9FULL, 0x7C7CBBF891C77CEDULL, 0x666671CCE3176685ULL, 0xDDDD7BA78EA6DD53ULL, 0x1717AF2E4BB8175CULL, 0x4747458E46024701ULL, 0x9E9E1A21DC849E42ULL, 0xCACAD489C51ECA0FULL, 0x2D2D585A99752DB4ULL, 0xBFBF2E637991BFC6ULL, 0x07073F0E1B38071CULL, 0xADADAC472301AD8EULL, 0x5A5AB0B42FEA5A75ULL, 0x8383EF1BB56C8336ULL, 0x3333B666FF8533CCULL, 0x63635CC6F23F6391ULL, 0x020212040A100208ULL, 0xAAAA93493839AA92ULL, 0x7171DEE2A8AF71D9ULL, 0xC8C8C68DCF0EC807ULL, 0x1919D1327DC81964ULL, 0x49493B9270724939ULL, 0xD9D95FAF9A86D943ULL, 0xF2F231F91DC3F2EFULL, 0xE3E3A8DB484BE3ABULL, 0x5B5BB9B62AE25B71ULL, 0x8888BC0D9234881AULL, 0x9A9A3E29C8A49A52ULL, 0x26260B4CBE2D2698ULL, 0x3232BF64FA8D32C8ULL, 0xB0B0597D4AE9B0FAULL, 0xE9E9F2CF6A1BE983ULL, 0x0F0F771E33780F3CULL, 0xD5D533B7A6E6D573ULL, 0x8080F41DBA74803AULL, 0xBEBE27617C99BEC2ULL, 0xCDCDEB87DE26CD13ULL, 0x34348968E4BD34D0ULL, 0x48483290757A483DULL, 0xFFFF54E324ABFFDBULL, 0x7A7A8DF48FF77AF5ULL, 0x9090643DEAF4907AULL, 0x5F5F9DBE3EC25F61ULL, 0x20203D40A01D2080ULL, 0x68680FD0D56768BDULL, 0x1A1ACA3472D01A68ULL, 0xAEAEB7412C19AE82ULL, 0xB4B47D755EC9B4EAULL, 0x5454CEA8199A544DULL, 0x93937F3BE5EC9376ULL, 0x22222F44AA0D2288ULL, 0x646463C8E907648DULL, 0xF1F12AFF12DBF1E3ULL, 0x7373CCE6A2BF73D1ULL, 0x121282245A901248ULL, 0x40407A805D3A401DULL, 0x0808481028400820ULL, 0xC3C3959BE856C32BULL, 0xECECDFC57B33EC97ULL, 0xDBDB4DAB9096DB4BULL, 0xA1A1C05F1F61A1BEULL, 0x8D8D9107831C8D0EULL, 0x3D3DC87AC9F53DF4ULL, 0x97975B33F1CC9766ULL, 0x0000000000000000ULL, 0xCFCFF983D436CF1BULL, 0x2B2B6E5687452BACULL, 0x7676E1ECB39776C5ULL, 0x8282E619B0648232ULL, 0xD6D628B1A9FED67FULL, 0x1B1BC33677D81B6CULL, 0xB5B574775BC1B5EEULL, 0xAFAFBE432911AF86ULL, 0x6A6A1DD4DF776AB5ULL, 0x5050EAA00DBA505DULL, 0x4545578A4C124509ULL, 0xF3F338FB18CBF3EBULL, 0x3030AD60F09D30C0ULL, 0xEFEFC4C3742BEF9BULL, 0x3F3FDA7EC3E53FFCULL, 0x5555C7AA1C925549ULL, 0xA2A2DB591079A2B2ULL, 0xEAEAE9C96503EA8FULL, 0x65656ACAEC0F6589ULL, 0xBABA036968B9BAD2ULL, 0x2F2F4A5E93652FBCULL, 0xC0C08E9DE74EC027ULL, 0xDEDE60A181BEDE5FULL, 0x1C1CFC386CE01C70ULL, 0xFDFD46E72EBBFDD3ULL, 0x4D4D1F9A64524D29ULL, 0x92927639E0E49272ULL, 0x7575FAEABC8F75C9ULL, 0x0606360C1E300618ULL, 0x8A8AAE0998248A12ULL, 0xB2B24B7940F9B2F2ULL, 0xE6E685D15963E6BFULL, 0x0E0E7E1C36700E38ULL, 0x1F1FE73E63F81F7CULL, 0x626255C4F7376295ULL, 0xD4D43AB5A3EED477ULL, 0xA8A8814D3229A89AULL, 0x96965231F4C49662ULL, 0xF9F962EF3A9BF9C3ULL, 0xC5C5A397F666C533ULL, 0x2525104AB1352594ULL, 0x5959ABB220F25979ULL, 0x8484D015AE54842AULL, 0x7272C5E4A7B772D5ULL, 0x3939EC72DDD539E4ULL, 0x4C4C1698615A4C2DULL, 0x5E5E94BC3BCA5E65ULL, 0x78789FF085E778FDULL, 0x3838E570D8DD38E0ULL, 0x8C8C980586148C0AULL, 0xD1D117BFB2C6D163ULL, 0xA5A5E4570B41A5AEULL, 0xE2E2A1D94D43E2AFULL, 0x61614EC2F82F6199ULL, 0xB3B3427B45F1B3F6ULL, 0x21213442A5152184ULL, 0x9C9C0825D6949C4AULL, 0x1E1EEE3C66F01E78ULL, 0x4343618652224311ULL, 0xC7C7B193FC76C73BULL, 0xFCFC4FE52BB3FCD7ULL, 0x0404240814200410ULL, 0x5151E3A208B25159ULL, 0x9999252FC7BC995EULL, 0x6D6D22DAC44F6DA9ULL, 0x0D0D651A39680D34ULL, 0xFAFA79E93583FACFULL, 0xDFDF69A384B6DF5BULL, 0x7E7EA9FC9BD77EE5ULL, 0x24241948B43D2490ULL, 0x3B3BFE76D7C53BECULL, 0xABAB9A4B3D31AB96ULL, 0xCECEF081D13ECE1FULL, 0x1111992255881144ULL, 0x8F8F8303890C8F06ULL, 0x4E4E049C6B4A4E25ULL, 0xB7B7667351D1B7E6ULL, 0xEBEBE0CB600BEB8BULL, 0x3C3CC178CCFD3CF0ULL, 0x8181FD1FBF7C813EULL, 0x94944035FED4946AULL, 0xF7F71CF30CEBF7FBULL, 0xB9B9186F67A1B9DEULL, 0x13138B265F98134CULL, 0x2C2C51589C7D2CB0ULL, 0xD3D305BBB8D6D36BULL, 0xE7E78CD35C6BE7BBULL, 0x6E6E39DCCB576EA5ULL, 0xC4C4AA95F36EC437ULL, 0x03031B060F18030CULL, 0x5656DCAC138A5645ULL, 0x44445E88491A440DULL, 0x7F7FA0FE9EDF7FE1ULL, 0xA9A9884F3721A99EULL, 0x2A2A6754824D2AA8ULL, 0xBBBB0A6B6DB1BBD6ULL, 0xC1C1879FE246C123ULL, 0x5353F1A602A25351ULL, 0xDCDC72A58BAEDC57ULL, 0x0B0B531627580B2CULL, 0x9D9D0127D39C9D4EULL, 0x6C6C2BD8C1476CADULL, 0x3131A462F59531C4ULL, 0x7474F3E8B98774CDULL, 0xF6F615F109E3F6FFULL, 0x46464C8C430A4605ULL, 0xACACA5452609AC8AULL, 0x8989B50F973C891EULL, 0x1414B42844A01450ULL, 0xE1E1BADF425BE1A3ULL, 0x1616A62C4EB01658ULL, 0x3A3AF774D2CD3AE8ULL, 0x696906D2D06F69B9ULL, 0x090941122D480924ULL, 0x7070D7E0ADA770DDULL, 0xB6B66F7154D9B6E2ULL, 0xD0D01EBDB7CED067ULL, 0xEDEDD6C77E3BED93ULL, 0xCCCCE285DB2ECC17ULL, 0x42426884572A4215ULL, 0x98982C2DC2B4985AULL, 0xA4A4ED550E49A4AAULL, 0x28287550885D28A0ULL, 0x5C5C86B831DA5C6DULL, 0xF8F86BED3F93F8C7ULL, 0x8686C211A4448622ULL,

0x18D83078C0186018ULL, 0x232646AF05238C23ULL, 0xC6B891F97EC63FC6ULL, 0xE8FBCD6F13E887E8ULL, 0x87CB13A14C872687ULL, 0xB8116D62A9B8DAB8ULL, 0x0109020508010401ULL, 0x4F0D9E6E424F214FULL, 0x369B6CEEAD36D836ULL, 0xA6FF510459A6A2A6ULL, 0xD20CB9BDDED26FD2ULL, 0xF50EF706FBF5F3F5ULL, 0x7996F280EF79F979ULL, 0x6F30DECE5F6FA16FULL, 0x916D3FEFFC917E91ULL, 0x52F8A407AA525552ULL, 0x6047C0FD27609D60ULL, 0xBC35657689BCCABCULL, 0x9B372BCDAC9B569BULL, 0x8E8A018C048E028EULL, 0xA3D25B1571A3B6A3ULL, 0x0C6C183C600C300CULL, 0x7B84F68AFF7BF17BULL, 0x35806AE1B535D435ULL, 0x1DF53A69E81D741DULL, 0xE0B3DD4753E0A7E0ULL, 0xD721B3ACF6D77BD7ULL, 0xC29C99ED5EC22FC2ULL, 0x2E435C966D2EB82EULL, 0x4B29967A624B314BULL, 0xFE5DE121A3FEDFFEULL, 0x57D5AE1682574157ULL, 0x15BD2A41A8155415ULL, 0x77E8EEB69F77C177ULL, 0x37926EEBA537DC37ULL, 0xE59ED7567BE5B3E5ULL, 0x9F1323D98C9F469FULL, 0xF023FD17D3F0E7F0ULL, 0x4A20947F6A4A354AULL, 0xDA44A9959EDA4FDAULL, 0x58A2B025FA587D58ULL, 0xC9CF8FCA06C903C9ULL, 0x297C528D5529A429ULL, 0x0A5A1422500A280AULL, 0xB1507F4FE1B1FEB1ULL, 0xA0C95D1A69A0BAA0ULL, 0x6B14D6DA7F6BB16BULL, 0x85D917AB5C852E85ULL, 0xBD3C677381BDCEBDULL, 0x5D8FBA34D25D695DULL, 0x1090205080104010ULL, 0xF407F503F3F4F7F4ULL, 0xCBDD8BC016CB0BCBULL, 0x3ED37CC6ED3EF83EULL, 0x052D0A1128051405ULL, 0x6778CEE61F678167ULL, 0xE497D55373E4B7E4ULL, 0x27024EBB25279C27ULL, 0x4173825832411941ULL, 0x8BA70B9D2C8B168BULL, 0xA7F6530151A7A6A7ULL, 0x7DB2FA94CF7DE97DULL, 0x954937FBDC956E95ULL, 0xD856AD9F8ED847D8ULL, 0xFB70EB308BFBCBFBULL, 0xEECDC17123EE9FEEULL, 0x7CBBF891C77CED7CULL, 0x6671CCE317668566ULL, 0xDD7BA78EA6DD53DDULL, 0x17AF2E4BB8175C17ULL, 0x47458E4602470147ULL, 0x9E1A21DC849E429EULL, 0xCAD489C51ECA0FCAULL, 0x2D585A99752DB42DULL, 0xBF2E637991BFC6BFULL, 0x073F0E1B38071C07ULL, 0xADAC472301AD8EADULL, 0x5AB0B42FEA5A755AULL, 0x83EF1BB56C833683ULL, 0x33B666FF8533CC33ULL, 0x635CC6F23F639163ULL, 0x0212040A10020802ULL, 0xAA93493839AA92AAULL, 0x71DEE2A8AF71D971ULL, 0xC8C68DCF0EC807C8ULL, 0x19D1327DC8196419ULL, 0x493B927072493949ULL, 0xD95FAF9A86D943D9ULL, 0xF231F91DC3F2EFF2ULL, 0xE3A8DB484BE3ABE3ULL, 0x5BB9B62AE25B715BULL, 0x88BC0D9234881A88ULL, 0x9A3E29C8A49A529AULL, 0x260B4CBE2D269826ULL, 0x32BF64FA8D32C832ULL, 0xB0597D4AE9B0FAB0ULL, 0xE9F2CF6A1BE983E9ULL, 0x0F771E33780F3C0FULL, 0xD533B7A6E6D573D5ULL, 0x80F41DBA74803A80ULL, 0xBE27617C99BEC2BEULL, 0xCDEB87DE26CD13CDULL, 0x348968E4BD34D034ULL, 0x483290757A483D48ULL, 0xFF54E324ABFFDBFFULL, 0x7A8DF48FF77AF57AULL, 0x90643DEAF4907A90ULL, 0x5F9DBE3EC25F615FULL, 0x203D40A01D208020ULL, 0x680FD0D56768BD68ULL, 0x1ACA3472D01A681AULL, 0xAEB7412C19AE82AEULL, 0xB47D755EC9B4EAB4ULL, 0x54CEA8199A544D54ULL, 0x937F3BE5EC937693ULL, 0x222F44AA0D228822ULL, 0x6463C8E907648D64ULL, 0xF12AFF12DBF1E3F1ULL, 0x73CCE6A2BF73D173ULL, 0x1282245A90124812ULL, 0x407A805D3A401D40ULL, 0x0848102840082008ULL, 0xC3959BE856C32BC3ULL, 0xECDFC57B33EC97ECULL, 0xDB4DAB9096DB4BDBULL, 0xA1C05F1F61A1BEA1ULL, 0x8D9107831C8D0E8DULL, 0x3DC87AC9F53DF43DULL, 0x975B33F1CC976697ULL, 0x0000000000000000ULL, 0xCFF983D436CF1BCFULL, 0x2B6E5687452BAC2BULL, 0x76E1ECB39776C576ULL, 0x82E619B064823282ULL, 0xD628B1A9FED67FD6ULL, 0x1BC33677D81B6C1BULL, 0xB574775BC1B5EEB5ULL, 0xAFBE432911AF86AFULL, 0x6A1DD4DF776AB56AULL, 0x50EAA00DBA505D50ULL, 0x45578A4C12450945ULL, 0xF338FB18CBF3EBF3ULL, 0x30AD60F09D30C030ULL, 0xEFC4C3742BEF9BEFULL, 0x3FDA7EC3E53FFC3FULL, 0x55C7AA1C92554955ULL, 0xA2DB591079A2B2A2ULL, 0xEAE9C96503EA8FEAULL, 0x656ACAEC0F658965ULL, 0xBA036968B9BAD2BAULL, 0x2F4A5E93652FBC2FULL, 0xC08E9DE74EC027C0ULL, 0xDE60A181BEDE5FDEULL, 0x1CFC386CE01C701CULL, 0xFD46E72EBBFDD3FDULL, 0x4D1F9A64524D294DULL, 0x927639E0E4927292ULL, 0x75FAEABC8F75C975ULL, 0x06360C1E30061806ULL, 0x8AAE0998248A128AULL, 0xB24B7940F9B2F2B2ULL, 0xE685D15963E6BFE6ULL, 0x0E7E1C36700E380EULL, 0x1FE73E63F81F7C1FULL, 0x6255C4F737629562ULL, 0xD43AB5A3EED477D4ULL, 0xA8814D3229A89AA8ULL, 0x965231F4C4966296ULL, 0xF962EF3A9BF9C3F9ULL, 0xC5A397F666C533C5ULL, 0x25104AB135259425ULL, 0x59ABB220F2597959ULL, 0x84D015AE54842A84ULL, 0x72C5E4A7B772D572ULL, 0x39EC72DDD539E439ULL, 0x4C1698615A4C2D4CULL, 0x5E94BC3BCA5E655EULL, 0x789FF085E778FD78ULL, 0x38E570D8DD38E038ULL, 0x8C980586148C0A8CULL, 0xD117BFB2C6D163D1ULL, 0xA5E4570B41A5AEA5ULL, 0xE2A1D94D43E2AFE2ULL, 0x614EC2F82F619961ULL, 0xB3427B45F1B3F6B3ULL, 0x213442A515218421ULL, 0x9C0825D6949C4A9CULL, 0x1EEE3C66F01E781EULL, 0x4361865222431143ULL, 0xC7B193FC76C73BC7ULL, 0xFC4FE52BB3FCD7FCULL, 0x0424081420041004ULL, 0x51E3A208B2515951ULL, 0x99252FC7BC995E99ULL, 0x6D22DAC44F6DA96DULL, 0x0D651A39680D340DULL, 0xFA79E93583FACFFAULL, 0xDF69A384B6DF5BDFULL, 0x7EA9FC9BD77EE57EULL, 0x241948B43D249024ULL, 0x3BFE76D7C53BEC3BULL, 0xAB9A4B3D31AB96ABULL, 0xCEF081D13ECE1FCEULL, 0x1199225588114411ULL, 0x8F8303890C8F068FULL, 0x4E049C6B4A4E254EULL, 0xB7667351D1B7E6B7ULL, 0xEBE0CB600BEB8BEBULL, 0x3CC178CCFD3CF03CULL, 0x81FD1FBF7C813E81ULL, 0x944035FED4946A94ULL, 0xF71CF30CEBF7FBF7ULL, 0xB9186F67A1B9DEB9ULL, 0x138B265F98134C13ULL, 0x2C51589C7D2CB02CULL, 0xD305BBB8D6D36BD3ULL, 0xE78CD35C6BE7BBE7ULL, 0x6E39DCCB576EA56EULL, 0xC4AA95F36EC437C4ULL, 0x031B060F18030C03ULL, 0x56DCAC138A564556ULL, 0x445E88491A440D44ULL, 0x7FA0FE9EDF7FE17FULL, 0xA9884F3721A99EA9ULL, 0x2A6754824D2AA82AULL, 0xBB0A6B6DB1BBD6BBULL, 0xC1879FE246C123C1ULL, 0x53F1A602A2535153ULL, 0xDC72A58BAEDC57DCULL, 0x0B531627580B2C0BULL, 0x9D0127D39C9D4E9DULL, 0x6C2BD8C1476CAD6CULL, 0x31A462F59531C431ULL, 0x74F3E8B98774CD74ULL, 0xF615F109E3F6FFF6ULL, 0x464C8C430A460546ULL, 0xACA5452609AC8AACULL, 0x89B50F973C891E89ULL, 0x14B42844A0145014ULL, 0xE1BADF425BE1A3E1ULL, 0x16A62C4EB0165816ULL, 0x3AF774D2CD3AE83AULL, 0x6906D2D06F69B969ULL, 0x0941122D48092409ULL, 0x70D7E0ADA770DD70ULL, 0xB66F7154D9B6E2B6ULL, 0xD01EBDB7CED067D0ULL, 0xEDD6C77E3BED93EDULL, 0xCCE285DB2ECC17CCULL, 0x426884572A421542ULL, 0x982C2DC2B4985A98ULL, 0xA4ED550E49A4AAA4ULL, 0x287550885D28A028ULL, 0x5C86B831DA5C6D5CULL, 0xF86BED3F93F8C7F8ULL, 0x86C211A444862286ULL,

};



Code:

static UINT8 SBox[256] =
{

0x18, 0x23, 0xC6, 0xE8, 0x87, 0xB8, 0x01, 0x4F, 0x36, 0xA6, 0xD2, 0xF5, 0x79, 0x6F, 0x91, 0x52,

0x60, 0xBC, 0x9B, 0x8E, 0xA3, 0x0C, 0x7B, 0x35, 0x1D, 0xE0, 0xD7, 0xC2, 0x2E, 0x4B, 0xFE, 0x57,

0x15, 0x77, 0x37, 0xE5, 0x9F, 0xF0, 0x4A, 0xDA, 0x58, 0xC9, 0x29, 0x0A, 0xB1, 0xA0, 0x6B, 0x85,

0xBD, 0x5D, 0x10, 0xF4, 0xCB, 0x3E, 0x05, 0x67, 0xE4, 0x27, 0x41, 0x8B, 0xA7, 0x7D, 0x95, 0xD8,

0xFB, 0xEE, 0x7C, 0x66, 0xDD, 0x17, 0x47, 0x9E, 0xCA, 0x2D, 0xBF, 0x07, 0xAD, 0x5A, 0x83, 0x33,

0x63, 0x02, 0xAA, 0x71, 0xC8, 0x19, 0x49, 0xD9, 0xF2, 0xE3, 0x5B, 0x88, 0x9A, 0x26, 0x32, 0xB0,

0xE9, 0x0F, 0xD5, 0x80, 0xBE, 0xCD, 0x34, 0x48, 0xFF, 0x7A, 0x90, 0x5F, 0x20, 0x68, 0x1A, 0xAE,

0xB4, 0x54, 0x93, 0x22, 0x64, 0xF1, 0x73, 0x12, 0x40, 0x08, 0xC3, 0xEC, 0xDB, 0xA1, 0x8D, 0x3D,

0x97, 0x00, 0xCF, 0x2B, 0x76, 0x82, 0xD6, 0x1B, 0xB5, 0xAF, 0x6A, 0x50, 0x45, 0xF3, 0x30, 0xEF,

0x3F, 0x55, 0xA2, 0xEA, 0x65, 0xBA, 0x2F, 0xC0, 0xDE, 0x1C, 0xFD, 0x4D, 0x92, 0x75, 0x06, 0x8A,

0xB2, 0xE6, 0x0E, 0x1F, 0x62, 0xD4, 0xA8, 0x96, 0xF9, 0xC5, 0x25, 0x59, 0x84, 0x72, 0x39, 0x4C,

0x5E, 0x78, 0x38, 0x8C, 0xD1, 0xA5, 0xE2, 0x61, 0xB3, 0x21, 0x9C, 0x1E, 0x43, 0xC7, 0xFC, 0x04,

0x51, 0x99, 0x6D, 0x0D, 0xFA, 0xDF, 0x7E, 0x24, 0x3B, 0xAB, 0xCE, 0x11, 0x8F, 0x4E, 0xB7, 0xEB,

0x3C, 0x81, 0x94, 0xF7, 0xB9, 0x13, 0x2C, 0xD3, 0xE7, 0x6E, 0xC4, 0x03, 0x56, 0x44, 0x7F, 0xA9,

0x2A, 0xBB, 0xC1, 0x53, 0xDC, 0x0B, 0x9D, 0x6C, 0x31, 0x74, 0xF6, 0x46, 0xAC, 0x89, 0x14, 0xE1,

0x16, 0x3A, 0x69, 0x09, 0x70, 0xB6, 0xD0, 0xED, 0xCC, 0x42, 0x98, 0xA4, 0x28, 0x5C, 0xF8, 0x86,

};





static const UINT64 arrRoundConstants[10] =

{

0x4F01B887E8C62318ULL,

0x52916F79F5D2A636ULL,

0x357B0CA38E9BBC60ULL,

0x57FE4B2EC2D7E01DULL,

0xDA4AF09FE5377715ULL,

0x856BA0B10A29C958ULL,

0x67053ECBF4105DBDULL,

0xD8957DA78B4127E4ULL,

0x9E4717DD667CEEFBULL,

0x33835AAD07BF2DCAULL,



};



static UINT8 SBoxCalc(UINT8 u)

{

return SBox[u];

}





static void WhirlpoolRound_Table(void *pInOut)

{

const UINT8 *pIn8 = (const UINT8 *)pInOut;



UINT64 blockResult64[8] = {0};


// by source row

for(unsigned i = 0; i < 8; i++)

{

for(unsigned k = 0; k < 8; k++)

{

UINT8 bv = pIn8[(i<<3) ^ k];

blockResult64[7&(i+k)] ^= arrPrecalc[k*256 + bv];

}

}



memcpy(pInOut, blockResult64, 64);

}



static void WhirlpoolIteration_Table(UINT8 state[64], const UINT8 block[64])

{

UINT8 tempState[64];

UINT8 tempBlock[64];



memcpy(tempState, state, 64);

memcpy(tempBlock, block, 64);



for(unsigned i = 0; i < 64; i++)

{

state[i] = tempBlock[i] = tempBlock[i] ^ tempState[i];

}



for(unsigned i = 0; i < 10; i++)

{

WhirlpoolRound_Table(tempState);

WhirlpoolRound_Table(tempBlock);



for(unsigned j = 0; j < 8; j++)

tempState[j] ^= SBoxCalc((i << 3) | j);



for(unsigned j = 0; j < 64; j++)

tempBlock[j] ^= tempState[j];

}



for(unsigned i = 0; i < 64; i++)

state[i] ^= tempBlock[i];



}



void vanilla0_Precompute(

unsigned char *pDst, unsigned sizeDst,

const unsigned char *pSrc, unsigned sizeSrc)

{

const UINT32 *pIn32 = (const UINT32 *)pSrc;

UINT8 hashA[64];

memset(hashA, 0, 64);

UINT32 blockA32[16];



UINT8 blockt[64];

memcpy(blockt, pIn32, 64);



WhirlpoolIteration_Table(hashA, blockt);



blockA32[ 0] = pIn32[16 + 0];

blockA32[ 1] = pIn32[16 + 1];

blockA32[ 2] = pIn32[16 + 2];

blockA32[ 3] = 0; // nonceA

blockA32[ 4] = 0x00000080;

blockA32[ 5] = 0;

blockA32[ 6] = 0;

blockA32[ 7] = 0;

blockA32[ 8] = 0;

blockA32[ 9] = 0;

blockA32[10] = 0;

blockA32[11] = 0;

blockA32[12] = 0;

blockA32[13] = 0;

blockA32[14] = 0;

blockA32[15] = 0x80020000;



//blockA32[ 3] = nonceA;



UINT64 tempBlock64[8];

memcpy(tempBlock64, blockA32, 64);



UINT64 tempStatesPre64[10][8];

memcpy(&tempStatesPre64[0][0], hashA, 64);

// drop hashA



for(unsigned i = 0; i < 8; i++)

{

tempBlock64[i] ^= tempStatesPre64[0][i];

}



for(unsigned i = 0; i < 10; i++)

{

WhirlpoolRound_Table(&tempStatesPre64[i][0]);

*(UINT64*)&tempStatesPre64[i][0] ^= arrRoundConstants[i];

if(i < 9)

memcpy(&tempStatesPre64[i+1][0], &tempStatesPre64[i][0], 64);

}






UINT32 preHWA32 = 0;

preHWA32 ^= *(UINT32*) &(((UINT8*)&tempBlock64[0])[3*8 + 4]);

preHWA32 ^= *(UINT32*) &(((UINT8*)&tempBlock64[0])[5*8 + 4]);



preHWA32 ^= *(UINT32*) &(((UINT8*)&tempStatesPre64[9][0])[3*8 + 4]);

preHWA32 ^= *(UINT32*) &(((UINT8*)&tempStatesPre64[9][0])[5*8 + 4]);

// drop tempStatesPre64[9]



UINT32 nonceXor = tempBlock64[1] >> 32; // XXXXXX00



tempBlock64[1] &= 0x00000000FFFFFFFFULL;

tempBlock64[1] ^= 0x8181818100000000ULL;



WhirlpoolRound_Table(tempBlock64);



for(unsigned j = 0; j < 8; j++)

{

tempBlock64[j] ^= tempStatesPre64[0][j];

}



UINT64 pre5 = tempBlock64[5];

UINT64 pre6 = tempBlock64[6];

UINT64 pre7 = tempBlock64[7];

UINT64 pre0 = tempBlock64[0];



tempBlock64[5] = 0x8181818181818181ULL;

tempBlock64[6] = 0x8181818181818181ULL;

tempBlock64[7] = 0x8181818181818181ULL;

tempBlock64[0] = 0x8181818181818181ULL;



WhirlpoolRound_Table(tempBlock64);

for(unsigned j = 0; j < 8; j++)

{

tempBlock64[j] ^= tempStatesPre64[1][j];

}








#if 1

ASSERT(616 == sizeDst);

GLOBAL UINT64 *arrMidstate = (UINT64 *)pDst;

for(unsigned i = 0; i < 8; ++i)

{

for(unsigned j = 0; j < 8; ++j)

arrMidstate[i*8+j] = tempStatesPre64[i+2][j];

}

memcpy(&arrMidstate[64], tempBlock64, 64);

arrMidstate[64+8+0] = pre5;

arrMidstate[64+8+1] = pre6;

arrMidstate[64+8+2] = pre7;

arrMidstate[64+8+3] = pre0;





arrMidstate[64+8+4] = preHWA32 ^ ((UINT64)nonceXor << 32);

#endif



#if 1

// ROL 3

for(unsigned i = 0; i < 77; ++i)

{

arrMidstate[i] = ROL64(arrMidstate[i], 3);

}

#endif

}



Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: smolen on January 15, 2016, 05:30:52 AM
Code:
#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics : enable



static const CONSTANT UINT64 arrPrecalc_post_l27[4*256] =

{

0x00C300C0C6C183C6ULL, 0x291C611919323578ULL, 0xF631FE3635C48FCBULL, 0x9F443F4747DE6B78ULL, 0x6439343C3E589D0AULL, 0x4DC6D5C5C08B6B15ULL, 0x4008200808481028ULL, 0x12790A7A786CF372ULL, 0x69B6C1B1B4DB6775ULL, 0xCD35153537FA8822ULL, 0xF6937E969065CDEEULL, 0xDFAF9FAFA877B837ULL, 0x7BCFCBCBCCB79407ULL, 0xFB7D0B7B7986F672ULL, 0xE48BF48C8B69FF7FULL, 0x5292AA9297C5203DULL, 0x3B04EB03023E07E9ULL, 0x4DE655E5E1AB2BB4ULL, 0x64DAB4DCD9B95E6DULL, 0x2470147474500C60ULL, 0x8D1DB51D1E92D8ABULL, 0x006180606360C1E3ULL, 0xFBDF8BDBDC27B457ULL, 0xA9AEA1A9AC03570DULL, 0x40EBA0E8EFA9D34FULL, 0x9F053F07059EEA3AULL, 0xB6BBDEBEB90D9D67ULL, 0xF6117E1614E4CF6AULL, 0x6975C171721AE4B3ULL, 0x12598A5A594CB3D3ULL, 0x1FF6FFF7F2EF090DULL, 0x12BA0ABABEAD70B4ULL, 0x40AAA0A8ADE9520DULL, 0xFBBE0BBBBF4775B4ULL, 0x29BEE1B9BC93775DULL, 0xDF2D9F2F2CF6BAB3ULL, 0x64FA34FCF8991ECCULL, 0x9F873F87811FE8BEULL, 0x5251AA525104A3FBULL, 0xF6D27ED6D2254CACULL, 0xD2C3EAC2C515812FULL, 0x36481E4E4E7C7E50ULL, 0xA94D21494BE2946AULL, 0x8051405052D0A112ULL, 0x0D8FF58D8A83FA7FULL, 0x4D05D505064AE8D3ULL, 0xFB5D8B5B58A6B6D3ULL, 0xE429742C2EC8BD5AULL, 0x0DEE75EDE9E33B9CULL, 0x92EB4AEAEC7DD1A6ULL, 0x0082008084810284ULL, 0x9FA7BFA7A03FA81FULL, 0xB6585E5E5EEC5E00ULL, 0x69F7C1F1F69BE637ULL, 0x4028A02829685089ULL, 0xFB3C0B3B3BC67730ULL, 0x9F25BF2724BEAA9BULL, 0x293CE139381275D9ULL, 0x9208CA0A0B9C12C1ULL, 0x6458B45C5D385CE9ULL, 0x8D3D353D3FB2980AULL, 0x7BEF4BEBED97D4A6ULL, 0xE4AB74ACAA49BFDEULL, 0x76C23EC6C2B56CFCULL, 0x5FDE5FDFDB875984ULL, 0x1F74FF77766E0B89ULL, 0x3BE76BE3E5DFC48EULL, 0xBB342B33338E6718ULL, 0x36EA9EEEEBDD3C75ULL, 0xC0BAE0B8BD79725DULL, 0x12380A3A3A2C7230ULL, 0x24F214F4F0D10EE4ULL, 0xF6507E5656A44E28ULL, 0xA96DA1696AC2D4CBULL, 0x8DFE35FDF9731BCCULL, 0xC038E03839F870D9ULL, 0x0D6C756D6D623918ULL, 0x52D3AAD2D585A17FULL, 0x6419B41C1F78DDABULL, 0x299E61999DB337FCULL, 0xFB1C8B1B1AE63791ULL, 0x8010401010902050ULL, 0xCD549555549A49C1ULL, 0x7B8ECB8B8EF71545ULL, 0x76403E4646346E78ULL, 0x40CB20C8CE8993EEULL, 0x9249CA4A49DC9383ULL, 0x36CA1ECECAFD7CD4ULL, 0x1F977F97918FC8EEULL, 0x5F1D5F1F1D46DA42ULL, 0x12DB8ADADDCDB157ULL, 0xA440D44445E06C91ULL, 0x24D294D4D1F14E45ULL, 0x6934C131305A65F1ULL, 0x6996419195FB27D4ULL, 0x4D87D58582CBEA57ULL, 0xDF4C1F4F4F967B50ULL, 0xC079E0787BB8F19BULL, 0x36AB9EAEA99DBD37ULL, 0xA401D40407A0EDD3ULL, 0xCDF615F5F13B0BE4ULL, 0x36689E6E6F5C3EF1ULL, 0xE9A681A1A44B4725ULL, 0xD241EA42419483ABULL, 0x5FFEDFFFFAA71925ULL, 0xBBD7ABD3D46FA47FULL, 0xA483D4848321EF57ULL, 0x12FB0AFAFCEDF1F6ULL, 0xE904010101EA0500ULL, 0x3B45EB43407E86ABULL, 0x80D340D0D651A396ULL, 0xCD74157575BA0960ULL, 0x4DA755A5A3EBAAF6ULL, 0xD2A26AA2A67540CCULL, 0x649BB49C9BF9DF2FULL, 0x69144111117A2550ULL, 0x3B246B23231E4748ULL, 0xDF8F1F8F8957F896ULL, 0xFB9E8B9B9E673515ULL, 0x80924090941122D4ULL, 0xD200EA0203D402E9ULL, 0x0041004042408142ULL, 0xB6195E1E1CACDF42ULL, 0x9F64BF6766FE2BD9ULL, 0xB6DA5EDEDA6D5C84ULL, 0x0D0DF50D0E02F8FBULL, 0xE468746C6C883C18ULL, 0xA9EFA1E9EE43D64FULL, 0x64BB34BCBAD99F8EULL, 0x0000000000000000ULL, 0xB678DE7E7FCC1EA1ULL, 0x295D61595B72B43AULL, 0xBBB62BB3B70F659CULL, 0x241194141730CD83ULL, 0xF6B3FEB6B1458D4FULL, 0xC0DB60D8DE19B3BEULL, 0x0DAF75ADABA3BADEULL, 0x8D7C357D7DF21948ULL, 0xBB55AB5350EEA6FBULL, 0xD282EA828755006DULL, 0x92284A2A2ABC5260ULL, 0x5F9F5F9F99C7D8C6ULL, 0xE9860181856B0784ULL, 0x5F7CDF7F7E261BA1ULL, 0x29FFE1F9FED3F61FULL, 0x92AA4AAAAE3D50E4ULL, 0xCD15951516DAC883ULL, 0x1F547F57574E4B28ULL, 0x7B2C4B2B2B565760ULL, 0xCDD695D5D01B4B45ULL, 0x297DE1797A52F49BULL, 0x76013E060474EF3AULL, 0xF6F2FEF6F3050C0DULL, 0x00E380E0E7E1C367ULL, 0xDFEE9FEFEA373975ULL, 0x92694A6A68FCD322ULL, 0x2493949493B1CF07ULL, 0x7BAE4BABAFD755E4ULL, 0x8030C03031B060F1ULL, 0x2450945455704CC1ULL, 0xCD979595925BCA07ULL, 0x1F35FF37342E8ACBULL, 0x8071C07073F0E1B3ULL, 0xC0FBE0F8FF39F31FULL, 0xBB14AB1312AE27B9ULL, 0x76A3BEA6A1D5AD1FULL, 0x4D44D545440A6991ULL, 0x24B314B4B2918FA6ULL, 0xDFCE1FCFCB1779D4ULL, 0x36299E2E2D1CBFB3ULL, 0xA92CA12928825589ULL, 0x92CBCACACD5D9107ULL, 0xA42154242680AD72ULL, 0xBB96AB93962F253DULL, 0xA9CF21C9CF6396EEULL, 0xD2616A6260B4C30AULL, 0x52F32AF2F4A5E1DEULL, 0x3BC7EBC3C4FF842FULL, 0xE9C701C1C72B86C6ULL, 0xA460546464C02C30ULL, 0x368B1E8E88BDFD96ULL, 0x0D2D752D2F22B85AULL, 0x1F157F17150ECA6AULL, 0x7B0CCB0B0A7617C1ULL, 0x8D9FB59D9A13DA2FULL, 0xA90C210909A21528ULL, 0xA4E254E4E0412EB4ULL, 0x80F3C0F0F771E337ULL, 0x12188A1A1B0C3291ULL, 0xB639DE3E3D8C9FE3ULL, 0x9FE6BFE7E27F295DULL, 0x00208020212040A1ULL, 0x928ACA8A8F1D1045ULL, 0xE4CAF4CCC9297E3DULL, 0x7B6D4B6B6916D622ULL, 0x4069A0686B28D1CBULL, 0x1FD67FD7D3CF49ACULL, 0xB6FADEFEFB4D1C25ULL, 0xBBF72BF3F54FE4DEULL, 0xE924812120CA45A1ULL, 0x29DF61D9DFF3B6BEULL, 0x8D5CB55D5CD259E9ULL, 0xF670FE7677840E89ULL, 0x408A20888CC912ACULL, 0x6478347C7C181C48ULL, 0x52712A727024E35AULL, 0x8DBF35BDBB339A8EULL, 0x5F5C5F5F5F065B00ULL, 0xE9E781E1E60BC667ULL, 0xE409F40C0FE8FDFBULL, 0xA4A354A4A201AFF6ULL, 0x5FBFDFBFB8E79867ULL, 0x0DCEF5CDC8C37B3DULL, 0xC09A60989C5932FCULL, 0xE9658161628AC4E3ULL, 0xB69B5E9E982DDDC6ULL, 0x5F3DDF3F3C669AE3ULL, 0xBB752B7371CEE65AULL, 0x7621BE262554AF9BULL, 0xC018601818D83078ULL, 0x52B22AB2B6E5609CULL, 0xD2206A2222F44248ULL, 0xFBFF0BFBFD07F4F6ULL, 0x0D4CF54D4C4279B9ULL, 0x69554151533AA412ULL, 0x8DDEB5DDD8535B6DULL, 0x36091E0E0C3CFF12ULL, 0x129A8A9A9F8D3015ULL, 0x76E2BEE6E3952C5DULL, 0xC05960585A98B13AULL, 0xE4EA74ECE8093E9CULL, 0x3B656B63615EC60AULL, 0xA98E21898D2317ACULL, 0x3BA66BA3A79F45CCULL, 0x1FB7FFB7B0AF884FULL, 0x52302A3232646218ULL, 0x4D645565652A2930ULL, 0xE448F44C4DA87CB9ULL, 0x00A280A0A5A14225ULL, 0xDF0D1F0F0DD6FA12ULL, 0x80B2C0B0B5316275ULL, 0x69D741D1D7BBA696ULL, 0x7B4DCB4B48369683ULL, 0x404920484A08916AULL, 0x3B86EB8386BF056DULL, 0xCDB715B5B37B8AA6ULL, 0x76833E8680F5EDBEULL, 0xDF6C9F6F6EB63BF1ULL, 0x7660BE6667142ED9ULL, 0x5210AA12134422B9ULL, 0xA4C2D4C4C1616E15ULL, 0x4D255525276AA872ULL, 0xE945014143AA8442ULL, 0xD2E36AE2E435C18EULL, 0x9FC63FC7C35F69FCULL, 0x2431143436108D22ULL,

};



static const CONSTANT UINT64 arrPrecalc_post_r3[4*256] =

{

0xC183C600C300C0C6ULL, 0x323578291C611919ULL, 0xC48FCBF631FE3635ULL, 0xDE6B789F443F4747ULL, 0x589D0A6439343C3EULL, 0x8B6B154DC6D5C5C0ULL, 0x4810284008200808ULL, 0x6CF37212790A7A78ULL, 0xDB677569B6C1B1B4ULL, 0xFA8822CD35153537ULL, 0x65CDEEF6937E9690ULL, 0x77B837DFAF9FAFA8ULL, 0xB794077BCFCBCBCCULL, 0x86F672FB7D0B7B79ULL, 0x69FF7FE48BF48C8BULL, 0xC5203D5292AA9297ULL, 0x3E07E93B04EB0302ULL, 0xAB2BB44DE655E5E1ULL, 0xB95E6D64DAB4DCD9ULL, 0x500C602470147474ULL, 0x92D8AB8D1DB51D1EULL, 0x60C1E30061806063ULL, 0x27B457FBDF8BDBDCULL, 0x03570DA9AEA1A9ACULL, 0xA9D34F40EBA0E8EFULL, 0x9EEA3A9F053F0705ULL, 0x0D9D67B6BBDEBEB9ULL, 0xE4CF6AF6117E1614ULL, 0x1AE4B36975C17172ULL, 0x4CB3D312598A5A59ULL, 0xEF090D1FF6FFF7F2ULL, 0xAD70B412BA0ABABEULL, 0xE9520D40AAA0A8ADULL, 0x4775B4FBBE0BBBBFULL, 0x93775D29BEE1B9BCULL, 0xF6BAB3DF2D9F2F2CULL, 0x991ECC64FA34FCF8ULL, 0x1FE8BE9F873F8781ULL, 0x04A3FB5251AA5251ULL, 0x254CACF6D27ED6D2ULL, 0x15812FD2C3EAC2C5ULL, 0x7C7E5036481E4E4EULL, 0xE2946AA94D21494BULL, 0xD0A1128051405052ULL, 0x83FA7F0D8FF58D8AULL, 0x4AE8D34D05D50506ULL, 0xA6B6D3FB5D8B5B58ULL, 0xC8BD5AE429742C2EULL, 0xE33B9C0DEE75EDE9ULL, 0x7DD1A692EB4AEAECULL, 0x8102840082008084ULL, 0x3FA81F9FA7BFA7A0ULL, 0xEC5E00B6585E5E5EULL, 0x9BE63769F7C1F1F6ULL, 0x6850894028A02829ULL, 0xC67730FB3C0B3B3BULL, 0xBEAA9B9F25BF2724ULL, 0x1275D9293CE13938ULL, 0x9C12C19208CA0A0BULL, 0x385CE96458B45C5DULL, 0xB2980A8D3D353D3FULL, 0x97D4A67BEF4BEBEDULL, 0x49BFDEE4AB74ACAAULL, 0xB56CFC76C23EC6C2ULL, 0x8759845FDE5FDFDBULL, 0x6E0B891F74FF7776ULL, 0xDFC48E3BE76BE3E5ULL, 0x8E6718BB342B3333ULL, 0xDD3C7536EA9EEEEBULL, 0x79725DC0BAE0B8BDULL, 0x2C723012380A3A3AULL, 0xD10EE424F214F4F0ULL, 0xA44E28F6507E5656ULL, 0xC2D4CBA96DA1696AULL, 0x731BCC8DFE35FDF9ULL, 0xF870D9C038E03839ULL, 0x6239180D6C756D6DULL, 0x85A17F52D3AAD2D5ULL, 0x78DDAB6419B41C1FULL, 0xB337FC299E61999DULL, 0xE63791FB1C8B1B1AULL, 0x9020508010401010ULL, 0x9A49C1CD54955554ULL, 0xF715457B8ECB8B8EULL, 0x346E7876403E4646ULL, 0x8993EE40CB20C8CEULL, 0xDC93839249CA4A49ULL, 0xFD7CD436CA1ECECAULL, 0x8FC8EE1F977F9791ULL, 0x46DA425F1D5F1F1DULL, 0xCDB15712DB8ADADDULL, 0xE06C91A440D44445ULL, 0xF14E4524D294D4D1ULL, 0x5A65F16934C13130ULL, 0xFB27D46996419195ULL, 0xCBEA574D87D58582ULL, 0x967B50DF4C1F4F4FULL, 0xB8F19BC079E0787BULL, 0x9DBD3736AB9EAEA9ULL, 0xA0EDD3A401D40407ULL, 0x3B0BE4CDF615F5F1ULL, 0x5C3EF136689E6E6FULL, 0x4B4725E9A681A1A4ULL, 0x9483ABD241EA4241ULL, 0xA719255FFEDFFFFAULL, 0x6FA47FBBD7ABD3D4ULL, 0x21EF57A483D48483ULL, 0xEDF1F612FB0AFAFCULL, 0xEA0500E904010101ULL, 0x7E86AB3B45EB4340ULL, 0x51A39680D340D0D6ULL, 0xBA0960CD74157575ULL, 0xEBAAF64DA755A5A3ULL, 0x7540CCD2A26AA2A6ULL, 0xF9DF2F649BB49C9BULL, 0x7A25506914411111ULL, 0x1E47483B246B2323ULL, 0x57F896DF8F1F8F89ULL, 0x673515FB9E8B9B9EULL, 0x1122D48092409094ULL, 0xD402E9D200EA0203ULL, 0x4081420041004042ULL, 0xACDF42B6195E1E1CULL, 0xFE2BD99F64BF6766ULL, 0x6D5C84B6DA5EDEDAULL, 0x02F8FB0D0DF50D0EULL, 0x883C18E468746C6CULL, 0x43D64FA9EFA1E9EEULL, 0xD99F8E64BB34BCBAULL, 0x0000000000000000ULL, 0xCC1EA1B678DE7E7FULL, 0x72B43A295D61595BULL, 0x0F659CBBB62BB3B7ULL, 0x30CD832411941417ULL, 0x458D4FF6B3FEB6B1ULL, 0x19B3BEC0DB60D8DEULL, 0xA3BADE0DAF75ADABULL, 0xF219488D7C357D7DULL, 0xEEA6FBBB55AB5350ULL, 0x55006DD282EA8287ULL, 0xBC526092284A2A2AULL, 0xC7D8C65F9F5F9F99ULL, 0x6B0784E986018185ULL, 0x261BA15F7CDF7F7EULL, 0xD3F61F29FFE1F9FEULL, 0x3D50E492AA4AAAAEULL, 0xDAC883CD15951516ULL, 0x4E4B281F547F5757ULL, 0x5657607B2C4B2B2BULL, 0x1B4B45CDD695D5D0ULL, 0x52F49B297DE1797AULL, 0x74EF3A76013E0604ULL, 0x050C0DF6F2FEF6F3ULL, 0xE1C36700E380E0E7ULL, 0x373975DFEE9FEFEAULL, 0xFCD32292694A6A68ULL, 0xB1CF072493949493ULL, 0xD755E47BAE4BABAFULL, 0xB060F18030C03031ULL, 0x704CC12450945455ULL, 0x5BCA07CD97959592ULL, 0x2E8ACB1F35FF3734ULL, 0xF0E1B38071C07073ULL, 0x39F31FC0FBE0F8FFULL, 0xAE27B9BB14AB1312ULL, 0xD5AD1F76A3BEA6A1ULL, 0x0A69914D44D54544ULL, 0x918FA624B314B4B2ULL, 0x1779D4DFCE1FCFCBULL, 0x1CBFB336299E2E2DULL, 0x825589A92CA12928ULL, 0x5D910792CBCACACDULL, 0x80AD72A421542426ULL, 0x2F253DBB96AB9396ULL, 0x6396EEA9CF21C9CFULL, 0xB4C30AD2616A6260ULL, 0xA5E1DE52F32AF2F4ULL, 0xFF842F3BC7EBC3C4ULL, 0x2B86C6E9C701C1C7ULL, 0xC02C30A460546464ULL, 0xBDFD96368B1E8E88ULL, 0x22B85A0D2D752D2FULL, 0x0ECA6A1F157F1715ULL, 0x7617C17B0CCB0B0AULL, 0x13DA2F8D9FB59D9AULL, 0xA21528A90C210909ULL, 0x412EB4A4E254E4E0ULL, 0x71E33780F3C0F0F7ULL, 0x0C329112188A1A1BULL, 0x8C9FE3B639DE3E3DULL, 0x7F295D9FE6BFE7E2ULL, 0x2040A10020802021ULL, 0x1D1045928ACA8A8FULL, 0x297E3DE4CAF4CCC9ULL, 0x16D6227B6D4B6B69ULL, 0x28D1CB4069A0686BULL, 0xCF49AC1FD67FD7D3ULL, 0x4D1C25B6FADEFEFBULL, 0x4FE4DEBBF72BF3F5ULL, 0xCA45A1E924812120ULL, 0xF3B6BE29DF61D9DFULL, 0xD259E98D5CB55D5CULL, 0x840E89F670FE7677ULL, 0xC912AC408A20888CULL, 0x181C486478347C7CULL, 0x24E35A52712A7270ULL, 0x339A8E8DBF35BDBBULL, 0x065B005F5C5F5F5FULL, 0x0BC667E9E781E1E6ULL, 0xE8FDFBE409F40C0FULL, 0x01AFF6A4A354A4A2ULL, 0xE798675FBFDFBFB8ULL, 0xC37B3D0DCEF5CDC8ULL, 0x5932FCC09A60989CULL, 0x8AC4E3E965816162ULL, 0x2DDDC6B69B5E9E98ULL, 0x669AE35F3DDF3F3CULL, 0xCEE65ABB752B7371ULL, 0x54AF9B7621BE2625ULL, 0xD83078C018601818ULL, 0xE5609C52B22AB2B6ULL, 0xF44248D2206A2222ULL, 0x07F4F6FBFF0BFBFDULL, 0x4279B90D4CF54D4CULL, 0x3AA4126955415153ULL, 0x535B6D8DDEB5DDD8ULL, 0x3CFF1236091E0E0CULL, 0x8D3015129A8A9A9FULL, 0x952C5D76E2BEE6E3ULL, 0x98B13AC05960585AULL, 0x093E9CE4EA74ECE8ULL, 0x5EC60A3B656B6361ULL, 0x2317ACA98E21898DULL, 0x9F45CC3BA66BA3A7ULL, 0xAF884F1FB7FFB7B0ULL, 0x64621852302A3232ULL, 0x2A29304D64556565ULL, 0xA87CB9E448F44C4DULL, 0xA1422500A280A0A5ULL, 0xD6FA12DF0D1F0F0DULL, 0x31627580B2C0B0B5ULL, 0xBBA69669D741D1D7ULL, 0x3696837B4DCB4B48ULL, 0x08916A404920484AULL, 0xBF056D3B86EB8386ULL, 0x7B8AA6CDB715B5B3ULL, 0xF5EDBE76833E8680ULL, 0xB63BF1DF6C9F6F6EULL, 0x142ED97660BE6667ULL, 0x4422B95210AA1213ULL, 0x616E15A4C2D4C4C1ULL, 0x6AA8724D25552527ULL, 0xAA8442E945014143ULL, 0x35C18ED2E36AE2E4ULL, 0x5F69FC9FC63FC7C3ULL, 0x108D222431143436ULL,

};









#ifdef __OPENCL_VERSION__

#define X64 uint2

#define ASX64(v) (as_uint2(v))

#else

#define X64 UINT64

#define ASX64(v) (v)

#endif



#define Toff8(off8) (*(const LOCAL UINT64*)&(((const LOCAL UINT8*)TAll_local)[off8]))

#define TCoff8(off8) (*(const CONSTANT UINT64*)&(((const CONSTANT UINT8*)arrPrecalc_post)[off8]))






#define Toff8_r3(off8) (*(const LOCAL UINT64*)&(((const LOCAL UINT8*)TAll_local_r3)[off8]))

#define TCoff8_r3(off8) (*(const CONSTANT UINT64*)&(((const CONSTANT UINT8*)arrPrecalc_post_r3)[off8]))

#define TCoff8_l27(off8) (*(const CONSTANT UINT64*)&(((const CONSTANT UINT8*)arrPrecalc_post_l27)[off8]))


#define TC0off8_l27(off8) (*(const CONSTANT UINT64*)&(((const CONSTANT UINT8*)0)[off8]))



#ifdef __OPENCL_VERSION__



#define LUT0_r3(v) ASX64(Toff8_r3(v.x & 0x7F8))

#define LUT1_r3(v) ASX64(ROL64(Toff8_r3((v.x >>  8) & 0x7F8U), 8))

#define LUT2_r3(v) ASX64(ROL64(Toff8_r3((v.x >> 16) & 0x7F8U), 16));

#define LUT3_r3(v) ASX64(TC0off8_l27(bitselect(baseL27, (UINT32)(as_ulong(v) >> 24), 0x7F8U)))

#define LUT4_r3(v) (ASX64(Toff8_r3((v.y) & 0x7F8U))).yx

#define LUT5_r3(v) (ASX64(ROL64(Toff8_r3((v.y >> 8) & 0x7F8U), 8))).yx

#define LUT6_r3(v) (ASX64(ROL64(Toff8_r3((v.y >> 16) & 0x7F8U), 16))).yx;

#define LUT7_r3(v) (ASX64(TC0off8_l27(bitselect(baseL27, amd_bitalign(v.x, v.y, 24), 0x7F8U)))).yx


#else




#define LUT0_r3(v) ASX64(Toff8_r3((v) & 0x7F8))

#define LUT1_r3(v) ASX64(ROL64(Toff8_r3((v >>  8) & 0x7F8U), 8))

#define LUT2_r3(v) ASX64(ROL64(Toff8_r3((v >> 16) & 0x7F8U), 16))

#define LUT3_r3(v) ASX64(ROL64(Toff8_r3((v >> 24) & 0x7F8U), 24))

#define LUT4_r3(v) ASX64(ROL64(Toff8_r3((v >> 32) & 0x7F8U), 32))

#define LUT5_r3(v) ASX64(ROL64(Toff8_r3((v >> 40) & 0x7F8U), 40))

#define LUT6_r3(v) ASX64(ROL64(Toff8_r3((v >> 48) & 0x7F8U), 48))

#define LUT7_r3(v) ASX64(ROL64(Toff8_r3(ROR64(v, 56) & 0x7F8U), 56))





#endif



KERNEL void vanilla0_post(

GLOBAL UINT32 *pOut32,

GLOBAL const UINT32 *pIn32

#ifdef __OPENCL_VERSION__

, UINT32 nMask

#else

, UINT32 GLOBALID

#endif

)

{



#ifdef __OPENCL_VERSION__

#else

UINT32 nMask = 0xFFFFFFFF;

#endif

GLOBAL const UINT64 *arrMidstate = (GLOBAL const UINT64 *)pIn32;


#define baseL27 ((UINT32)&arrPrecalc_post_l27[0])



LOCAL X64 TAll_local_r3[256*1];

{

UINT32 nLocalId = LOCALID;

for(unsigned i = 0; i < 256; i += WORKSIZE)

{


TAll_local_r3[i + nLocalId]

= ASX64(arrPrecalc_post_r3[i + nLocalId]);


}

}







GLOBAL const UINT64 *post_pStatesPre64_pr3 = arrMidstate;




X64 stateAX64_pr3[8];

X64 stateBX64_pr3[8];




for(unsigned i = 0; i < 8; ++i)

{

stateAX64_pr3[i] = ASX64(arrMidstate[64+i]);

}




X64 post_pre5_pr3 = ASX64(arrMidstate[64+8+0]);

X64 post_pre6_pr3 = ASX64(arrMidstate[64+8+1]);

X64 post_pre7_pr3 = ASX64(arrMidstate[64+8+2]);

X64 post_pre0_pr3 = ASX64(arrMidstate[64+8+3]);





#ifdef __OPENCL_VERSION__


X64 post_nonceXored_pr3 = ASX64(arrMidstate[64+8+4]);

post_nonceXored_pr3.x ^= GLOBALID >> 29;

post_nonceXored_pr3.y ^= GLOBALID << 3;



#else

X64 post_tmp_pr3 = ASX64(arrMidstate[64+8+4]);

UINT32 post_preHWA32_pr0 = ROR64(post_tmp_pr3, 3) & 0xFFFFFFFF;


X64 post_nonceXored_pr3 = post_tmp_pr3 ^ ROR64(((UINT64)GLOBALID), 29); // & 0x00FFFF00


#endif






post_pre5_pr3 ^= LUT4_r3(ASX64(post_nonceXored_pr3));

stateAX64_pr3[7&(5+0)] ^= LUT0_r3(post_pre5_pr3);

stateAX64_pr3[7&(5+1)] ^= LUT1_r3(post_pre5_pr3);

stateAX64_pr3[7&(5+2)] ^= LUT2_r3(post_pre5_pr3);


stateAX64_pr3[7&(5+3)] ^= LUT3_r3(post_pre5_pr3);


stateAX64_pr3[7&(5+4)] ^= LUT4_r3(post_pre5_pr3);

stateAX64_pr3[7&(5+5)] ^= LUT5_r3(post_pre5_pr3);

stateAX64_pr3[7&(5+6)] ^= LUT6_r3(post_pre5_pr3);


stateAX64_pr3[7&(5+7)] ^= LUT7_r3(post_pre5_pr3);




post_pre6_pr3 ^= LUT5_r3(ASX64(post_nonceXored_pr3));

stateAX64_pr3[7&(6+0)] ^= LUT0_r3(post_pre6_pr3);

stateAX64_pr3[7&(6+1)] ^= LUT1_r3(post_pre6_pr3);

stateAX64_pr3[7&(6+2)] ^= LUT2_r3(post_pre6_pr3);


stateAX64_pr3[7&(6+3)] ^= LUT3_r3(post_pre6_pr3);


stateAX64_pr3[7&(6+4)] ^= LUT4_r3(post_pre6_pr3);

stateAX64_pr3[7&(6+5)] ^= LUT5_r3(post_pre6_pr3);

stateAX64_pr3[7&(6+6)] ^= LUT6_r3(post_pre6_pr3);


stateAX64_pr3[7&(6+7)] ^= LUT7_r3(post_pre6_pr3);




post_pre7_pr3 ^= LUT6_r3(ASX64(post_nonceXored_pr3));

stateAX64_pr3[7&(7+0)] ^= LUT0_r3(post_pre7_pr3);

stateAX64_pr3[7&(7+1)] ^= LUT1_r3(post_pre7_pr3);

stateAX64_pr3[7&(7+2)] ^= LUT2_r3(post_pre7_pr3);


stateAX64_pr3[7&(7+3)] ^= LUT3_r3(post_pre7_pr3);


stateAX64_pr3[7&(7+4)] ^= LUT4_r3(post_pre7_pr3);

stateAX64_pr3[7&(7+5)] ^= LUT5_r3(post_pre7_pr3);

stateAX64_pr3[7&(7+6)] ^= LUT6_r3(post_pre7_pr3);


stateAX64_pr3[7&(7+7)] ^= LUT7_r3(post_pre7_pr3);




post_pre0_pr3 ^= LUT7_r3(ASX64(post_nonceXored_pr3));

stateAX64_pr3[7&(0+0)] ^= LUT0_r3(post_pre0_pr3);

stateAX64_pr3[7&(0+1)] ^= LUT1_r3(post_pre0_pr3);

stateAX64_pr3[7&(0+2)] ^= LUT2_r3(post_pre0_pr3);


stateAX64_pr3[7&(0+3)] ^= LUT3_r3(post_pre0_pr3);


stateAX64_pr3[7&(0+4)] ^= LUT4_r3(post_pre0_pr3);

stateAX64_pr3[7&(0+5)] ^= LUT5_r3(post_pre0_pr3);

stateAX64_pr3[7&(0+6)] ^= LUT6_r3(post_pre0_pr3);


stateAX64_pr3[7&(0+7)] ^= LUT7_r3(post_pre0_pr3);








{

for(unsigned round = 0; round < 3; round++)

{

for(unsigned j = 0; j < 8; j++)

{


stateBX64_pr3[j] = ASX64(post_pStatesPre64_pr3[round*16 + 0 +j]);

}




for(unsigned p = 0; p < 8; ++p)

{

stateBX64_pr3[7&(p+0)] ^= LUT0_r3(stateAX64_pr3[p]);

stateBX64_pr3[7&(p+1)] ^= LUT1_r3(stateAX64_pr3[p]);

stateBX64_pr3[7&(p+2)] ^= LUT2_r3(stateAX64_pr3[p]);


stateBX64_pr3[7&(p+3)] ^= LUT3_r3(stateAX64_pr3[p]);






stateBX64_pr3[7&(p+4)] ^= LUT4_r3(stateAX64_pr3[p]);

stateBX64_pr3[7&(p+5)] ^= LUT5_r3(stateAX64_pr3[p]);

stateBX64_pr3[7&(p+6)] ^= LUT6_r3(stateAX64_pr3[p]);


stateBX64_pr3[7&(p+7)] ^= LUT7_r3(stateAX64_pr3[p]);




}



for(unsigned j = 0; j < 8; j++)

{


stateAX64_pr3[j] = ASX64(post_pStatesPre64_pr3[round*16 + 8 +j]);

}



for(unsigned p = 0; p < 8; ++p)

{

stateAX64_pr3[7&(p+0)] ^= LUT0_r3(stateBX64_pr3[p]);

stateAX64_pr3[7&(p+1)] ^= LUT1_r3(stateBX64_pr3[p]);

stateAX64_pr3[7&(p+2)] ^= LUT2_r3(stateBX64_pr3[p]);


stateAX64_pr3[7&(p+3)] ^= LUT3_r3(stateBX64_pr3[p]);






stateAX64_pr3[7&(p+4)] ^= LUT4_r3(stateBX64_pr3[p]);

stateAX64_pr3[7&(p+5)] ^= LUT5_r3(stateBX64_pr3[p]);

stateAX64_pr3[7&(p+6)] ^= LUT6_r3(stateBX64_pr3[p]);


stateAX64_pr3[7&(p+7)] ^= LUT7_r3(stateBX64_pr3[p]);




}





}



for(unsigned j = 0; j < 8; j++)

{

stateBX64_pr3[j] = ASX64(post_pStatesPre64_pr3[6*8 + 0 +j]);

}



for(unsigned p = 0; p < 8; ++p)

{

stateBX64_pr3[7&(p+0)] ^= LUT0_r3(stateAX64_pr3[p]);

stateBX64_pr3[7&(p+1)] ^= LUT1_r3(stateAX64_pr3[p]);

stateBX64_pr3[7&(p+2)] ^= LUT2_r3(stateAX64_pr3[p]);


stateBX64_pr3[7&(p+3)] ^= LUT3_r3(stateAX64_pr3[p]);





stateBX64_pr3[7&(p+4)] ^= LUT4_r3(stateAX64_pr3[p]);

stateBX64_pr3[7&(p+5)] ^= LUT5_r3(stateAX64_pr3[p]);

stateBX64_pr3[7&(p+6)] ^= LUT6_r3(stateAX64_pr3[p]);


stateBX64_pr3[7&(p+7)] ^= LUT7_r3(stateAX64_pr3[p]);




}













// by result row; 3,5


X64 result64_pr3 = LUT0_r3(stateBX64_pr3[7&(8+3-0)]);

result64_pr3 ^= LUT1_r3(stateBX64_pr3[7&(8+3-1)]);

result64_pr3 ^= LUT2_r3(stateBX64_pr3[7&(8+3-2)]);

result64_pr3 ^= LUT3_r3(stateBX64_pr3[7&(8+3-3)]);






result64_pr3 ^= LUT4_r3(stateBX64_pr3[7&(8+3-4)]);

result64_pr3 ^= LUT5_r3(stateBX64_pr3[7&(8+3-5)]);

result64_pr3 ^= LUT6_r3(stateBX64_pr3[7&(8+3-6)]);

result64_pr3 ^= LUT7_r3(stateBX64_pr3[7&(8+3-7)]);






result64_pr3 ^= LUT0_r3(stateBX64_pr3[7&(8+5-0)]);

result64_pr3 ^= LUT1_r3(stateBX64_pr3[7&(8+5-1)]);

result64_pr3 ^= LUT2_r3(stateBX64_pr3[7&(8+5-2)]);

result64_pr3 ^= LUT3_r3(stateBX64_pr3[7&(8+5-3)]);




result64_pr3 ^= LUT4_r3(stateBX64_pr3[7&(8+5-4)]);

result64_pr3 ^= LUT5_r3(stateBX64_pr3[7&(8+5-5)]);

result64_pr3 ^= LUT6_r3(stateBX64_pr3[7&(8+5-6)]);

result64_pr3 ^= LUT7_r3(stateBX64_pr3[7&(8+5-7)]);












#ifdef __OPENCL_VERSION__




X64 post_tmp_pr3 = ASX64(arrMidstate[64+8+4]);


UINT32 post_preHWA32_pr0 = amd_bitalign(post_tmp_pr3.y, post_tmp_pr3.x, 3);




if(!(nMask & (post_preHWA32_pr0 ^ amd_bitalign(result64_pr3.x, result64_pr3.y, 3))))

{

pOut32[atom_inc(&pOut32[0]) + 1] = GLOBALID;

}





#else


post_preHWA32_pr0 ^= ROR64(result64_pr3, 32+3);



if(!(post_preHWA32_pr0 & nMask))

{


pOut32[++pOut32[0]] = GLOBALID;

}



#endif



}

}


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: pallas on January 15, 2016, 09:51:47 AM
interesting, I'll have a look asap, thanks for sharing.
but my kernel, which is a little faster on hawaii and little slower on tahiti, is just 1/4 lines of code.


Title: Re: [Preview] Smelter - GPU miner for WhirlpoolX (Vanillacoin)
Post by: smolen on January 21, 2016, 08:24:48 AM
interesting, I'll have a look asap, thanks for sharing.
but my kernel, which is a little faster on hawaii and little slower on tahiti, is just 1/4 lines of code.
Yes, it's overengineered, some failed optimization attempts still live in the code. OTOH, smelter still has no overclocking code, may be putting this kernel as-is into sgminer will bring some speed boost.