void f() { printf("yes\n"); } int main() { int x; x = random(); if (x < 100) { int y; y = random(); if (y < 100) { f(); } } } -- .file "stack.c" .section .rodata .LC0: .string "yes\n" .text .p2align 2,,3 .globl f .type f, @function f: pushl %ebp movl %esp, %ebp subl $8, %esp subl $12, %esp pushl $.LC0 call printf addl $16, %esp leave ret .size f, .-f .p2align 2,,3 .globl main .type main, @function main: pushl %ebp movl %esp, %ebp subl $8, %esp andl $-16, %esp movl $0, %eax addl $15, %eax addl $15, %eax shrl $4, %eax sall $4, %eax subl %eax, %esp call random movl %eax, -4(%ebp) cmpl $99, -4(%ebp) jg .L3 call random movl %eax, -8(%ebp) cmpl $99, -8(%ebp) jg .L3 call f .L3: leave ret .size main, .-main .ident "GCC: (GNU) 3.4.4 [FreeBSD] 20050518"