C#, 398 390 385 396396 389 bytes
class P{static void Main(string[] a){string s=""s="2"+System.Convert.ToString(int.Parse(a[0]),2),e="CIA: ",r="BANE: ",o="";int n=int.Parse(a[0]),k=0,l=0,i=1;for(;n>0;n/=2)s=""+n%2+s;s="2"+s;string[]i=1;string[] c="If I pull that off will you die? You're a big guy.".Split(' '),b="It would be extremely painful... for you!".Split(' ');for(;i<s.Length;i++)o+=(s[i-1]==s[i]?" ":(i<2?"":"\n")+(s[i]>'0'?e:r))+(s[i]>'0'?c[k++]:b[l++]);System.Console.Write(o);}}
Launch with input number as parameter.
Ungolfed:
class P
{
static void Main(string[] a)
{
string s = """2" + System.Convert.ToString(int.Parse(a[0]), 2), e = "CIA: ", r = "BANE: ", o = "";
int n = int.Parse(a[0]), k = 0, l = 0, i = 1;
for (; n > 0; n /= 2) s = "" + n % 2 + s;
s = "2" + s;
string[] c = "If I pull that off will you die? You're a big guy.".Split(' '), b = "It would be extremely painful... for you!".Split(' ');
for (; i < s.Length; i++)
o += (s[i - 1] == s[i] ? " " : (i<2?"":"\n") + (s[i] > '0' ? e : r))
+ (s[i] > '0' ? c[k++] : b[l++]);
System.Console.Write(o);
}
}
Back to 396 bytes because I didn't notice "no newline at the begining rule"begining" rule.