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

```asm
<sdt_1_check>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x18,%rsp
  mov    %rdi,%rbp
  mov    %fs:0x28,%rax
  mov    %rax,0x8(%rsp)
  xor    %eax,%eax
  call   <createStringArray@plt>
  mov    %rax,%rbx
  movl   $0x0,0x4(%rsp)
  lea    0x4(%rsp),%rdx
  mov    %rax,%rsi
  mov    %rbp,%rdi
  call   <splitString@plt>
  cmpl   $0x3,0x4(%rsp)
  je     L222
L306:
  cmpl   $0x4,0x4(%rsp)
  je     L386
L330:
  mov    %rbx,%rdi
  call   <destroyStringArray@plt>
  mov    $0x0,%eax
L421:
  mov    0x8(%rsp),%rdx
  sub    %fs:0x28,%rdx
  jne    L114
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  ret
L222:
  lea    D249(%rip),%rsi
  mov    (%rbx),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L89
  mov    0x8(%rbx),%rdi
  lea    D299(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L358
L89:
  lea    D249(%rip),%rsi
  mov    (%rbx),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L314
  mov    0x8(%rbx),%rdi
  lea    D299(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L1
L314:
  lea    D152(%rip),%rsi
  mov    (%rbx),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L439
  mov    0x8(%rbx),%rdi
  lea    D48(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L335
L439:
  lea    D152(%rip),%rsi
  mov    (%rbx),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L263
  mov    0x8(%rbx),%rdi
  lea    D48(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L396
L263:
  lea    D249(%rip),%rsi
  mov    (%rbx),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L436
  mov    0x8(%rbx),%rdi
  lea    D299(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L375
L436:
  lea    D152(%rip),%rsi
  mov    (%rbx),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L306
  mov    0x8(%rbx),%rdi
  lea    D48(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L306
  mov    0x10(%rbx),%rdi
  lea    D14(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L306
  mov    %rbx,%rdi
  call   <destroyStringArray@plt>
  mov    $0x1,%eax
  jmp    L421
L358:
  mov    0x10(%rbx),%rdi
  lea    D0(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L89
  mov    %rbx,%rdi
  call   <destroyStringArray@plt>
  mov    $0x1,%eax
  jmp    L421
L1:
  mov    0x10(%rbx),%rdi
  lea    D18(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L314
  mov    %rbx,%rdi
  call   <destroyStringArray@plt>
  mov    $0x1,%eax
  jmp    L421
L335:
  mov    0x10(%rbx),%rdi
  lea    D0(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L439
  mov    %rbx,%rdi
  call   <destroyStringArray@plt>
  mov    $0x1,%eax
  jmp    L421
L396:
  mov    0x10(%rbx),%rdi
  lea    D18(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L263
  mov    %rbx,%rdi
  call   <destroyStringArray@plt>
  mov    $0x1,%eax
  jmp    L421
L375:
  mov    0x10(%rbx),%rdi
  lea    D14(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L436
  mov    %rbx,%rdi
  call   <destroyStringArray@plt>
  mov    $0x1,%eax
  jmp    L421
L386:
  lea    D249(%rip),%rsi
  mov    (%rbx),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L220
  mov    0x8(%rbx),%rdi
  lea    D299(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L318
L220:
  lea    D152(%rip),%rsi
  mov    (%rbx),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L104
  mov    0x8(%rbx),%rdi
  lea    D48(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L119
L104:
  lea    D249(%rip),%rsi
  mov    (%rbx),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L111
  mov    0x8(%rbx),%rdi
  lea    D299(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L309
L111:
  lea    D152(%rip),%rsi
  mov    (%rbx),%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L330
  mov    0x8(%rbx),%rdi
  lea    D48(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L330
  mov    0x10(%rbx),%rdi
  lea    D0(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L330
  mov    0x18(%rbx),%rdi
  lea    D33(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L330
  mov    %rbx,%rdi
  call   <destroyStringArray@plt>
  mov    $0x1,%eax
  jmp    L421
L318:
  mov    0x10(%rbx),%rdi
  lea    D0(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L220
  mov    0x18(%rbx),%rdi
  lea    D232(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L220
  mov    %rbx,%rdi
  call   <destroyStringArray@plt>
  mov    $0x1,%eax
  jmp    L421
L119:
  mov    0x10(%rbx),%rdi
  lea    D0(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L104
  mov    0x18(%rbx),%rdi
  lea    D232(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L104
  mov    %rbx,%rdi
  call   <destroyStringArray@plt>
  mov    $0x1,%eax
  jmp    L421
L309:
  mov    0x10(%rbx),%rdi
  lea    D0(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L111
  mov    0x18(%rbx),%rdi
  lea    D33(%rip),%rsi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L111
  mov    %rbx,%rdi
  call   <destroyStringArray@plt>
  mov    $0x1,%eax
  jmp    L421
L114:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: unpack_data
arguments: label: D249
data_type: string
name: unpack_data
arguments: label: D299
data_type: string
name: unpack_data
arguments: label: D152
data_type: string
name: unpack_data
arguments: label: D48
data_type: string
name: unpack_data
arguments: label: D14
data_type: string
name: unpack_data
arguments: label: D0
data_type: string
name: unpack_data
arguments: label: D18
data_type: string
name: unpack_data
arguments: label: D33
data_type: string
name: unpack_data
arguments: label: D232
data_type: string

tool: D249: str

tool: D299: r0

tool: D152: ldr

tool: D48: r1

tool: D14: [r3, #0x0]

tool: D0: [r3]

tool: D18: [r3, #0]

tool: D33: #0x0

tool: D232: #0

assistant: ```c
int sdt_1_check(char *line) {
  char **splitted = createStringArray();
  int n = 0;
  splitString(line, splitted, &n);
  if (n == 3) {
    if (strcmp(splitted[0], "str") == 0 && strcmp(splitted[1], "r0") == 0 && strcmp(splitted[2], "[r3]") == 0) {
      destroyStringArray(splitted);
      return 1;
    }
    if (strcmp(splitted[0], "str") == 0 && strcmp(splitted[1], "r0") == 0 && strcmp(splitted[2], "[r3, #0]") == 0) {
      destroyStringArray(splitted);
      return 1;
    }
    if (strcmp(splitted[0], "ldr") == 0 && strcmp(splitted[1], "r1") == 0 && strcmp(splitted[2], "[r3]") == 0) {
      destroyStringArray(splitted);
      return 1;
    }
    if (strcmp(splitted[0], "ldr") == 0 && strcmp(splitted[1], "r1") == 0 && strcmp(splitted[2], "[r3, #0]") == 0) {
      destroyStringArray(splitted);
      return 1;
    }
    if (strcmp(splitted[0], "str") == 0 && strcmp(splitted[1], "r0") == 0 && strcmp(splitted[2], "[r3, #0x0]") == 0) {
      destroyStringArray(splitted);
      return 1;
    }
    if (strcmp(splitted[0], "ldr") == 0 && strcmp(splitted[1], "r1") == 0 && strcmp(splitted[2], "[r3, #0x0]") == 0) {
      destroyStringArray(splitted);
      return 1;
    }
  }
  if (n == 4) {
    if (strcmp(splitted[0], "str") == 0 && strcmp(splitted[1], "r0") == 0 && strcmp(splitted[2], "[r3]") == 0 && strcmp(splitted[3], "#0") == 0) {
      destroyStringArray(splitted);
      return 1;
    }
    if (strcmp(splitted[0], "ldr") == 0 && strcmp(splitted[1], "r1") == 0 && strcmp(splitted[2], "[r3]") == 0 && strcmp(splitted[3], "#0") == 0) {
      destroyStringArray(splitted);
      return 1;
    }
    if (strcmp(splitted[0], "str") == 0 && strcmp(splitted[1], "r0") == 0 && strcmp(splitted[2], "[r3]") == 0 && strcmp(splitted[3], "#0x0") == 0) {
      destroyStringArray(splitted);
      return 1;
    }
    if (strcmp(splitted[0], "ldr") == 0 && strcmp(splitted[1], "r1") == 0 && strcmp(splitted[2], "[r3]") == 0 && strcmp(splitted[3], "#0x0") == 0) {
      destroyStringArray(splitted);
      return 1;
    }
  }
  destroyStringArray(splitted);
  return 0;
}
```