user: Demonstrate the C code that generates the assembly output below:

```asm
<test_from_str>:
  endbr64
  sub    $0x8,%rsp
  xor    %edi,%edi
  call   <ol_color_from_string@plt>
  mov    %eax,%edi
  call   <print_color@plt>
  lea    D3(%rip),%rdi
  call   <ol_color_from_string@plt>
  mov    %eax,%edi
  call   <print_color@plt>
  lea    D23(%rip),%rdi
  call   <ol_color_from_string@plt>
  mov    %eax,%edi
  call   <print_color@plt>
  lea    D109(%rip),%rdi
  call   <ol_color_from_string@plt>
  mov    %eax,%edi
  call   <print_color@plt>
  lea    D62(%rip),%rdi
  call   <ol_color_from_string@plt>
  mov    %eax,%edi
  call   <print_color@plt>
  lea    D90(%rip),%rdi
  call   <ol_color_from_string@plt>
  mov    %eax,%edi
  call   <print_color@plt>
  lea    D20(%rip),%rdi
  call   <ol_color_from_string@plt>
  mov    %eax,%edi
  call   <print_color@plt>
  lea    D32(%rip),%rdi
  call   <ol_color_from_string@plt>
  mov    %eax,%edi
  call   <print_color@plt>
  lea    D67(%rip),%rdi
  call   <ol_color_from_string@plt>
  mov    %eax,%edi
  call   <print_color@plt>
  lea    D85(%rip),%rdi
  call   <ol_color_from_string@plt>
  mov    %eax,%edi
  call   <print_color@plt>
  lea    D87(%rip),%rdi
  call   <ol_color_from_string@plt>
  mov    %eax,%edi
  call   <print_color@plt>
  lea    D70(%rip),%rdi
  call   <ol_color_from_string@plt>
  mov    %eax,%edi
  call   <print_color@plt>
  lea    D46(%rip),%rdi
  call   <ol_color_from_string@plt>
  add    $0x8,%rsp
  mov    %eax,%edi
  jmp    1060 <print_color@plt>
```

tool_calls: name: retrieve_data
arguments: data_label: D3
type_guessed: string
name: retrieve_data
arguments: data_label: D23
type_guessed: string
name: retrieve_data
arguments: data_label: D109
type_guessed: string
name: retrieve_data
arguments: data_label: D62
type_guessed: string
name: retrieve_data
arguments: data_label: D90
type_guessed: string
name: retrieve_data
arguments: data_label: D20
type_guessed: string
name: retrieve_data
arguments: data_label: D32
type_guessed: string
name: retrieve_data
arguments: data_label: D67
type_guessed: string
name: retrieve_data
arguments: data_label: D85
type_guessed: string
name: retrieve_data
arguments: data_label: D87
type_guessed: string
name: retrieve_data
arguments: data_label: D70
type_guessed: string
name: retrieve_data
arguments: data_label: D46
type_guessed: string

tool: 

tool: D23: AABBCC

tool: D109: #AAEEGG

tool: D62: #000000

tool: D90: #FFFFFF

tool: D20: #ffffff

tool: D32: #3377aA

tool: D67: #abcdef

tool: D85: #ABCDEF

tool: D87: #123456

tool: D70: #789aBc

tool: D46: #0a0B0c

assistant: ```c
void test_from_str() {
  print_color(ol_color_from_string(NULL));
  print_color(ol_color_from_string(""));
  print_color(ol_color_from_string("AABBCC"));
  print_color(ol_color_from_string("#AAEEGG"));
  print_color(ol_color_from_string("#000000"));
  print_color(ol_color_from_string("#FFFFFF"));
  print_color(ol_color_from_string("#ffffff"));
  print_color(ol_color_from_string("#3377aA"));
  print_color(ol_color_from_string("#abcdef"));
  print_color(ol_color_from_string("#ABCDEF"));
  print_color(ol_color_from_string("#123456"));
  print_color(ol_color_from_string("#789aBc"));
  print_color(ol_color_from_string("#0a0B0c"));
}
```