#!perl -nlw
BEGIN{
    $maxsize=100;
}
if (($line,$func)=/^\s*\d+\s+((\w+)\(.*\)\s+=\s+.+)/){
    $_=$line;
    $count{$func}++;
    unless($f{$func}){
        $f{$func}=[$_];
    } else {
        if(@{$f{$func}}<$maxsize){
            push @{$f{$func}},$_;
        } else {
# need to do reservoir sampling
            $r=rand$count{$func};
            if($r<$maxsize){
                $f{$func}->[$r]=$_;
            }
        }
    }
}
elsif(/\s*\d+\s+--- SIG.* ---$/){
}
elsif(/\s*\d+\s+\+\+\+ (exited with \d+|killed by \w+) \+\+\+$/){
}
else{
    print STDERR "ERROR weird line '$_'"}

END{
    for$func(sort keys %f){
        for(@{$f{$func}}){
            print "> $_";
        }
        print "";
    }
}
