user: What is the c source code of the assembly code below?

```asm
<getHumanDate>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %rdi,-0x18(%rbp)
  mov    %esi,-0x1c(%rbp)
  movl   $0x0,-0x8(%rbp)
  cmpl   $0x0,-0x1c(%rbp)
  jne    L365
  jmp    L193
L363:
  addl   $0x1,-0x8(%rbp)
L193:
  mov    -0x8(%rbp),%eax
  cltq
  neg    %rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0xa,%al
  jne    L152
  mov    -0x8(%rbp),%eax
  cltq
  mov    $0x1,%edx
  sub    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0xa,%al
  jne    L152
  mov    -0x8(%rbp),%eax
  cltq
  mov    $0x2,%edx
  sub    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x4e,%al
  jne    L152
  mov    -0x8(%rbp),%eax
  cltq
  mov    $0x3,%edx
  sub    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x6f,%al
  jne    L152
  mov    -0x8(%rbp),%eax
  cltq
  mov    $0x4,%edx
  sub    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  je     L153
L152:
  mov    -0x8(%rbp),%eax
  cltq
  neg    %rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x53,%al
  jne    L342
  mov    -0x8(%rbp),%eax
  cltq
  mov    $0x1,%edx
  sub    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x70,%al
  jne    L342
  mov    -0x8(%rbp),%eax
  cltq
  mov    $0x2,%edx
  sub    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x65,%al
  jne    L342
  mov    -0x8(%rbp),%eax
  cltq
  mov    $0x3,%edx
  sub    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x61,%al
  jne    L342
  mov    -0x8(%rbp),%eax
  cltq
  mov    $0x4,%edx
  sub    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x6b,%al
  jne    L342
  mov    -0x8(%rbp),%eax
  cltq
  mov    $0x5,%edx
  sub    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x65,%al
  jne    L342
  mov    -0x8(%rbp),%eax
  cltq
  mov    $0x6,%edx
  sub    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x72,%al
  jne    L342
  mov    -0x8(%rbp),%eax
  cltq
  mov    $0x7,%edx
  sub    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0xa,%al
  jne    L342
  mov    -0x8(%rbp),%eax
  cltq
  mov    $0x8,%edx
  sub    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x4e,%al
  jne    L342
  mov    -0x8(%rbp),%eax
  cltq
  mov    $0x9,%edx
  sub    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x6f,%al
  jne    L342
  mov    -0x8(%rbp),%eax
  cltq
  mov    $0xa,%edx
  sub    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  je     L153
L342:
  mov    -0x8(%rbp),%eax
  cltq
  neg    %rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  jne    L363
  mov    -0x8(%rbp),%eax
  cltq
  mov    $0x1,%edx
  sub    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0xa,%al
  jne    L363
  mov    -0x8(%rbp),%eax
  cltq
  mov    $0x2,%edx
  sub    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  jne    L363
  mov    -0x8(%rbp),%eax
  cltq
  mov    $0x3,%edx
  sub    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0xa,%al
  jne    L363
  mov    -0x8(%rbp),%eax
  cltq
  mov    $0x4,%edx
  sub    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x4e,%al
  jne    L363
  mov    -0x8(%rbp),%eax
  cltq
  mov    $0x5,%edx
  sub    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x6f,%al
  jne    L363
  mov    -0x8(%rbp),%eax
  cltq
  mov    $0x6,%edx
  sub    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  jne    L363
L153:
  movl   $0x4,-0xc(%rbp)
  jmp    L198
L24:
  addl   $0x1,-0x8(%rbp)
L365:
  mov    -0x8(%rbp),%eax
  cltq
  neg    %rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  jne    L24
  mov    -0x8(%rbp),%eax
  cltq
  mov    $0x1,%edx
  sub    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  jne    L24
  mov    -0x8(%rbp),%eax
  cltq
  mov    $0x2,%edx
  sub    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  jne    L24
  mov    -0x8(%rbp),%eax
  cltq
  mov    $0x3,%edx
  sub    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x4e,%al
  jne    L24
  mov    -0x8(%rbp),%eax
  cltq
  mov    $0x4,%edx
  sub    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x6f,%al
  jne    L24
  mov    -0x8(%rbp),%eax
  cltq
  mov    $0x5,%edx
  sub    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x2e,%al
  jne    L24
  movl   $0x5,-0xc(%rbp)
L198:
  mov    -0x8(%rbp),%eax
  cltq
  neg    %rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  lea    D3(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strstr@plt>
  mov    %rax,-0x18(%rbp)
  cmpq   $0x0,-0x18(%rbp)
  je     L11
  mov    -0xc(%rbp),%eax
  cltq
  add    %rax,-0x18(%rbp)
L11:
  movl   $0x0,-0x4(%rbp)
  jmp    L67
L275:
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%edx
  mov    -0x4(%rbp),%eax
  cltq
  lea    D37(%rip),%rcx
  mov    %dl,(%rax,%rcx,1)
  addl   $0x1,-0x4(%rbp)
  addq   $0x1,-0x18(%rbp)
L67:
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0xa,%al
  jne    L275
  jmp    L85
L98:
  mov    -0x4(%rbp),%eax
  cltq
  lea    D37(%rip),%rdx
  movb   $0x0,(%rax,%rdx,1)
  addl   $0x1,-0x4(%rbp)
L85:
  cmpl   $0x63,-0x4(%rbp)
  jle    L98
  lea    D37(%rip),%rax
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: label: D3
data_type: string

tool: D3: day

assistant: ```c
char *getHumanDate(char *pointer, int isCouncil) {
  int shift;
  int pos = 0;
  if (isCouncil == 0) {
    while (!((*(pointer - pos) == 0x0a && *(pointer - pos + 1) == 0x0a && *(pointer - pos + 2) == 0x4e && *(pointer - pos + 3) == 0x6f && *(pointer - pos + 4) == 0x20) || (*(pointer - pos) == 0x53 && *(pointer - pos + 1) == 0x70 && *(pointer - pos + 2) == 0x65 && *(pointer - pos + 3) == 0x61 && *(pointer - pos + 4) == 0x6b && *(pointer - pos + 5) == 0x65 && *(pointer - pos + 6) == 0x72 && *(pointer - pos + 7) == 0x0a && *(pointer - pos + 8) == 0x4e && *(pointer - pos + 9) == 0x6f && *(pointer - pos + 10) == 0x20) || (*(pointer - pos) == 0x20 && *(pointer - pos + 1) == 0x0a && *(pointer - pos + 2) == 0x20 && *(pointer - pos + 3) == 0x0a && *(pointer - pos + 4) == 0x4e && *(pointer - pos + 5) == 0x6f && *(pointer - pos + 6) == 0x20))) {
      pos++;
    }
    shift = 4;
  } else {
    while (!(*(pointer - pos) == 0x20 && *(pointer - pos + 1) == 0x20 && *(pointer - pos + 2) == 0x20 && *(pointer - pos + 3) == 0x4e && *(pointer - pos + 4) == 0x6f && *(pointer - pos + 5) == 0x2e)) {
      pos++;
    }
    shift = 5;
  }
  pointer = strstr(pointer - pos, "day");
  if (pointer != 0)
    pointer = pointer + shift;
  static char humandate[100] = {0};
  int hdatepos = 0;
  while (!(*pointer == 0x0a)) {
    humandate[hdatepos] = *pointer;
    hdatepos++;
    pointer++;
  }
  while (hdatepos <= 99) {
    humandate[hdatepos] = 0;
    hdatepos++;
  }
  return humandate;
}
```