user: 请从给定的汇编指令推导出C源代码：

```asm
<getDay>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    $0x0,%edi
  call   <sceKernelLibcTime@plt>
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  sub    $0x41d5e800,%eax
  movslq %eax,%rdx
  imul   $0xffffffffc22e4507,%rdx,%rdx
  shr    $0x20,%rdx
  add    %eax,%edx
  sar    $0x10,%edx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,-0x4(%rbp)
  cmpl   $0x1f,-0x4(%rbp)
  jg     L23
  mov    $0x1f,%eax
  sub    -0x4(%rbp),%eax
  mov    %eax,-0xc(%rbp)
  jmp    L140
L23:
  cmpl   $0x1f,-0x4(%rbp)
  jle    L115
  cmpl   $0x3b,-0x4(%rbp)
  jg     L115
  mov    $0x3b,%eax
  sub    -0x4(%rbp),%eax
  mov    %eax,-0xc(%rbp)
  jmp    L140
L115:
  cmpl   $0x3b,-0x4(%rbp)
  jle    L211
  cmpl   $0x5a,-0x4(%rbp)
  jg     L211
  mov    $0x5a,%eax
  sub    -0x4(%rbp),%eax
  mov    %eax,-0xc(%rbp)
  jmp    L140
L211:
  cmpl   $0x5a,-0x4(%rbp)
  jle    L231
  cmpl   $0x78,-0x4(%rbp)
  jg     L231
  mov    $0x78,%eax
  sub    -0x4(%rbp),%eax
  mov    %eax,-0xc(%rbp)
  jmp    L140
L231:
  cmpl   $0x78,-0x4(%rbp)
  jle    L42
  cmpl   $0x97,-0x4(%rbp)
  jg     L42
  mov    $0x97,%eax
  sub    -0x4(%rbp),%eax
  mov    %eax,-0xc(%rbp)
  jmp    L140
L42:
  cmpl   $0x97,-0x4(%rbp)
  jle    L190
  cmpl   $0xb5,-0x4(%rbp)
  jg     L190
  mov    $0xb5,%eax
  sub    -0x4(%rbp),%eax
  mov    %eax,-0xc(%rbp)
  jmp    L140
L190:
  cmpl   $0xb5,-0x4(%rbp)
  jle    L112
  cmpl   $0xd4,-0x4(%rbp)
  jg     L112
  mov    $0xd4,%eax
  sub    -0x4(%rbp),%eax
  mov    %eax,-0xc(%rbp)
  jmp    L140
L112:
  cmpl   $0xd4,-0x4(%rbp)
  jle    L286
  cmpl   $0xf3,-0x4(%rbp)
  jg     L286
  mov    $0xf3,%eax
  sub    -0x4(%rbp),%eax
  mov    %eax,-0xc(%rbp)
  jmp    L140
L286:
  cmpl   $0xf3,-0x4(%rbp)
  jle    L300
  cmpl   $0x111,-0x4(%rbp)
  jg     L300
  mov    $0x111,%eax
  sub    -0x4(%rbp),%eax
  mov    %eax,-0xc(%rbp)
  jmp    L140
L300:
  cmpl   $0x111,-0x4(%rbp)
  jle    L281
  cmpl   $0x130,-0x4(%rbp)
  jg     L281
  mov    $0x130,%eax
  sub    -0x4(%rbp),%eax
  mov    %eax,-0xc(%rbp)
  jmp    L140
L281:
  cmpl   $0x130,-0x4(%rbp)
  jle    L181
  cmpl   $0x14e,-0x4(%rbp)
  jg     L181
  mov    $0x14e,%eax
  sub    -0x4(%rbp),%eax
  mov    %eax,-0xc(%rbp)
  jmp    L140
L181:
  cmpl   $0x14e,-0x4(%rbp)
  jle    L140
  cmpl   $0x16d,-0x4(%rbp)
  jg     L140
  mov    $0x16d,%eax
  sub    -0x4(%rbp),%eax
  mov    %eax,-0xc(%rbp)
L140:
  mov    -0xc(%rbp),%eax
  mov    %eax,%edi
  call   <convertTOchar@plt>
  mov    %rax,D14(%rip)
  mov    D14(%rip),%rax
  leave
  ret
```

assistant: ```c
char *getDay() {
  int tempy = sceKernelLibcTime((void *)0);
  int days_this_year = (tempy - 1104537600) / (24 * 60 * 60);
  int day_of_month;
  static char *day;
  if (days_this_year <= 31) {
    day_of_month = 31 - days_this_year;
  } else if (days_this_year > 31 && days_this_year <= 59) {
    day_of_month = 59 - days_this_year;
  } else if (days_this_year > 59 && days_this_year <= 90) {
    day_of_month = 90 - days_this_year;
  } else if (days_this_year > 90 && days_this_year <= 120) {
    day_of_month = 120 - days_this_year;
  } else if (days_this_year > 120 && days_this_year <= 151) {
    day_of_month = 151 - days_this_year;
  } else if (days_this_year > 151 && days_this_year <= 181) {
    day_of_month = 181 - days_this_year;
  } else if (days_this_year > 181 && days_this_year <= 212) {
    day_of_month = 212 - days_this_year;
  } else if (days_this_year > 212 && days_this_year <= 243) {
    day_of_month = 243 - days_this_year;
  } else if (days_this_year > 243 && days_this_year <= 273) {
    day_of_month = 273 - days_this_year;
  } else if (days_this_year > 273 && days_this_year <= 304) {
    day_of_month = 304 - days_this_year;
  } else if (days_this_year > 304 && days_this_year <= 334) {
    day_of_month = 334 - days_this_year;
  } else if (days_this_year > 334 && days_this_year <= 365) {
    day_of_month = 365 - days_this_year;
  }
  day = convertTOchar(day_of_month);
  return day;
}
```