Fix Microsoft VisualStudio build of brotli

- Move all variable declarations to the beginning of the block
- #ifdef-out read/write calls
diff --git a/brotli/dec/bit_reader.h b/brotli/dec/bit_reader.h
index a7ad460..96be036 100644
--- a/brotli/dec/bit_reader.h
+++ b/brotli/dec/bit_reader.h
@@ -149,8 +149,9 @@
 // Requires that n_bits is positive.
 static BROTLI_INLINE uint32_t BrotliReadBits(
     BrotliBitReader* const br, int n_bits) {
+  uint32_t val;
   BrotliFillBitWindow(br);
-  const uint32_t val = (uint32_t)(br->val_ >> br->bit_pos_) & kBitMask[n_bits];
+  val = (uint32_t)(br->val_ >> br->bit_pos_) & kBitMask[n_bits];
 #ifdef BROTLI_DECODE_DEBUG
   printf("[BrotliReadBits]  %010ld %2d  val: %6x\n",
          (br->pos_ << 3) + br->bit_pos_ - 64, n_bits, val);
diff --git a/brotli/dec/decode.c b/brotli/dec/decode.c
index df59463..ed9ef86 100644
--- a/brotli/dec/decode.c
+++ b/brotli/dec/decode.c
@@ -84,14 +84,15 @@
                                   size_t* meta_block_length,
                                   int* input_end,
                                   int* is_uncompressed) {
+  int size_nibbles;
+  int i;
   *input_end = BrotliReadBits(br, 1);
   *meta_block_length = 0;
   *is_uncompressed = 0;
   if (*input_end && BrotliReadBits(br, 1)) {
     return;
   }
-  int size_nibbles = BrotliReadBits(br, 2) + 4;
-  int i;
+  size_nibbles = BrotliReadBits(br, 2) + 4;
   for (i = 0; i < size_nibbles; ++i) {
     *meta_block_length |= BrotliReadBits(br, 4) << (i * 4);
   }
@@ -104,13 +105,17 @@
 // Decodes the next Huffman code from bit-stream.
 static BROTLI_INLINE int ReadSymbol(const HuffmanTree* tree,
                                     BrotliBitReader* br) {
+  uint32_t bits;
+  int bitpos;
+  int lut_ix;
+  int lut_bits;
   const HuffmanTreeNode* node = tree->root_;
   BrotliFillBitWindow(br);
-  uint32_t bits = BrotliPrefetchBits(br);
-  int bitpos = br->bit_pos_;
+  bits = BrotliPrefetchBits(br);
+  bitpos = br->bit_pos_;
   // Check if we find the bit combination from the Huffman lookup table.
-  const int lut_ix = bits & (HUFF_LUT - 1);
-  const int lut_bits = tree->lut_bits_[lut_ix];
+  lut_ix = bits & (HUFF_LUT - 1);
+  lut_bits = tree->lut_bits_[lut_ix];
   if (lut_bits <= HUFF_LUT_BITS) {
     BrotliSetBitPos(br, bitpos + lut_bits);
     return tree->lut_symbol_[lut_ix];
@@ -587,13 +592,13 @@
   BrotliMemInput memin;
   BrotliInput input = BrotliInitMemInput(encoded_buffer, encoded_size, &memin);
   BrotliBitReader br;
+  size_t meta_block_len;
+  int input_end;
+  int is_uncompressed;
   if (!BrotliInitBitReader(&br, input)) {
     return 0;
   }
   DecodeWindowBits(&br);
-  size_t meta_block_len;
-  int input_end;
-  int is_uncompressed;
   DecodeMetaBlockLength(&br, &meta_block_len, &input_end, &is_uncompressed);
   if (!input_end) {
     return 0;
@@ -636,6 +641,10 @@
   HuffmanTreeGroup hgroup[3];
   BrotliBitReader br;
 
+  static const int kRingBufferWriteAheadSlack = 16;
+
+  static const int kMaxDictionaryWordLength = 0;
+
   if (!BrotliInitBitReader(&br, input)) {
     return 0;
   }
@@ -644,10 +653,6 @@
   window_bits = DecodeWindowBits(&br);
   max_backward_distance = (1 << window_bits) - 16;
 
-  static const int kRingBufferWriteAheadSlack = 16;
-
-  static const int kMaxDictionaryWordLength = 0;
-
   ringbuffer_size = 1 << window_bits;
   ringbuffer_mask = ringbuffer_size - 1;
   ringbuffer = (uint8_t*)malloc(ringbuffer_size +
@@ -848,6 +853,7 @@
       if (pos == meta_block_end_pos) break;
 
       if (distance_code < 0) {
+        uint8_t context;
         if (!BrotliReadMoreInput(&br)) {
           printf("[BrotliDecompress] Unexpected end of input.\n");
           ok = 0;
@@ -862,7 +868,7 @@
           dist_context_map_slice = dist_context_map + dist_context_offset;
         }
         --block_length[2];
-        uint8_t context = copy_length > 4 ? 3 : copy_length - 2;
+        context = copy_length > 4 ? 3 : copy_length - 2;
         dist_htree_index = dist_context_map_slice[context];
         distance_code = ReadCopyDistance(&hgroup[2].htrees[dist_htree_index],
                                          num_direct_distance_codes,
diff --git a/brotli/dec/huffman.c b/brotli/dec/huffman.c
index b24a760..6327792 100644
--- a/brotli/dec/huffman.c
+++ b/brotli/dec/huffman.c
@@ -154,8 +154,9 @@
     int i = 1 << (HUFF_LUT_BITS - code_length);
     base_code = ReverseBitsShort(code, code_length);
     do {
+      int idx;
       --i;
-      const int idx = base_code | (i << code_length);
+      idx = base_code | (i << code_length);
       tree->lut_symbol_[idx] = (int16_t)symbol;
       tree->lut_bits_[idx] = code_length;
     } while (i > 0);
diff --git a/brotli/dec/streams.c b/brotli/dec/streams.c
index ac1a55d..2a34773 100644
--- a/brotli/dec/streams.c
+++ b/brotli/dec/streams.c
@@ -15,7 +15,9 @@
 // Functions for streaming input and output.
 
 #include <string.h>
+#ifndef _WIN32
 #include <unistd.h>
+#endif
 #include "./streams.h"
 
 #if defined(__cplusplus) || defined(c_plusplus)
@@ -37,10 +39,10 @@
 
 BrotliInput BrotliInitMemInput(const uint8_t* buffer, size_t length,
                                BrotliMemInput* mem_input) {
+  BrotliInput input;
   mem_input->buffer = buffer;
   mem_input->length = length;
   mem_input->pos = 0;
-  BrotliInput input;
   input.cb_ = &BrotliMemInputFunction;
   input.data_ = mem_input;
   return input;
@@ -58,17 +60,21 @@
 
 BrotliOutput BrotliInitMemOutput(uint8_t* buffer, size_t length,
                                  BrotliMemOutput* mem_output) {
+  BrotliOutput output;
   mem_output->buffer = buffer;
   mem_output->length = length;
   mem_output->pos = 0;
-  BrotliOutput output;
   output.cb_ = &BrotliMemOutputFunction;
   output.data_ = mem_output;
   return output;
 }
 
 int BrotliStdinInputFunction(void* data, uint8_t* buf, size_t count) {
+#ifndef _WIN32
   return read(STDIN_FILENO, buf, count);
+#else
+  return -1;
+#endif
 }
 
 BrotliInput BrotliStdinInput() {
@@ -79,7 +85,11 @@
 }
 
 int BrotliStdoutOutputFunction(void* data, const uint8_t* buf, size_t count) {
+#ifndef _WIN32
   return write(STDOUT_FILENO, buf, count);
+#else
+  return -1;
+#endif
 }
 
 BrotliOutput BrotliStdoutOutput() {