user: 下面的汇编指令对应的C源代码是什么:

```asm
<main>:
  endbr64
  push   %r15
  lea    D454(%rip),%rdi
  push   %r14
  push   %r13
  lea    D416(%rip),%r13
  push   %r12
  lea    D433(%rip),%r12
  push   %rbp
  push   %rbx
  sub    $0x168,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x158(%rsp)
  xor    %eax,%eax
  movl   $0xffffffff,0x3c(%rsp)
  lea    0x3c(%rsp),%r15
  movl   $0xffffffff,0x40(%rsp)
  mov    %r15,%r14
  call   <puts@plt>
  lea    D125(%rip),%rdi
  call   <puts@plt>
  lea    D454(%rip),%rdi
  call   <puts@plt>
  mov    $0x2,%edi
  xor    %eax,%eax
  call   <sleep@plt>
  movb   $0x0,0x1f(%rsp)
  movb   $0x0,0x1e(%rsp)
  movb   $0x0,0x1d(%rsp)
  movl   $0x0,0x18(%rsp)
  movl   $0x0,0x20(%rsp)
  movl   $0x0,0x24(%rsp)
  nopl   (%rax)
L227:
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <sleep@plt>
  xor    %eax,%eax
  call   <clrscr@plt>
  lea    D454(%rip),%rdi
  call   <puts@plt>
  movl   $0xffffffff,0x3c(%rsp)
  nop
L240:
  lea    D33(%rip),%rdi
  call   <puts@plt>
  lea    D153(%rip),%rdi
  call   <puts@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  mov    %r14,%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <scanf@plt>
  mov    0x3c(%rsp),%ebx
  test   %ebx,%ebx
  jle    L240
  cmp    $0x1,%ebx
  je     L946
  cmp    $0x2,%ebx
  je     L967
  cmp    $0x3,%ebx
  jne    L227
  lea    D454(%rip),%rdi
  lea    D293(%rip),%rbp
  call   <puts@plt>
  lea    D270(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    D8(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  xor    %eax,%eax
  mov    %rbp,%rdi
  call   <printf@plt>
  cmpb   $0x1,0x1d(%rsp)
  je     L434
L169:
  cmpb   $0x1,0x1e(%rsp)
  je     L895
L339:
  cmpb   $0x1,0x1f(%rsp)
  je     L531
L644:
  xor    %eax,%eax
  mov    %rbp,%rdi
  call   <printf@plt>
  mov    0x158(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L1002
  add    $0x168,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L946:
  lea    D454(%rip),%rdi
  xor    %r15d,%r15d
  call   <puts@plt>
  lea    D127(%rip),%rdi
  call   <puts@plt>
  lea    D454(%rip),%rdi
  call   <puts@plt>
  lea    D282(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  xor    %eax,%eax
  call   <getchar@plt>
  lea    0x120(%rsp),%rax
  mov    %ebx,0x8(%rsp)
  mov    %r15,%rbx
  mov    %rax,0x10(%rsp)
  mov    %rax,%r15
  jmp    L810
  xchg   %ax,%ax
L1046:
  cmp    $0x14,%rbx
  je     L932
  mov    %al,(%r15,%rbx,1)
  add    $0x1,%rbx
L810:
  xor    %eax,%eax
  mov    %ebx,%ebp
  call   <getchar@plt>
  cmp    $0xa,%al
  jne    L1046
  movslq %ebp,%rax
  mov    0x8(%rsp),%ebx
  movb   $0x0,0x120(%rsp,%rax,1)
  cmp    $0x14,%ebp
  je     L921
L336:
  lea    D594(%rip),%rdi
  xor    %eax,%eax
  xor    %r15d,%r15d
  call   <printf@plt>
  jmp    L632
  nopw   0x0(%rax,%rax,1)
L860:
  cmp    $0x14,%r15
  je     L304
  mov    %al,0x140(%rsp,%r15,1)
  add    $0x1,%r15
L632:
  xor    %eax,%eax
  call   <getchar@plt>
  cmp    $0xa,%al
  jne    L860
  movslq %r15d,%rax
  movb   $0x0,0x140(%rsp,%rax,1)
  cmp    $0x14,%r15d
  je     L1034
L137:
  lea    D619(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    0x5a(%rsp),%rax
  mov    %rax,0x28(%rsp)
  mov    %rax,%rbp
  lea    0x60(%rsp),%rax
  mov    %rax,0x8(%rsp)
  nopl   0x0(%rax,%rax,1)
L657:
  xor    %eax,%eax
  call   <getchar@plt>
  mov    %eax,%r15d
  cmp    $0xa,%al
  je     L657
  movsbl %al,%edi
  call   <isalnum@plt>
  test   %eax,%eax
  je     L657
  mov    %r15b,0x0(%rbp)
  add    $0x1,%rbp
  cmp    0x8(%rsp),%rbp
  jne    L657
  movb   $0x0,0x146(%rsp)
  nopl   0x0(%rax)
L505:
  xor    %eax,%eax
  call   <getchar@plt>
  cmp    $0xa,%al
  jne    L505
  mov    0x8(%rsp),%rsi
  mov    0x10(%rsp),%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L1086
  lea    0x80(%rsp),%rsi
  lea    0x140(%rsp),%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L1086
  mov    0x28(%rsp),%rdi
  lea    0x48(%rsp),%rsi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L1086
L454:
  lea    D454(%rip),%rdi
  lea    D124(%rip),%rbp
  call   <puts@plt>
  lea    D95(%rip),%rdi
  lea    0x40(%rsp),%r15
  call   <puts@plt>
  lea    D454(%rip),%rdi
  call   <puts@plt>
  mov    %ebx,0x10(%rsp)
  mov    %r14,0x28(%rsp)
  nopw   0x0(%rax,%rax,1)
L281:
  mov    $0x4,%edi
  xor    %eax,%eax
  call   <sleep@plt>
  xor    %eax,%eax
  call   <clrscr@plt>
  mov    0x10(%rsp),%eax
  cmp    $0x1,%eax
  je     L433
  cmp    $0x2,%eax
  je     L330
  lea    D454(%rip),%rdi
  call   <puts@plt>
  mov    $0x3,%esi
  lea    D472(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    0x100(%rsp),%rdx
  lea    D598(%rip),%rdi
  xor    %eax,%eax
  lea    0xe0(%rsp),%rsi
  call   <printf@plt>
  mov    0x18(%rsp),%r14d
L840:
  mov    %r14d,%esi
  lea    D387(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    D454(%rip),%rdi
  call   <puts@plt>
  movl   $0xffffffff,0x40(%rsp)
L293:
  lea    D631(%rip),%rdi
  call   <puts@plt>
  lea    D187(%rip),%rdi
  call   <puts@plt>
  lea    D563(%rip),%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  mov    %r15,%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <scanf@plt>
  mov    0x40(%rsp),%eax
  test   %eax,%eax
  jle    L293
  cmp    $0x1,%eax
  je     L362
  cmp    $0x2,%eax
  je     L239
  cmp    $0x3,%eax
  je     L223
  cmp    $0x4,%eax
  jne    L281
  movl   $0xffffffff,0x38(%rsp)
  lea    0x38(%rsp),%rbx
  nopw   0x0(%rax,%rax,1)
L162:
  lea    D454(%rip),%rdi
  call   <puts@plt>
  lea    D483(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbx,%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <scanf@plt>
  mov    0x38(%rsp),%eax
  test   %eax,%eax
  js     L162
  cmp    %eax,%r14d
  jl     L162
  movl   $0xffffffff,0x44(%rsp)
  lea    0x44(%rsp),%rbx
  nopl   0x0(%rax)
L184:
  lea    D454(%rip),%rdi
  call   <puts@plt>
  lea    D115(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbx,%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <scanf@plt>
  mov    0x44(%rsp),%eax
  cmp    $0x4,%eax
  ja     L184
  cmp    0x10(%rsp),%eax
  je     L184
  lea    D454(%rip),%rdi
  call   <puts@plt>
  mov    0x44(%rsp),%eax
  cmp    $0x1,%eax
  je     L470
  cmp    $0x2,%eax
  je     L365
  cmp    $0x3,%eax
  jne    L800
  cmpb   $0x1,0x1f(%rsp)
  jne    L800
L991:
  cmpl   $0x1,0x10(%rsp)
  mov    0x38(%rsp),%eax
  je     L1058
  cmpl   $0x2,0x10(%rsp)
  je     L573
  sub    %eax,0x18(%rsp)
  mov    0x18(%rsp),%esi
  lea    D581(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
L770:
  mov    0x44(%rsp),%eax
  cmp    $0x1,%eax
  je     L402
  cmp    $0x2,%eax
  je     L839
  cmp    $0x3,%eax
  jne    L281
  mov    0x38(%rsp),%ecx
  add    %ecx,0x18(%rsp)
  lea    D581(%rip),%rdi
  xor    %eax,%eax
  mov    0x18(%rsp),%esi
  call   <printf@plt>
  jmp    L281
L932:
  movb   $0x0,0x134(%rsp)
  mov    0x8(%rsp),%ebx
L921:
  xor    %eax,%eax
  call   <getchar@plt>
  cmp    $0xa,%al
  je     L336
  xor    %eax,%eax
  call   <getchar@plt>
  cmp    $0xa,%al
  jne    L921
  jmp    L336
L304:
  movb   $0x0,0x154(%rsp)
L1034:
  xor    %eax,%eax
  call   <getchar@plt>
  cmp    $0xa,%al
  je     L137
  xor    %eax,%eax
  call   <getchar@plt>
  cmp    $0xa,%al
  jne    L1034
  jmp    L137
L1086:
  mov    0x10(%rsp),%rdi
  lea    0xa0(%rsp),%rsi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L270
  lea    0xc0(%rsp),%rsi
  lea    0x140(%rsp),%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L270
  mov    0x28(%rsp),%rdi
  lea    0x4e(%rsp),%rsi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L270
  mov    $0x2,%ebx
  jmp    L454
L270:
  mov    0x10(%rsp),%rdi
  lea    0xe0(%rsp),%rsi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L364
L174:
  lea    D61(%rip),%rdi
  call   <puts@plt>
L602:
  lea    D454(%rip),%rdi
  call   <puts@plt>
  jmp    L227
L967:
  lea    D454(%rip),%rdi
  xor    %ebp,%ebp
  call   <puts@plt>
  lea    D380(%rip),%rdi
  call   <puts@plt>
  lea    D454(%rip),%rdi
  call   <puts@plt>
  lea    D282(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  xor    %eax,%eax
  call   <getchar@plt>
  jmp    L638
  nopl   0x0(%rax)
L535:
  cmp    $0x14,%rbp
  je     L628
  mov    %al,0x120(%rsp,%rbp,1)
  add    $0x1,%rbp
L638:
  xor    %eax,%eax
  call   <getchar@plt>
  cmp    $0xa,%al
  jne    L535
  movslq %ebp,%rax
  movb   $0x0,0x120(%rsp,%rax,1)
  cmp    $0x14,%ebp
  je     L825
L1047:
  lea    D594(%rip),%rdi
  xor    %eax,%eax
  xor    %ebp,%ebp
  call   <printf@plt>
  jmp    L152
  cs nopw 0x0(%rax,%rax,1)
L130:
  cmp    $0x14,%rbp
  je     L726
  mov    %al,0x140(%rsp,%rbp,1)
  add    $0x1,%rbp
L152:
  xor    %eax,%eax
  call   <getchar@plt>
  cmp    $0xa,%al
  jne    L130
  movslq %ebp,%rax
  movb   $0x0,0x140(%rsp,%rax,1)
  cmp    $0x14,%ebp
  je     L957
L168:
  lea    D619(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    0x5a(%rsp),%rax
  mov    %rax,0x28(%rsp)
  mov    %rax,%rbx
  lea    0x60(%rsp),%rax
  mov    %rax,0x8(%rsp)
  nopl   0x0(%rax)
L30:
  xor    %eax,%eax
  call   <getchar@plt>
  mov    %eax,%ebp
  cmp    $0xa,%al
  je     L30
  movsbl %al,%edi
  call   <isalnum@plt>
  test   %eax,%eax
  je     L30
  mov    %bpl,(%rbx)
  add    $0x1,%rbx
  cmp    %rbx,0x8(%rsp)
  jne    L30
  movb   $0x0,0x146(%rsp)
  nop
L80:
  xor    %eax,%eax
  call   <getchar@plt>
  cmp    $0xa,%al
  jne    L80
  cmpb   $0x0,0x1d(%rsp)
  je     L232
  cmpb   $0x0,0x1e(%rsp)
  je     L1028
  cmpb   $0x0,0x1f(%rsp)
  jne    L284
  lea    0x120(%rsp),%rax
  lea    0xe0(%rsp),%rdi
  mov    %rax,%rsi
  call   <strcpy@plt>
  lea    0x140(%rsp),%rsi
  lea    0x100(%rsp),%rdi
  call   <strcpy@plt>
  mov    0x28(%rsp),%rsi
  lea    0x54(%rsp),%rdi
  call   <strcpy@plt>
  movzbl 0x1e(%rsp),%eax
  mov    %al,0x1f(%rsp)
  jmp    L923
L628:
  movb   $0x0,0x134(%rsp)
L825:
  xor    %eax,%eax
  call   <getchar@plt>
  cmp    $0xa,%al
  je     L1047
  xor    %eax,%eax
  call   <getchar@plt>
  cmp    $0xa,%al
  jne    L825
  jmp    L1047
L726:
  movb   $0x0,0x154(%rsp)
L957:
  xor    %eax,%eax
  call   <getchar@plt>
  cmp    $0xa,%al
  je     L168
  xor    %eax,%eax
  call   <getchar@plt>
  cmp    $0xa,%al
  jne    L957
  jmp    L168
L364:
  lea    0x100(%rsp),%rsi
  lea    0x140(%rsp),%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L174
  mov    0x28(%rsp),%rdi
  lea    0x54(%rsp),%rsi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L174
  mov    $0x3,%ebx
  jmp    L454
L232:
  mov    0x8(%rsp),%rdi
  lea    0x120(%rsp),%rax
  mov    %rax,%rsi
  call   <strcpy@plt>
  lea    0x140(%rsp),%rsi
  lea    0x80(%rsp),%rdi
  call   <strcpy@plt>
  mov    0x28(%rsp),%rsi
  lea    0x48(%rsp),%rdi
  call   <strcpy@plt>
L923:
  lea    D454(%rip),%rdi
  call   <puts@plt>
  movb   $0x1,0x1d(%rsp)
  jmp    L227
L531:
  mov    0x18(%rsp),%ecx
  lea    D59(%rip),%rdi
  xor    %eax,%eax
  lea    0x100(%rsp),%rdx
  lea    0xe0(%rsp),%rsi
  call   <printf@plt>
  jmp    L644
L895:
  mov    0x20(%rsp),%ecx
  lea    D59(%rip),%rdi
  xor    %eax,%eax
  lea    0xc0(%rsp),%rdx
  lea    0xa0(%rsp),%rsi
  call   <printf@plt>
  jmp    L339
L434:
  mov    0x24(%rsp),%ecx
  lea    0x60(%rsp),%rsi
  lea    D59(%rip),%rdi
  xor    %eax,%eax
  lea    0x80(%rsp),%rdx
  call   <printf@plt>
  jmp    L169
L284:
  lea    D645(%rip),%rdi
  call   <puts@plt>
  movzbl 0x1f(%rsp),%eax
  mov    %al,0x1e(%rsp)
  jmp    L923
L362:
  mov    0x28(%rsp),%r14
  jmp    L602
L330:
  lea    D454(%rip),%rdi
  call   <puts@plt>
  mov    $0x2,%esi
  lea    D472(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    0xc0(%rsp),%rdx
  lea    D598(%rip),%rdi
  xor    %eax,%eax
  lea    0xa0(%rsp),%rsi
  call   <printf@plt>
  mov    0x20(%rsp),%r14d
  jmp    L840
L433:
  lea    D454(%rip),%rdi
  call   <puts@plt>
  mov    $0x1,%esi
  lea    D472(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    0x8(%rsp),%rsi
  lea    D598(%rip),%rdi
  xor    %eax,%eax
  lea    0x80(%rsp),%rdx
  call   <printf@plt>
  mov    0x24(%rsp),%r14d
  jmp    L840
L239:
  movl   $0xffffffff,0x38(%rsp)
  lea    D22(%rip),%r14
  lea    0x38(%rsp),%rbx
  cs nopw 0x0(%rax,%rax,1)
L1:
  lea    D454(%rip),%rdi
  call   <puts@plt>
  mov    %r14,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbx,%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <scanf@plt>
  mov    0x38(%rsp),%eax
  test   %eax,%eax
  js     L1
  cmpl   $0x1,0x10(%rsp)
  je     L692
  cmpl   $0x2,0x10(%rsp)
  je     L641
  add    %eax,0x18(%rsp)
  jmp    L281
L1028:
  lea    0x120(%rsp),%rax
  lea    0xa0(%rsp),%rdi
  mov    %rax,%rsi
  call   <strcpy@plt>
  lea    0x140(%rsp),%rsi
  lea    0xc0(%rsp),%rdi
  call   <strcpy@plt>
  mov    0x28(%rsp),%rsi
  lea    0x4e(%rsp),%rdi
  call   <strcpy@plt>
  movzbl 0x1d(%rsp),%eax
  mov    %al,0x1e(%rsp)
  jmp    L923
L223:
  movl   $0xffffffff,0x38(%rsp)
  lea    0x38(%rsp),%rbx
  nopl   0x0(%rax)
L261:
  lea    D454(%rip),%rdi
  call   <puts@plt>
  lea    D229(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbx,%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <scanf@plt>
  mov    0x38(%rsp),%eax
  test   %eax,%eax
  js     L261
  cmp    %eax,%r14d
  jl     L261
  cmpl   $0x1,0x10(%rsp)
  je     L771
  cmpl   $0x2,0x10(%rsp)
  je     L385
  sub    %eax,0x18(%rsp)
  jmp    L281
L692:
  add    %eax,0x24(%rsp)
  jmp    L281
L365:
  cmpb   $0x1,0x1e(%rsp)
  je     L991
L800:
  lea    D566(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L281
L771:
  sub    %eax,0x24(%rsp)
  jmp    L281
L641:
  add    %eax,0x20(%rsp)
  jmp    L281
L470:
  cmpb   $0x1,0x1d(%rsp)
  jne    L800
  jmp    L991
L385:
  sub    %eax,0x20(%rsp)
  jmp    L281
L1058:
  sub    %eax,0x24(%rsp)
  mov    0x24(%rsp),%esi
  lea    D459(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L770
L839:
  mov    0x38(%rsp),%ecx
  add    %ecx,0x20(%rsp)
  lea    D524(%rip),%rdi
  xor    %eax,%eax
  mov    0x20(%rsp),%esi
  call   <printf@plt>
  jmp    L281
L402:
  mov    0x38(%rsp),%ecx
  add    %ecx,0x24(%rsp)
  lea    D459(%rip),%rdi
  xor    %eax,%eax
  mov    0x24(%rsp),%esi
  call   <printf@plt>
  jmp    L281
L573:
  sub    %eax,0x20(%rsp)
  mov    0x20(%rsp),%esi
  lea    D524(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L770
L1002:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: tag: D454
type_guessed: string
name: extract_symbolic_data
arguments: tag: D416
type_guessed: string
name: extract_symbolic_data
arguments: tag: D433
type_guessed: string
name: extract_symbolic_data
arguments: tag: D125
type_guessed: string
name: extract_symbolic_data
arguments: tag: D33
type_guessed: string
name: extract_symbolic_data
arguments: tag: D153
type_guessed: string
name: extract_symbolic_data
arguments: tag: D293
type_guessed: string
name: extract_symbolic_data
arguments: tag: D270
type_guessed: string
name: extract_symbolic_data
arguments: tag: D8
type_guessed: string
name: extract_symbolic_data
arguments: tag: D127
type_guessed: string
name: extract_symbolic_data
arguments: tag: D282
type_guessed: string
name: extract_symbolic_data
arguments: tag: D594
type_guessed: string
name: extract_symbolic_data
arguments: tag: D619
type_guessed: string
name: extract_symbolic_data
arguments: tag: D124
type_guessed: string
name: extract_symbolic_data
arguments: tag: D95
type_guessed: string
name: extract_symbolic_data
arguments: tag: D472
type_guessed: string
name: extract_symbolic_data
arguments: tag: D598
type_guessed: string
name: extract_symbolic_data
arguments: tag: D387
type_guessed: string
name: extract_symbolic_data
arguments: tag: D631
type_guessed: string
name: extract_symbolic_data
arguments: tag: D187
type_guessed: string
name: extract_symbolic_data
arguments: tag: D563
type_guessed: string
name: extract_symbolic_data
arguments: tag: D483
type_guessed: string
name: extract_symbolic_data
arguments: tag: D115
type_guessed: string
name: extract_symbolic_data
arguments: tag: D581
type_guessed: string
name: extract_symbolic_data
arguments: tag: D61
type_guessed: string
name: extract_symbolic_data
arguments: tag: D380
type_guessed: string
name: extract_symbolic_data
arguments: tag: D59
type_guessed: string
name: extract_symbolic_data
arguments: tag: D645
type_guessed: string
name: extract_symbolic_data
arguments: tag: D22
type_guessed: string
name: extract_symbolic_data
arguments: tag: D229
type_guessed: string
name: extract_symbolic_data
arguments: tag: D566
type_guessed: string
name: extract_symbolic_data
arguments: tag: D459
type_guessed: string
name: extract_symbolic_data
arguments: tag: D524
type_guessed: string

tool: D454: ----------

tool: D416: Enter 3 to end the program.

tool: D433: %d

tool: D125: Welcome to bank.c!

tool: D33: Enter 1 to log in.

tool: D153: Enter 2 to create an account.

tool: D293: 
-------------------------

tool: D270: -------------------------

tool: D8: 
|First	|Last	|Value	|

tool: D127: ~Login~

tool: D282: First Name: 

tool: D594: Last Name: 

tool: D619: Password: 

tool: D124: Enter 4 to transfer money to another account.

tool: D95: Login sucessful!

tool: D472: Account #%d


tool: D598: %s %s

tool: D387: 
Ballance: $%d


tool: D631: Enter 1 to log out.

tool: D187: Enter 2 to deposit money to your account.

tool: D563: Enter 3 to retrieve money from your account.

tool: D483: Tranfer: 

tool: D115: To account: 

tool: D581: Acc #3: %d


tool: D61: An account with that first name, last name, and password does not exist.

tool: D380: ~New Account~

tool: D59: 
|%s	|%s	|%d	|

tool: D645: Sorry, there are no more accounts availible.

tool: D22: Deposit: 

tool: D229: Retrieve: 

tool: D566: The specified account does not exist.

tool: D459: Acc #1: %d


tool: D524: Acc #2: %d


assistant: ```c
void main() {
  char first1[20], last1[20], first2[20], last2[20], first3[20], last3[20];
  char pass1[6], pass2[6], pass3[6];
  char firstc[20], lastc[20], passc[6];
  int val1 = 0, val2 = 0, val3 = 0;
  int change;
  char acc1 = 0, acc2 = 0, acc3 = 0;
  int curacc, curval;
  int accountloop = 1;
  int accountcmd = -1;
  int actionloop;
  int actioncmd = -1;
  int request;
  int accr;
  char let;
  printf("----------\n");
  printf("Welcome to bank.c!\n");
  printf("----------\n");
  sleep((unsigned int)2);
  while (accountloop == 1) {
    sleep((unsigned int)4);
    clrscr();
    printf("----------\n");
    curacc = 0;
    for (accountcmd = -1; accountcmd <= 0;) {
      printf("Enter 1 to log in.\n");
      printf("Enter 2 to create an account.\n");
      printf("Enter 3 to end the program.\n");
      scanf("%d", &accountcmd);
    }
    if (accountcmd == 1) {
      printf("----------\n");
      printf("~Login~\n");
      printf("----------\n");
      printf("First Name: ");
      request = 0;
      getchar();
      while (((let = getchar()) != '\n') && (request < 20)) {
        firstc[request] = let;
        request += 1;
      }
      firstc[request] = '\0';
      if (request >= 20)
        while ((let = getchar()) != '\n') {
        }
      printf("Last Name: ");
      request = 0;
      while (((let = getchar()) != '\n') && (request < 20)) {
        lastc[request] = let;
        request += 1;
      }
      lastc[request] = '\0';
      if (request >= 20)
        while ((let = getchar()) != '\n') {
        }
      printf("Password: ");
      request = 0;
      while (request < 6) {
        while (((let = getchar()) == '\n') || (isalnum(let) == 0)) {
        }
        passc[request] = let;
        request += 1;
      }
      lastc[request] = '\0';
      if (request >= 6)
        while ((let = getchar()) != '\n') {
        }
      else
        let = getchar();
      if ((strcmp(firstc, first1) == 0) && (strcmp(lastc, last1) == 0) && (strcmp(passc, pass1) == 0)) {
        curacc = 1;
        curval = val1;
      } else if ((strcmp(firstc, first2) == 0) && (strcmp(lastc, last2) == 0) && (strcmp(passc, pass2) == 0)) {
        curacc = 2;
        curval = val2;
      } else if ((strcmp(firstc, first3) == 0) && (strcmp(lastc, last3) == 0) && (strcmp(passc, pass3) == 0)) {
        curacc = 3;
        curval = val3;
      }
      if ((curacc > 0) && (curacc < 4)) {
        printf("----------\n");
        printf("Login sucessful!\n");
        printf("----------\n");
        actionloop = 1;
        while (actionloop == 1) {
          sleep((unsigned int)4);
          clrscr();
          if (curacc == 1)
            curval = val1;
          else if (curacc == 2)
            curval = val2;
          else if (curacc == 3)
            curval = val3;
          printf("----------\n");
          printf("Account #%d\n", curacc);
          if (curacc == 1)
            printf("%s %s", first1, last1);
          else if (curacc == 2)
            printf("%s %s", first2, last2);
          else if (curacc == 3)
            printf("%s %s", first3, last3);
          printf("\nBallance: $%d\n", curval);
          printf("----------\n");
          for (actioncmd = -1; actioncmd <= 0;) {
            printf("Enter 1 to log out.\n");
            printf("Enter 2 to deposit money to your account.\n");
            printf("Enter 3 to retrieve money from your account.\n");
            printf("Enter 4 to transfer money to another account.\n");
            scanf("%d", &actioncmd);
          }
          if (actioncmd == 1) {
            actionloop = 0;
          } else if (actioncmd == 2) {
            for (change = -1; change < 0;) {
              printf("----------\n");
              printf("Deposit: ");
              scanf("%d", &change);
            }
            if (curacc == 1)
              val1 += change;
            else if (curacc == 2)
              val2 += change;
            else if (curacc == 3)
              val3 += change;
          } else if (actioncmd == 3) {
            for (change = -1; (change < 0) || ((curval - abs(change)) < 0);) {
              printf("----------\n");
              printf("Retrieve: ");
              scanf("%d", &change);
            }
            if (curacc == 1)
              val1 -= change;
            else if (curacc == 2)
              val2 -= change;
            else if (curacc == 3)
              val3 -= change;
          } else if (actioncmd == 4) {
            for (change = -1; (change < 0) || ((curval - abs(change)) < 0);) {
              printf("----------\n");
              printf("Tranfer: ");
              scanf("%d", &change);
            }
            for (accr = -1; (accr < 0) || (accr > 4) || (accr == curacc);) {
              printf("----------\n");
              printf("To account: ");
              scanf("%d", &accr);
            }
            printf("----------\n");
            if (((accr == 1) && (acc1 == 1)) || ((accr == 2) && (acc2 == 1)) || ((accr == 3) && (acc3 == 1))) {
              if (curacc == 1) {
                val1 -= change;
                printf("Acc #1: %d\n", val1);
              } else if (curacc == 2) {
                val2 -= change;
                printf("Acc #2: %d\n", val2);
              } else if (curacc == 3) {
                val3 -= change;
                printf("Acc #3: %d\n", val3);
              }
              if (accr == 1) {
                val1 += change;
                printf("Acc #1: %d\n", val1);
              } else if (accr == 2) {
                val2 += change;
                printf("Acc #2: %d\n", val2);
              } else if (accr == 3) {
                val3 += change;
                printf("Acc #3: %d\n", val3);
              }
            } else {
              printf("The specified account does not exist.");
            }
          }
        }
      } else {
        printf("An account with that first name, last name, and password does not exist.\n");
      }
      printf("----------\n");
    } else if (accountcmd == 2) {
      printf("----------\n");
      printf("~New Account~\n");
      printf("----------\n");
      printf("First Name: ");
      request = 0;
      getchar();
      while (((let = getchar()) != '\n') && (request < 20)) {
        firstc[request] = let;
        request += 1;
      }
      firstc[request] = '\0';
      if (request >= 20)
        while ((let = getchar()) != '\n') {
        }
      printf("Last Name: ");
      request = 0;
      while (((let = getchar()) != '\n') && (request < 20)) {
        lastc[request] = let;
        request += 1;
      }
      lastc[request] = '\0';
      if (request >= 20)
        while ((let = getchar()) != '\n') {
        }
      printf("Password: ");
      request = 0;
      while (request < 6) {
        while (((let = getchar()) == '\n') || (isalnum(let) == 0)) {
        }
        passc[request] = let;
        request += 1;
      }
      lastc[request] = '\0';
      if (request >= 6)
        while ((let = getchar()) != '\n') {
        }
      else
        let = getchar();
      if (acc1 == 0) {
        strcpy(first1, firstc);
        strcpy(last1, lastc);
        strcpy(pass1, passc);
        acc1 = 1;
      } else if (acc2 == 0) {
        strcpy(first2, firstc);
        strcpy(last2, lastc);
        strcpy(pass2, passc);
        acc2 = 1;
      } else if (acc3 == 0) {
        strcpy(first3, firstc);
        strcpy(last3, lastc);
        strcpy(pass3, passc);
        acc3 = 1;
      } else {
        printf("Sorry, there are no more accounts availible.\n");
      }
      printf("----------\n");
    } else if (accountcmd == 3) {
      printf("----------\n");
      accountloop = 0;
    }
  }
  printf("-------------------------");
  printf("\n|First\t|Last\t|Value\t|");
  printf("\n-------------------------");
  if (acc1 == 1) {
    printf("\n|%s\t|%s\t|%d\t|", first1, last1, val1);
  }
  if (acc2 == 1) {
    printf("\n|%s\t|%s\t|%d\t|", first2, last2, val2);
  }
  if (acc3 == 1) {
    printf("\n|%s\t|%s\t|%d\t|", first3, last3, val3);
  }
  printf("\n-------------------------");
}
```