C (gcc), 104103 bytes
char*b[99],**o,*l;f(s,n)char*s;{for(o=b;*s++;)*so=b;*s++;l=*s-34||(l=++n%434?l:++n%4?s+1:(*o++=strndup(l,s-l)));*o=0;return b;}
Usage:
f(input, 2)
returns an array with the keys
f(input, 0)
returns an array with the values
C (clang), 6867 bytes
*l;f(*s,n){for(;*s++;)*s;*s++;l=*s-34||(l=++n%434?l:++n%4?s+1:printf("%.*ls\n",s-l,l));}
Writes the output to stdout instead of returning arrays.