[0x080485a4]> pdf @ sym.read_valid_int / (fcn) sym.read_valid_int 76 | sym.read_valid_int (int arg_8h, int arg_ch); | ; var int local_ch @ ebp-0xc | ; arg int arg_8h @ ebp+0x8 | ; arg int arg_ch @ ebp+0xc | ; CALL XREF from 0x080484ef (main) | 0x0804848b 55 push ebp | 0x0804848c 89e5 mov ebp, esp | 0x0804848e 83ec18 sub esp, 0x18 | 0x08048491 c745f4000000. mov dword [local_ch], 0 ;->int x=0 en dirección ebp-0xc | ..-> 0x08048498 83ec04 sub esp, 4 | :: 0x0804849b ff750c push dword [arg_ch] | :: 0x0804849e ff7508 push dword [arg_8h] | :: 0x080484a1 68c0850408 push str.Provide_a_number_x_between__d_and__d: ; 0x80485c0 ; "Provide a number x between %d and %d: " | :: 0x080484a6 e895feffff call sym.imp.printf ; int printf(const char *format) | :: 0x080484ab 83c410 add esp, 0x10 | :: 0x080484ae 83ec08 sub esp, 8 | :: 0x080484b1 8d45f4 lea eax, [local_ch] | :: 0x080484b4 50 push eax | :: 0x080484b5 68e7850408 push 0x80485e7 | :: 0x080484ba e8b1feffff call sym.imp.__isoc99_scanf ;->scanf | :: 0x080484bf 83c410 add esp, 0x10 | :: 0x080484c2 8b45f4 mov eax, dword [local_ch] ;->guarda valor de x en eax | :: 0x080484c5 394508 cmp dword [arg_8h], eax ; [0x13:4]=-1 ; 19 ;-> min < x | `==< 0x080484c8 7fce jg 0x8048498 | : 0x080484ca 8b45f4 mov eax, dword [local_ch] ;->guarda valor de x en eax | : 0x080484cd 3b450c cmp eax, dword [arg_ch] ; [0xc:4]=-1 ; 12 ;-> x > max | `=< 0x080484d0 7fc6 jg 0x8048498 | 0x080484d2 8b45f4 mov eax, dword [local_ch] | 0x080484d5 c9 leave \ 0x080484d6 c3 ret