0000000000401242 : 401242: push %rbx 401243: call 40149e # returns char* 401248: mov $0xa,%edx # rdx = 10 40124d: mov $0x0,%esi # rsi = 0 401252: mov %rax,%rdi # rdi = char* (return value of read_line) 401255: call 400bd0 # convert input to long, store in rax 40125a: mov %rax,%rbx # rbx = long number 40125d: lea -0x1(%rax),%eax # rax-- 401260: cmp $0x3e8,%eax 401265: jbe 40126c # if (rax <= 1000) safe 401267: call 40143a 40126c: mov %ebx,%esi # rsi = rbx 40126e: mov $0x6030f0,%edi # rdi = an address (36) 401273: call 401204 401278: cmp $0x2,%eax # return 2, safe 40127b: je 401282 40127d: call 40143a 401282: mov $0x402438,%edi 401287: call 400b10 40128c: call 4015c4 401291: pop %rbx 401292: ret # fun7(long *x, long y) 0000000000401204 : 401204: sub $0x8,%rsp 401208: test %rdi,%rdi 40120b: je 401238 # never 40120d: mov (%rdi),%edx # rdx = *x 40120f: cmp %esi,%edx 401211: jle 401220 # if (*x <= y) ret 401213: mov 0x8(%rdi),%rdi # rdi = *(rdi+8) 401217: call 401204 40121c: add %eax,%eax # rax *= 2 40121e: jmp 40123d 401220: mov $0x0,%eax # rax = 0 401225: cmp %esi,%edx 401227: je 40123d # if (*x == y) ret 401229: mov 0x10(%rdi),%rdi # rdi = *(rdi+16) 40122d: call 401204 401232: lea 0x1(%rax,%rax,1),%eax # rax = 2*rax + 1 401236: jmp 40123d 401238: mov $0xffffffff,%eax 40123d: add $0x8,%rsp 401241: ret