行いたいこと
組み合わせの式 64C32 の結果の下9桁を出力するプログラムをC言語で書きたい

試したこと
以下のようなコードで実行を試みたが、オーバーフローが生じてしまう

#include<stdio.h>
#define ll long long

ll combi(ll n, ll r){
  if (r == 0) {
      return 1;
  }
  return (n - r + 1) * combi(n, r - 1) / r;
}

int main(){
  printf("%09lld\n",combi(64 ,32 ) );
  return 0;
}

解答は 942590534 なのですが、-275878929539273115 のような結果になってしまいます。
どのようにコードを書けばいいでしょうか。