function play(uint8 credits) public payable {
		
		uint256 betPerCredit = msg.value / credits;

		
		
		require(!GAMEPAUSED
			&& msg.value > 0
			&& betPerCredit >= MINBET
			&& credits > 0 
			&& credits <= 224
			&& SafeMath.mul(betPerCredit, 5000) <= getMaxWin()); 

		
		if (betPerCredit < MINBET_forORACLIZE){

			
			
			bytes32 blockHash = block.blockhash(block.number);

			
			uint256 dialsSpun;

			
			
			uint8 dial1;
			uint8 dial2;
			uint8 dial3;

			
			
			
			
			uint256[] memory logsData = new uint256[](8);

			
			
			uint256 payout;

			
			
			
			
			for (uint8 i = 0; i < credits; i++){

				
				dialsSpun += 1;
				dial1 = uint8(uint(keccak256(blockHash, dialsSpun)) % 64);
				
				dialsSpun += 1;
				dial2 = uint8(uint(keccak256(blockHash, dialsSpun)) % 64);
				
				dialsSpun += 1;
				dial3 = uint8(uint(keccak256(blockHash, dialsSpun)) % 64);

				
				dial1 = getDial1Type(dial1);

				
				dial2 = getDial2Type(dial2);

				
				dial3 = getDial3Type(dial3);

				

				payout += determinePayout(dial1, dial2, dial3);

				
				
				
				if (i <= 27){
					
					logsData[0] += uint256(dial1) * uint256(2) ** (3 * ((3 * (27 - i)) + 2));
					logsData[0] += uint256(dial2) * uint256(2) ** (3 * ((3 * (27 - i)) + 1));
					logsData[0] += uint256(dial3) * uint256(2) ** (3 * ((3 * (27 - i))));
				}
				else if (i <= 55){
					
					logsData[1] += uint256(dial1) * uint256(2) ** (3 * ((3 * (55 - i)) + 2));
					logsData[1] += uint256(dial2) * uint256(2) ** (3 * ((3 * (55 - i)) + 1));
					logsData[1] += uint256(dial3) * uint256(2) ** (3 * ((3 * (55 - i))));
				}
				else if (i <= 83) {
					
					logsData[2] += uint256(dial1) * uint256(2) ** (3 * ((3 * (83 - i)) + 2));
					logsData[2] += uint256(dial2) * uint256(2) ** (3 * ((3 * (83 - i)) + 1));
					logsData[2] += uint256(dial3) * uint256(2) ** (3 * ((3 * (83 - i))));
				}
				else if (i <= 111) {
					
					logsData[3] += uint256(dial1) * uint256(2) ** (3 * ((3 * (111 - i)) + 2));
					logsData[3] += uint256(dial2) * uint256(2) ** (3 * ((3 * (111 - i)) + 1));
					logsData[3] += uint256(dial3) * uint256(2) ** (3 * ((3 * (111 - i))));
				}
				else if (i <= 139){
					
					logsData[4] += uint256(dial1) * uint256(2) ** (3 * ((3 * (139 - i)) + 2));
					logsData[4] += uint256(dial2) * uint256(2) ** (3 * ((3 * (139 - i)) + 1));
					logsData[4] += uint256(dial3) * uint256(2) ** (3 * ((3 * (139 - i))));
				}
				else if (i <= 167){
					
					logsData[5] += uint256(dial1) * uint256(2) ** (3 * ((3 * (167 - i)) + 2));
					logsData[5] += uint256(dial2) * uint256(2) ** (3 * ((3 * (167 - i)) + 1));
					logsData[5] += uint256(dial3) * uint256(2) ** (3 * ((3 * (167 - i))));
				}
				else if (i <= 195){
					
					logsData[6] += uint256(dial1) * uint256(2) ** (3 * ((3 * (195 - i)) + 2));
					logsData[6] += uint256(dial2) * uint256(2) ** (3 * ((3 * (195 - i)) + 1));
					logsData[6] += uint256(dial3) * uint256(2) ** (3 * ((3 * (195 - i))));
				}
				else {
					
					logsData[7] += uint256(dial1) * uint256(2) ** (3 * ((3 * (223 - i)) + 2));
					logsData[7] += uint256(dial2) * uint256(2) ** (3 * ((3 * (223 - i)) + 1));
					logsData[7] += uint256(dial3) * uint256(2) ** (3 * ((3 * (223 - i))));
				}
			}

			
			DIALSSPUN += dialsSpun;

			
			AMOUNTWAGERED = SafeMath.add(AMOUNTWAGERED, msg.value);

			
			
			uint256 developersCut = msg.value / 100;

			
			DEVELOPERSFUND = SafeMath.add(DEVELOPERSFUND, developersCut);

			
			EOSBetBankrollInterface(BANKROLLER).receiveEtherFromGameAddress.value(SafeMath.sub(msg.value, developersCut))();

			
			uint256 etherPaidout = SafeMath.mul(betPerCredit, payout);

			
			EOSBetBankrollInterface(BANKROLLER).payEtherToWinner(etherPaidout, msg.sender);

			
			
			emit SlotsSmallBet(logsData[0], logsData[1], logsData[2], logsData[3], logsData[4], logsData[5], logsData[6], logsData[7]);

		}
		
		
		
		else {
			
			bytes32 oraclizeQueryId;

			
			
			
			uint256 gasToSend = INITIALGASFORORACLIZE + (uint256(3270) * credits);

			EOSBetBankrollInterface(BANKROLLER).payOraclize(oraclize_getPrice('random', gasToSend));

			oraclizeQueryId = oraclize_newRandomDSQuery(0, 30, gasToSend);

			
			slotsData[oraclizeQueryId] = SlotsGameData({
				player : msg.sender,
				paidOut : false,
				start : block.timestamp,
				etherReceived : msg.value,
				credits : credits
			});

			
			
			LIABILITIES = SafeMath.add(LIABILITIES, msg.value);

			emit BuyCredits(oraclizeQueryId);
		}
	}