diff --git a/c/dec/decode.c b/c/dec/decode.c
index 953523f..220c7e8 100644
--- a/c/dec/decode.c
+++ b/c/dec/decode.c
@@ -149,7 +149,7 @@
   }
   BrotliTakeBits(br, 3, &n);
   if (n != 0) {
-    s->window_bits = 17 + n;
+    s->window_bits = (17u + n) & 63u;
     return BROTLI_DECODER_SUCCESS;
   }
   BrotliTakeBits(br, 3, &n);
@@ -166,7 +166,7 @@
     }
   }
   if (n != 0) {
-    s->window_bits = 8 + n;
+    s->window_bits = (8u + n) & 63u;
     return BROTLI_DECODER_SUCCESS;
   }
   s->window_bits = 17;
@@ -2422,7 +2422,7 @@
           result = BROTLI_DECODER_NEEDS_MORE_INPUT;
           break;
         }
-        s->window_bits = (brotli_reg_t)bits;
+        s->window_bits = bits & 63u;
         if (s->window_bits < BROTLI_LARGE_MIN_WBITS ||
             s->window_bits > BROTLI_LARGE_MAX_WBITS) {
           result = BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS);
diff --git a/c/dec/state.c b/c/dec/state.c
index c2fefbe..be6a266 100644
--- a/c/dec/state.c
+++ b/c/dec/state.c
@@ -98,9 +98,9 @@
 
 void BrotliDecoderStateMetablockBegin(BrotliDecoderState* s) {
   s->meta_block_remaining_len = 0;
-  s->block_length[0] = 1U << 24;
-  s->block_length[1] = 1U << 24;
-  s->block_length[2] = 1U << 24;
+  s->block_length[0] = BROTLI_BLOCK_SIZE_CAP;
+  s->block_length[1] = BROTLI_BLOCK_SIZE_CAP;
+  s->block_length[2] = BROTLI_BLOCK_SIZE_CAP;
   s->num_block_types[0] = 1;
   s->num_block_types[1] = 1;
   s->num_block_types[2] = 1;
diff --git a/c/dec/state.h b/c/dec/state.h
index 49319f5..fd250b6 100644
--- a/c/dec/state.h
+++ b/c/dec/state.h
@@ -233,6 +233,7 @@
   uint8_t code_length_code_lengths[BROTLI_CODE_LENGTH_CODES];
   /* Population counts for the code lengths. */
   uint16_t code_length_histo[16];
+  /* TODO(eustas): +2 bytes padding */
 
   /* For HuffmanTreeGroupDecode. */
   int htree_index;
@@ -278,6 +279,8 @@
   int dist_rb_idx;
   int dist_rb[4];
   int error_code;
+  int meta_block_remaining_len;
+
   uint8_t* ringbuffer;
   uint8_t* ringbuffer_end;
   HuffmanCode* htree_command;
@@ -299,7 +302,6 @@
      computed. After distance computation it is used as a temporary variable. */
   int distance_context;
   brotli_reg_t block_length[3];
-  int meta_block_remaining_len;
   brotli_reg_t block_length_index;
   brotli_reg_t num_block_types[3];
   brotli_reg_t block_type_rb[6];
@@ -308,10 +310,6 @@
   brotli_reg_t num_dist_htrees;
   uint8_t* dist_context_map;
   HuffmanCode* literal_htree;
-  uint8_t dist_htree_index;
-
-  int copy_length;
-  int distance_code;
 
   /* For partial write operations. */
   size_t rb_roundtrips;  /* how many times we went around the ring-buffer */
@@ -321,6 +319,12 @@
   brotli_reg_t mtf_upper_bound;
   uint32_t mtf[64 + 1];
 
+  int copy_length;
+  int distance_code;
+
+  uint8_t dist_htree_index;
+  /* TODO(eustas): +3 bytes padding */
+
   /* Less used attributes are at the end of this struct. */
 
   brotli_decoder_metadata_start_func metadata_start_func;
@@ -336,16 +340,18 @@
   BrotliRunningDecodeUint8State substate_decode_uint8;
   BrotliRunningReadBlockLengthState substate_read_block_length;
 
+  int new_ringbuffer_size;
+  /* TODO(eustas): +4 bytes padding */
+
   unsigned int is_last_metablock : 1;
   unsigned int is_uncompressed : 1;
   unsigned int is_metadata : 1;
   unsigned int should_wrap_ringbuffer : 1;
   unsigned int canny_ringbuffer_allocation : 1;
   unsigned int large_window : 1;
+  unsigned int window_bits : 6;
   unsigned int size_nibbles : 8;
-  brotli_reg_t window_bits;
-
-  int new_ringbuffer_size;
+  /* TODO(eustas): +12 bits padding */
 
   brotli_reg_t num_literal_htrees;
   uint8_t* context_map;
@@ -383,6 +389,10 @@
   X = NULL;                                  \
 }
 
+/* Literal/Command/Distance block size maximum; same as maximum metablock size;
+   used as block size when there is no block switching. */
+#define BROTLI_BLOCK_SIZE_CAP (1U << 24)
+
 #if defined(__cplusplus) || defined(c_plusplus)
 }  /* extern "C" */
 #endif
