Wire.requestFrom() hangs when there is an analogRead() after it

Is the chip voltage supply 3.3V ? Are there pull-up resistors for the i2c-bus ?

When reading the chip, you write the address, and request the data.
The function Wire.available() ( Wire - Arduino Reference ) actually checks a buffer for data.
So you don't have to wait, just read the data.

old:

while(Wire.available() < 1)
    Serial.print("Wating... \n");
  Serial.println(Wire.read());

new:

while(Wire.available())
{
  Serial.println(Wire.read());
}

You also do an analogRead immediate after changing a register. Perhaps you should wait 10ms to 500ms until the voltage has settled.

You could make a function to read from the BQ76925, and a function to write data to the BQ76925. That way your code is easier to read and it prevents mistakes.

You could also run the i2c_scanner, to see if the i2c bus is still okay. Arduino Playground - I2cScanner
Arduino Playground - I2cScanner