C (gcc), 111 109 101101 100 bytes
Edit: Added lowercasing per @FrownyFrog's comment; thanks to Lynn, Christoph and user5329483 for their suggestions!
f(s,t,i)char*s,*t;{for(t=s;t=strchr(t,95);*t=65+i;*t=i+1)for(i=1;i<32;s++i=3;i<64;s++)isalpha(*s)?i=2*i|*s<97,*s|=32:0;}