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

```asm
<test_spg_get_international>:
  endbr64
  push   %r12
  xor    %r9d,%r9d
  mov    $0x6,%r8d
  push   %rbp
  sub    $0x128,%rsp
  movsd  D90(%rip),%xmm1
  movsd  D95(%rip),%xmm0
  mov    %fs:0x28,%rax
  mov    %rax,0x118(%rsp)
  xor    %eax,%eax
  mov    %rsp,%rcx
  lea    0x70(%rsp),%rdx
  lea    0x20(%rsp),%rsi
  movsd  %xmm1,0xa0(%rsp)
  mov    D93(%rip),%rax
  lea    0x100(%rsp),%rbp
  movsd  %xmm1,0xa8(%rsp)
  mov    %rbp,%rdi
  movsd  D39(%rip),%xmm1
  movsd  %xmm0,0x20(%rsp)
  movsd  %xmm0,0x40(%rsp)
  movsd  D55(%rip),%xmm0
  movsd  %xmm1,0xb8(%rsp)
  movsd  %xmm1,0xc0(%rsp)
  movsd  D70(%rip),%xmm1
  mov    %rax,0x60(%rsp)
  movabs $0x100000001,%rax
  movsd  %xmm0,0x88(%rsp)
  movsd  %xmm0,0x90(%rsp)
  movsd  %xmm0,0x98(%rsp)
  movq   $0x0,0x28(%rsp)
  movq   $0x0,0x30(%rsp)
  movq   $0x0,0x38(%rsp)
  movq   $0x0,0x48(%rsp)
  movq   $0x0,0x50(%rsp)
  movq   $0x0,0x58(%rsp)
  movq   $0x0,0x70(%rsp)
  movq   $0x0,0x78(%rsp)
  movq   $0x0,0x80(%rsp)
  movq   $0x0,0xb0(%rsp)
  movq   $0x0,0xc8(%rsp)
  movsd  %xmm1,0xd0(%rsp)
  movsd  D52(%rip),%xmm2
  mov    %rax,(%rsp)
  movabs $0x200000002,%rax
  mov    %rax,0x8(%rsp)
  mov    %rax,0x10(%rsp)
  movsd  %xmm2,0xd8(%rsp)
  movsd  %xmm0,0xe0(%rsp)
  movsd  %xmm2,0xe8(%rsp)
  movsd  %xmm1,0xf0(%rsp)
  movsd  %xmm0,0xf8(%rsp)
  call   <spg_get_international@plt>
  lea    D4(%rip),%rdi
  mov    %eax,%r12d
  call   <puts@plt>
  test   %r12d,%r12d
  jle    L12
  mov    %r12d,%edx
  mov    %rbp,%rsi
  lea    D22(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
L1:
  mov    0x118(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L5
  add    $0x128,%rsp
  pop    %rbp
  pop    %r12
  ret
  nopl   0x0(%rax,%rax,1)
L12:
  lea    D0(%rip),%rdi
  call   <puts@plt>
  jmp    L1
L5:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: label: D90
datatype: f64
name: extract_symbolic_data
arguments: label: D95
datatype: byte[8]
name: extract_symbolic_data
arguments: label: D93
datatype: byte[8]
name: extract_symbolic_data
arguments: label: D39
datatype: f64
name: extract_symbolic_data
arguments: label: D55
datatype: f64
name: extract_symbolic_data
arguments: label: D70
datatype: f64
name: extract_symbolic_data
arguments: label: D52
datatype: f64
name: extract_symbolic_data
arguments: label: D4
datatype: string
name: extract_symbolic_data
arguments: label: D22
datatype: string
name: extract_symbolic_data
arguments: label: D0
datatype: string

tool: D90: 0.3

tool: {"D95": [0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x40]}

tool: {"D93": [0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x40]}

tool: D39: 0.7

tool: D55: 0.5

tool: D70: 0.2

tool: D52: 0.8

tool: D4: *** Example of spg_get_international ***:

tool: D22: %s (%d)


tool: D0: Space group could not be found.

assistant: ```c
void test_spg_get_international(void) {
  double lattice[3][3] = {{4, 0, 0}, {0, 4, 0}, {0, 0, 3}};
  double position[][3] = {
      {0, 0, 0}, {0.5, 0.5, 0.5}, {0.3, 0.3, 0}, {0.7, 0.7, 0}, {0.2, 0.8, 0.5}, {0.8, 0.2, 0.5},
  };
  int types[] = {1, 1, 2, 2, 2, 2};
  int num_spg, num_atom = 6;
  char symbol[21];
  num_spg = spg_get_international(symbol, lattice, position, types, num_atom, 1e-5);
  printf("*** Example of spg_get_international ***:\n");
  if (num_spg > 0) {
    printf("%s (%d)\n", symbol, num_spg);
  } else {
    printf("Space group could not be found.\n");
  }
}
```