diff --git a/internal/literals/obfuscators.go b/internal/literals/obfuscators.go
index 1fa7e53..9a4b885 100644
--- a/internal/literals/obfuscators.go
+++ b/internal/literals/obfuscators.go
@@ -53,10 +53,9 @@ func genRandIntSlice(max, count int) []int {
 	return indexes
 }
 
-var allOperators = [...]token.Token{token.XOR, token.ADD, token.SUB}
-
 func randOperator() token.Token {
-	return allOperators[mathrand.Intn(len(allOperators))]
+	var operatorTokens = [...]token.Token{token.XOR, token.ADD, token.SUB}
+	return operatorTokens[mathrand.Intn(len(operatorTokens))]
 }
 
 func evalOperator(t token.Token, x, y byte) byte {
diff --git a/internal/literals/split.go b/internal/literals/split.go
index 82f52db..1417c04 100644
--- a/internal/literals/split.go
+++ b/internal/literals/split.go
@@ -57,12 +57,11 @@ func shuffleStmts(stmts ...ast.Stmt) []ast.Stmt {
 
 // Encrypt chunks based on key and position
 func encryptChunks(chunks [][]byte, op token.Token, key int) {
-	idx := 0
-	for chunkIdx := range chunks {
-		chunk := chunks[chunkIdx]
+	byteOffset := 0
+	for _, chunk := range chunks {
 		for i := range chunk {
-			chunk[i] = evalOperator(op, chunk[i], byte(key^idx))
-			idx++
+			chunk[i] = evalOperator(op, chunk[i], byte(key^byteOffset))
+			byteOffset++
 		}
 	}
 }
@@ -76,8 +75,6 @@ func (x split) obfuscate(data []byte) *ast.BlockStmt {
 		chunks = splitIntoRandomChunks(data)
 	}
 
-	decryptOp := randOperator()
-
 	// Generate indexes for cases chunk count + 1 decrypt case + 1 exit case
 	indexes := mathrand.Perm(len(chunks) + 2)
 
@@ -87,7 +84,9 @@ func (x split) obfuscate(data []byte) *ast.BlockStmt {
 	for i, index := range indexes[:len(indexes)-1] {
 		decryptKey ^= index * i
 	}
-	encryptChunks(chunks, decryptOp, decryptKey)
+
+	op := randOperator()
+	encryptChunks(chunks, op, decryptKey)
 
 	decryptIndex := indexes[len(indexes)-2]
 	exitIndex := indexes[len(indexes)-1]
@@ -107,7 +106,7 @@ func (x split) obfuscate(data []byte) *ast.BlockStmt {
 					Lhs: []ast.Expr{ah.IndexExpr("data", ah.Ident("y"))},
 					Tok: token.ASSIGN,
 					Rhs: []ast.Expr{
-						operatorToReversedBinaryExpr(decryptOp, ah.IndexExpr("data", ah.Ident("y")), ah.CallExpr(ah.Ident("byte"), &ast.BinaryExpr{
+						operatorToReversedBinaryExpr(op, ah.IndexExpr("data", ah.Ident("y")), ah.CallExpr(ah.Ident("byte"), &ast.BinaryExpr{
 							X:  ah.Ident("decryptKey"),
 							Op: token.XOR,
 							Y:  ah.Ident("y"),
diff --git a/internal/literals/swap.go b/internal/literals/swap.go
index e2141e1..5f7b402 100644
--- a/internal/literals/swap.go
+++ b/internal/literals/swap.go
@@ -59,14 +59,14 @@ func (x swap) obfuscate(data []byte) *ast.BlockStmt {
 	swapCount := generateSwapCount(len(data))
 	shiftKey := byte(mathrand.Intn(math.MaxUint8))
 
-	localKeyOp := randOperator()
+	op := randOperator()
 
 	positions := genRandIntSlice(len(data), swapCount)
 	for i := len(positions) - 2; i >= 0; i -= 2 {
 		// Generate local key for xor based on random key and byte position
 		localKey := byte(i) + byte(positions[i]^positions[i+1]) + shiftKey
-		// Swap bytes from i+1 to i and xor using local key
-		data[positions[i]], data[positions[i+1]] = evalOperator(localKeyOp, data[positions[i+1]], localKey), evalOperator(localKeyOp, data[positions[i]], localKey)
+		// Swap bytes from i+1 to i and encrypt using operator and local key
+		data[positions[i]], data[positions[i+1]] = evalOperator(op, data[positions[i+1]], localKey), evalOperator(op, data[positions[i]], localKey)
 	}
 
 	return ah.BlockStmt(
@@ -129,12 +129,21 @@ func (x swap) obfuscate(data []byte) *ast.BlockStmt {
 					},
 					Tok: token.ASSIGN,
 					Rhs: []ast.Expr{
-						operatorToReversedBinaryExpr(localKeyOp, ah.IndexExpr("data", ah.IndexExpr("positions", &ast.BinaryExpr{
-							X:  ah.Ident("i"),
-							Op: token.ADD,
-							Y:  ah.IntLit(1),
-						})), ah.Ident("localKey")),
-						operatorToReversedBinaryExpr(localKeyOp, ah.IndexExpr("data", ah.IndexExpr("positions", ah.Ident("i"))), ah.Ident("localKey")),
+						operatorToReversedBinaryExpr(
+							op,
+							ah.IndexExpr("data",
+								ah.IndexExpr("positions", &ast.BinaryExpr{
+									X:  ah.Ident("i"),
+									Op: token.ADD,
+									Y:  ah.IntLit(1),
+								}),
+							),
+							ah.Ident("localKey")),
+						operatorToReversedBinaryExpr(
+							op,
+							ah.IndexExpr("data", ah.IndexExpr("positions", ah.Ident("i"))),
+							ah.Ident("localKey"),
+						),
 					},
 				},
 			),
diff --git a/internal/literals/xor_shuffle.go b/internal/literals/xor_shuffle.go
index fc38e6f..28f7a60 100644
--- a/internal/literals/xor_shuffle.go
+++ b/internal/literals/xor_shuffle.go
@@ -39,8 +39,8 @@ func (x xorShuffle) obfuscate(data []byte) *ast.BlockStmt {
 		args = append(args, operatorToReversedBinaryExpr(
 			operators[i],
 			ah.IndexExpr("fullData", ah.IntLit(shuffledIdxs[i])),
-			ah.IndexExpr("fullData", ah.IntLit(shuffledIdxs[len(data)+i]))),
-		)
+			ah.IndexExpr("fullData", ah.IntLit(shuffledIdxs[len(data)+i])),
+		))
 	}
 
 	return ah.BlockStmt(