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

```asm
<brute_force_write_seq>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x18,%rsp
  lea    D38(%rip),%rax
  mov    %rax,%rdi
  call   <writeString@plt>
  mov    $0x4e2,%edi
  call   <writeHex@plt>
  lea    D37(%rip),%rax
  mov    %rax,%rdi
  call   <writeString@plt>
  mov    $0x4e2,%edi
  call   <i2c_write_clock_scale@plt>
  mov    $0x0,%eax
  call   <i2c_read_clock_scale@plt>
  mov    %eax,-0x14(%rbp)
  lea    D81(%rip),%rax
  mov    %rax,%rdi
  call   <writeString@plt>
  mov    -0x14(%rbp),%eax
  mov    %eax,%edi
  call   <writeHex@plt>
  cmpl   $0x4e2,-0x14(%rbp)
  jne    L36
  lea    D62(%rip),%rax
  mov    %rax,%rdi
  call   <writeString@plt>
  jmp    L43
L36:
  lea    D12(%rip),%rax
  mov    %rax,%rdi
  call   <writeString@plt>
L43:
  mov    $0x0,%esi
  mov    $0xf,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x1,%edi
  call   <hdmi_read_reg@plt>
  mov    %eax,-0x14(%rbp)
  cmpl   $0xca,-0x14(%rbp)
  jne    L48
  lea    D96(%rip),%rax
  mov    %rax,%rdi
  call   <writeString@plt>
  jmp    L28
L48:
  lea    D97(%rip),%rax
  mov    %rax,%rdi
  call   <writeString@plt>
  mov    -0x14(%rbp),%eax
  mov    %eax,%edi
  call   <writeHex@plt>
  lea    D79(%rip),%rax
  mov    %rax,%rdi
  call   <writeString@plt>
L28:
  mov    $0x2,%edi
  call   <hdmi_read_reg@plt>
  mov    %eax,%ebx
  mov    $0x3,%edi
  call   <hdmi_read_reg@plt>
  shl    $0x8,%eax
  and    $0xf00,%eax
  or     %ebx,%eax
  mov    %eax,-0x14(%rbp)
  cmpl   $0x613,-0x14(%rbp)
  jne    L19
  lea    D68(%rip),%rax
  mov    %rax,%rdi
  call   <writeString@plt>
  jmp    L10
L19:
  lea    D41(%rip),%rax
  mov    %rax,%rdi
  call   <writeString@plt>
  mov    -0x14(%rbp),%eax
  mov    %eax,%edi
  call   <writeHex@plt>
  lea    D1(%rip),%rax
  mov    %rax,%rdi
  call   <writeString@plt>
L10:
  mov    $0x0,%esi
  mov    $0x5,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x3d,%esi
  mov    $0x4,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x1d,%esi
  mov    $0x4,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x30,%esi
  mov    $0x61,%edi
  call   <hdmi_write_reg@plt>
  mov    $0xb2,%esi
  mov    $0x9,%edi
  call   <hdmi_write_reg@plt>
  mov    $0xf8,%esi
  mov    $0xa,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x37,%esi
  mov    $0xb,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0xf,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0xc9,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0xca,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0xcb,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0xcc,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0xcd,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0xce,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0xcf,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0xd0,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0xe1,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0xf,%edi
  call   <hdmi_write_reg@plt>
  mov    $0xc3,%esi
  mov    $0xf8,%edi
  call   <hdmi_write_reg@plt>
  mov    $0xa5,%esi
  mov    $0xf8,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x60,%esi
  mov    $0x22,%edi
  call   <hdmi_write_reg@plt>
  mov    $0xe0,%esi
  mov    $0x1a,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x48,%esi
  mov    $0x22,%edi
  call   <hdmi_write_reg@plt>
  mov    $0xff,%esi
  mov    $0xf8,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x1d,%esi
  mov    $0x4,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x30,%esi
  mov    $0x61,%edi
  call   <hdmi_write_reg@plt>
  mov    $0xff,%esi
  mov    $0xc,%edi
  call   <hdmi_write_reg@plt>
  mov    $0xff,%esi
  mov    $0xd,%edi
  call   <hdmi_write_reg@plt>
  mov    $0xcf,%esi
  mov    $0xe,%edi
  call   <hdmi_write_reg@plt>
  mov    $0xce,%esi
  mov    $0xe,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x1,%esi
  mov    $0x10,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x9,%esi
  mov    $0x15,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0xf,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x1,%esi
  mov    $0x10,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x9,%esi
  mov    $0x15,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x1,%esi
  mov    $0x10,%edi
  call   <hdmi_write_reg@plt>
  mov    $0xa0,%esi
  mov    $0x11,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0x12,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x20,%esi
  mov    $0x13,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0x14,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x3,%esi
  mov    $0x15,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x1,%esi
  mov    $0x10,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x9,%esi
  mov    $0x15,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x1,%esi
  mov    $0x10,%edi
  call   <hdmi_write_reg@plt>
  mov    $0xa0,%esi
  mov    $0x11,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x20,%esi
  mov    $0x12,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x20,%esi
  mov    $0x13,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0x14,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x3,%esi
  mov    $0x15,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x1,%esi
  mov    $0x10,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x9,%esi
  mov    $0x15,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x1,%esi
  mov    $0x10,%edi
  call   <hdmi_write_reg@plt>
  mov    $0xa0,%esi
  mov    $0x11,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x40,%esi
  mov    $0x12,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x20,%esi
  mov    $0x13,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0x14,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x3,%esi
  mov    $0x15,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x1,%esi
  mov    $0x10,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x9,%esi
  mov    $0x15,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x1,%esi
  mov    $0x10,%edi
  call   <hdmi_write_reg@plt>
  mov    $0xa0,%esi
  mov    $0x11,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x60,%esi
  mov    $0x12,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x20,%esi
  mov    $0x13,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0x14,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x3,%esi
  mov    $0x15,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x1d,%esi
  mov    $0x4,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x30,%esi
  mov    $0x61,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0xf,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x41,%esi
  mov    $0xc1,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x1,%esi
  mov    $0xf,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x10,%esi
  mov    $0x58,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x68,%esi
  mov    $0x59,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0x5a,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x3,%esi
  mov    $0x5b,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0x5c,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0x5e,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0x5f,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0x60,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0x61,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0x62,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0x63,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0x64,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0x65,%edi
  call   <hdmi_write_reg@plt>
  mov    $0xf4,%esi
  mov    $0x5d,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0xf,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x3,%esi
  mov    $0xcd,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0xf,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x1,%esi
  mov    $0xf,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0xf,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x1d,%esi
  mov    $0x4,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0x70,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0x72,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0xc0,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x15,%esi
  mov    $0x4,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x10,%esi
  mov    $0x61,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x18,%esi
  mov    $0x62,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x10,%esi
  mov    $0x63,%edi
  call   <hdmi_write_reg@plt>
  mov    $0xc,%esi
  mov    $0x64,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x15,%esi
  mov    $0x4,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x15,%esi
  mov    $0x4,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0xc,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x40,%esi
  mov    $0xd,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x1,%esi
  mov    $0xe,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0xe,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0xf,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0x61,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x0,%esi
  mov    $0xf,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x40,%esi
  mov    $0xc1,%edi
  call   <hdmi_write_reg@plt>
  mov    $0x3,%esi
  mov    $0xc6,%edi
  call   <hdmi_write_reg@plt>
  nop
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: data_tag: D38
type_infered: string
name: retrieve_data
arguments: data_tag: D37
type_infered: string
name: retrieve_data
arguments: data_tag: D81
type_infered: string
name: retrieve_data
arguments: data_tag: D62
type_infered: string
name: retrieve_data
arguments: data_tag: D12
type_infered: string
name: retrieve_data
arguments: data_tag: D96
type_infered: string
name: retrieve_data
arguments: data_tag: D97
type_infered: string
name: retrieve_data
arguments: data_tag: D79
type_infered: string
name: retrieve_data
arguments: data_tag: D68
type_infered: string
name: retrieve_data
arguments: data_tag: D41
type_infered: string
name: retrieve_data
arguments: data_tag: D1
type_infered: string

tool: D38: Setting clock_scale to 0x

tool: D37: 


tool: D81: clock scale = 0x

tool: D62:  - passed


tool: D12:  - FAILED


tool: D96: Correct vendor ID


tool: D97: FAILED - Vendor ID=0x

tool: D79:  but should be 0xca


tool: D68: Correct device ID


tool: D41: FAILED - Device ID=0x

tool: D1:  but should be 0x613


assistant: ```c
void brute_force_write_seq(void) {
  {
    int j;
    writeString("Setting clock_scale to 0x");
    writeHex(1250);
    writeString("\n");
    i2c_write_clock_scale(1250);
    j = i2c_read_clock_scale();
    writeString("clock scale = 0x");
    writeHex(j);
    if (j == 1250)
      writeString(" - passed\n");
    else
      writeString(" - FAILED\n");
    hdmi_write_reg(0x0f, 0);
    j = hdmi_read_reg(1);
    if (j == 0xca)
      writeString("Correct vendor ID\n");
    else {
      writeString("FAILED - Vendor ID=0x");
      writeHex(j);
      writeString(" but should be 0xca\n");
    }
    j = hdmi_read_reg(2) | ((hdmi_read_reg(3) & 0xf) << 8);
    if (j == 0x613)
      writeString("Correct device ID\n");
    else {
      writeString("FAILED - Device ID=0x");
      writeHex(j);
      writeString(" but should be 0x613\n");
    }
  }
  hdmi_write_reg(0x5, 0x0);
  hdmi_write_reg(0x4, 0x3d);
  hdmi_write_reg(0x4, 0x1d);
  hdmi_write_reg(0x61, 0x30);
  hdmi_write_reg(0x9, 0xb2);
  hdmi_write_reg(0xa, 0xf8);
  hdmi_write_reg(0xb, 0x37);
  hdmi_write_reg(0xf, 0x0);
  hdmi_write_reg(0xc9, 0x0);
  hdmi_write_reg(0xca, 0x0);
  hdmi_write_reg(0xcb, 0x0);
  hdmi_write_reg(0xcc, 0x0);
  hdmi_write_reg(0xcd, 0x0);
  hdmi_write_reg(0xce, 0x0);
  hdmi_write_reg(0xcf, 0x0);
  hdmi_write_reg(0xd0, 0x0);
  hdmi_write_reg(0xe1, 0x0);
  hdmi_write_reg(0xf, 0x0);
  hdmi_write_reg(0xf8, 0xc3);
  hdmi_write_reg(0xf8, 0xa5);
  hdmi_write_reg(0x22, 0x60);
  hdmi_write_reg(0x1a, 0xe0);
  hdmi_write_reg(0x22, 0x48);
  hdmi_write_reg(0xf8, 0xff);
  hdmi_write_reg(0x4, 0x1d);
  hdmi_write_reg(0x61, 0x30);
  hdmi_write_reg(0xc, 0xff);
  hdmi_write_reg(0xd, 0xff);
  hdmi_write_reg(0xe, 0xcf);
  hdmi_write_reg(0xe, 0xce);
  hdmi_write_reg(0x10, 0x1);
  hdmi_write_reg(0x15, 0x9);
  hdmi_write_reg(0xf, 0x0);
  hdmi_write_reg(0x10, 0x1);
  hdmi_write_reg(0x15, 0x9);
  hdmi_write_reg(0x10, 0x1);
  hdmi_write_reg(0x11, 0xa0);
  hdmi_write_reg(0x12, 0x0);
  hdmi_write_reg(0x13, 0x20);
  hdmi_write_reg(0x14, 0x0);
  hdmi_write_reg(0x15, 0x3);
  hdmi_write_reg(0x10, 0x1);
  hdmi_write_reg(0x15, 0x9);
  hdmi_write_reg(0x10, 0x1);
  hdmi_write_reg(0x11, 0xa0);
  hdmi_write_reg(0x12, 0x20);
  hdmi_write_reg(0x13, 0x20);
  hdmi_write_reg(0x14, 0x0);
  hdmi_write_reg(0x15, 0x3);
  hdmi_write_reg(0x10, 0x1);
  hdmi_write_reg(0x15, 0x9);
  hdmi_write_reg(0x10, 0x1);
  hdmi_write_reg(0x11, 0xa0);
  hdmi_write_reg(0x12, 0x40);
  hdmi_write_reg(0x13, 0x20);
  hdmi_write_reg(0x14, 0x0);
  hdmi_write_reg(0x15, 0x3);
  hdmi_write_reg(0x10, 0x1);
  hdmi_write_reg(0x15, 0x9);
  hdmi_write_reg(0x10, 0x1);
  hdmi_write_reg(0x11, 0xa0);
  hdmi_write_reg(0x12, 0x60);
  hdmi_write_reg(0x13, 0x20);
  hdmi_write_reg(0x14, 0x0);
  hdmi_write_reg(0x15, 0x3);
  hdmi_write_reg(0x4, 0x1d);
  hdmi_write_reg(0x61, 0x30);
  hdmi_write_reg(0xf, 0x0);
  hdmi_write_reg(0xc1, 0x41);
  hdmi_write_reg(0xf, 0x1);
  hdmi_write_reg(0x58, 0x10);
  hdmi_write_reg(0x59, 0x68);
  hdmi_write_reg(0x5a, 0x0);
  hdmi_write_reg(0x5b, 0x3);
  hdmi_write_reg(0x5c, 0x0);
  hdmi_write_reg(0x5e, 0x0);
  hdmi_write_reg(0x5f, 0x0);
  hdmi_write_reg(0x60, 0x0);
  hdmi_write_reg(0x61, 0x0);
  hdmi_write_reg(0x62, 0x0);
  hdmi_write_reg(0x63, 0x0);
  hdmi_write_reg(0x64, 0x0);
  hdmi_write_reg(0x65, 0x0);
  hdmi_write_reg(0x5d, 0xf4);
  hdmi_write_reg(0xf, 0x0);
  hdmi_write_reg(0xcd, 0x3);
  hdmi_write_reg(0xf, 0x0);
  hdmi_write_reg(0xf, 0x1);
  hdmi_write_reg(0xf, 0x0);
  hdmi_write_reg(0x4, 0x1d);
  hdmi_write_reg(0x70, 0x0);
  hdmi_write_reg(0x72, 0x0);
  hdmi_write_reg(0xc0, 0x0);
  hdmi_write_reg(0x4, 0x15);
  hdmi_write_reg(0x61, 0x10);
  hdmi_write_reg(0x62, 0x18);
  hdmi_write_reg(0x63, 0x10);
  hdmi_write_reg(0x64, 0xc);
  hdmi_write_reg(0x4, 0x15);
  hdmi_write_reg(0x4, 0x15);
  hdmi_write_reg(0xc, 0x0);
  hdmi_write_reg(0xd, 0x40);
  hdmi_write_reg(0xe, 0x1);
  hdmi_write_reg(0xe, 0x0);
  hdmi_write_reg(0xf, 0x0);
  hdmi_write_reg(0x61, 0x0);
  hdmi_write_reg(0xf, 0x0);
  hdmi_write_reg(0xc1, 0x40);
  hdmi_write_reg(0xc6, 0x3);
}
```