user: 请将以下的汇编代码转换成C语言代码:

```asm
<changeYourPassword>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x18,%rsp
  mov    %rdi,%r14
  mov    %rsi,%r13
  mov    $0x0,%ebp
  lea    D5(%rip),%r15
  jmp    L69
L76:
  lea    D88(%rip),%rdi
  call   <printf@plt>
  mov    $0x1,%edi
  call   <stringInput@plt>
  mov    %rax,%r12
  mov    %rax,%rdi
  call   <strlen@plt>
  test   %rax,%rax
  jle    L100
  lea    D37(%rip),%rdi
  call   <printf@plt>
  mov    $0x1,%edi
  call   <stringInput@plt>
  mov    %rax,0x8(%rsp)
  mov    %rax,%rdi
  call   <strlen@plt>
  test   %rax,%rax
  jle    L84
  mov    0x8(%rsp),%rsi
  mov    %r12,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L0
  cmp    $0x2,%ebp
  je     L37
  lea    D72(%rip),%rdi
  call   <printf@plt>
  jmp    L20
L100:
  lea    D26(%rip),%rdi
  call   <printf@plt>
  jmp    L92
L84:
  lea    D26(%rip),%rdi
  call   <printf@plt>
L20:
  mov    0x8(%rsp),%rdi
  call   <free@plt>
L92:
  mov    %r12,%rdi
  call   <free@plt>
L10:
  mov    %rbx,%rdi
  call   <free@plt>
  mov    $0x2,%edi
  call   <sleep@plt>
  add    $0x1,%ebp
  cmp    $0x2,%ebp
  jg     L103
L69:
  mov    %r15,%rdi
  call   <printf@plt>
  mov    $0x1,%edi
  call   <stringInput@plt>
  mov    %rax,%rbx
  mov    %rax,%rdx
  mov    %r13,%rsi
  mov    %r14,%rdi
  call   <searchForUser@plt>
  test   %rax,%rax
  jne    L76
  cmp    $0x2,%ebp
  je     L118
  lea    D24(%rip),%rdi
  call   <printf@plt>
  jmp    L10
L0:
  mov    %r12,%rdx
  mov    %r13,%rsi
  mov    %r14,%rdi
  call   <changePassword@plt>
  lea    D12(%rip),%rdi
  call   <printf@plt>
  mov    $0x3,%ebp
  jmp    L20
L37:
  lea    D41(%rip),%rdi
  call   <printf@plt>
  jmp    L20
L118:
  lea    D41(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <free@plt>
  mov    $0x2,%edi
  call   <sleep@plt>
L103:
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D5
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D88
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D37
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D72
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D26
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D24
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D12
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D41
type_guessed: string

tool: D5: Current password: 

tool: D88: New password: 

tool: D37: Re-enter new password: 

tool: D72: 
Non-equal inputs detected. Please try again.


tool: D26: 
Invalid password entered. Please try again.


tool: D24: 
Incorrect password. Try again.


tool: D12: 
Password change successful. Exiting program.


tool: D41: 
Too many tries used. Exiting program.


assistant: ```c
void changeYourPassword(sqlite3 *db, char *username) {
  char *password;
  char *newPassword, *newPassword2;
  for (int i = 0; i < 3; i++) {
    printf("Current password: ");
    password = stringInput(1);
    if (searchForUser(db, username, password)) {
      printf("New password: ");
      newPassword = stringInput(1);
      if (strlen(newPassword) <= 0) {
        printf("\nInvalid password entered. Please try again.\n");
      } else {
        printf("Re-enter new password: ");
        newPassword2 = stringInput(1);
        if (strlen(newPassword2) <= 0) {
          printf("\nInvalid password entered. Please try again.\n");
        } else {
          if (strcmp(newPassword, newPassword2) == 0) {
            changePassword(db, username, newPassword);
            printf("\nPassword change successful. Exiting program.\n");
            i = 3;
          } else if (i == 2) {
            printf("\nToo many tries used. Exiting program.\n");
          } else {
            printf("\nNon-equal inputs detected. Please try again.\n");
          }
        }
        free(newPassword2);
      }
      free(newPassword);
    } else if (i == 2) {
      printf("\nToo many tries used. Exiting program.\n");
    } else {
      printf("\nIncorrect password. Try again.\n");
    }
    free(password);
    sleep(2);
  }
}
```