Destrezas para el mid-term 2019

int main() { 
    int a = 8;
    int *p = malloc(4);
    *p = a;
    printf("%x %x %x", &p, p, *p);
}

¿Cuál de los siguientes outputs sería más correcto?
a. 8 0xff909090 0xff909088
b. 0xff909090 0xff909088 8 
c. 0xff909090 8 0xff909088 
d. ninguna de las anteriores

Ejercicios de práctica:

0804846b <dos>:
 804846b: push   ebp
 804846c: mov    ebp,esp
 804846e: mov    eax,DWORD PTR [ebp+0x8]
 8048471: imul   eax,DWORD PTR [ebp+0x8]
 8048475: pop    ebp
 8048476: ret    

08048477 <uno>:
 8048477: push   ebp
 8048478: mov    ebp,esp
 804847a: push   DWORD PTR [ebp+0x8]
 804847d: call   804846b <dos>
 8048482: add    esp,0x4
 8048485: mov    edx,eax
 8048487: mov    eax,edx
 8048489: add    eax,eax
 804848b: add    eax,edx
 804848d: leave  
 804848e: ret    

0804848f <main>:
 804848f: lea    ecx,[esp+0x4]
 8048493: and    esp,0xfffffff0
 8048496: push   DWORD PTR [ecx-0x4]
 8048499: push   ebp
 804849a: mov    ebp,esp
 804849c: push   ecx
 804849d: sub    esp,0x14
 80484a0: sub    esp,0x8
 80484a3: lea    eax,[ebp-0x10]
 80484a6: push   eax
 80484a7: push   0x8048570
 80484ac: call   8048350 <__isoc99_scanf@plt>
 80484b1: add    esp,0x10
 80484b4: mov    eax,DWORD PTR [ebp-0x10]
 80484b7: sub    esp,0xc
 80484ba: push   eax
 80484bb: call   8048477 <uno>
 80484c0: add    esp,0x10
 80484c3: mov    DWORD PTR [ebp-0xc],eax
 80484c6: sub    esp,0x8
 80484c9: push   DWORD PTR [ebp-0xc]
 80484cc: push   0x8048573
 80484d1: call   8048330 <printf@plt>
 80484d6: add    esp,0x10
 80484d9: mov    eax,0x0
 80484de: mov    ecx,DWORD PTR [ebp-0x4]
 80484e1: leave  
 80484e2: lea    esp,[ecx-0x4]
 80484e5: ret