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

```asm
<HandleNewSimpleTok>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x420,%rsp
  mov    %edi,%eax
  mov    %rsi,-0x400(%rbp)
  mov    %rdx,-0x408(%rbp)
  mov    %ecx,-0x3f8(%rbp)
  mov    %r8,-0x410(%rbp)
  mov    %r9d,-0x414(%rbp)
  mov    %al,-0x3f4(%rbp)
  mov    0x18(%rbp),%rax
  mov    %rax,-0x420(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  cmpl   $0x4,-0x414(%rbp)
  jne    L9
  lea    -0x3f0(%rbp),%rdx
  mov    -0x3f8(%rbp),%eax
  mov    %rdx,%rsi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <indents@plt>
  mov    %eax,%ecx
  mov    -0x410(%rbp),%rax
  mov    %rax,%rdx
  mov    %ecx,%esi
  lea    D36(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x3f8(%rbp),%eax
  lea    0x1(%rax),%edx
  lea    -0x3f0(%rbp),%rax
  mov    %rax,%rsi
  mov    %edx,%edi
  mov    $0x0,%eax
  call   <indents@plt>
  mov    %eax,%esi
  lea    D7(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x3f8(%rbp),%eax
  lea    0x1(%rax),%edx
  lea    -0x3f0(%rbp),%rax
  mov    %rax,%rsi
  mov    %edx,%edi
  mov    $0x0,%eax
  call   <indents@plt>
  mov    %eax,%edx
  mov    -0x420(%rbp),%rax
  lea    D6(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  lea    -0x3f0(%rbp),%rdx
  mov    -0x3f8(%rbp),%eax
  mov    %rdx,%rsi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <indents@plt>
  mov    %eax,%esi
  mov    -0x410(%rbp),%rdx
  mov    -0x408(%rbp),%rax
  mov    %rdx,%rcx
  mov    %esi,%edx
  lea    D2(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  movsbl -0x3f4(%rbp),%edx
  mov    -0x400(%rbp),%rax
  lea    D44(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  jmp    L2
L9:
  cmpl   $0x0,0x10(%rbp)
  jle    L22
  movsbl -0x3f4(%rbp),%edx
  mov    -0x400(%rbp),%rax
  lea    D42(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  jmp    L2
L22:
  movsbl -0x3f4(%rbp),%edx
  mov    -0x400(%rbp),%rax
  lea    D44(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
L2:
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L33
  call   <__stack_chk_fail@plt>
L33:
  leave
  ret
```

tool_calls: name: parse_data
arguments: label: D36
datatype: string
name: parse_data
arguments: label: D7
datatype: string
name: parse_data
arguments: label: D6
datatype: string
name: parse_data
arguments: label: D2
datatype: string
name: parse_data
arguments: label: D44
datatype: string
name: parse_data
arguments: label: D42
datatype: string

tool: D36: %s<%s>


tool: D7: %s<box_subtext>

tool: D6: </box_subtext>

tool: D2: 
%s</%s>


tool: D44: %c

tool: D42:  %c

assistant: ```c
void HandleNewSimpleTok(char c, char *Spew, char *CloseTags, int CIL, const char *xmltag, int CommLevel, int p, char *InnerClose) {
  char Temp[1000];
  if (CommLevel == 4) {
    printf("%s<%s>\n", indents(CIL, Temp), xmltag);
    printf("%s<box_subtext>", indents(CIL + 1, Temp));
    sprintf(InnerClose, "</box_subtext>", indents(CIL + 1, Temp));
    sprintf(CloseTags, "\n%s</%s>\n", indents(CIL, Temp), xmltag);
    sprintf(Spew, "%c", c);
  } else if (p > 0) {
    sprintf(Spew, " %c", c);
  } else {
    sprintf(Spew, "%c", c);
  }
}
```