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

```asm
<set_usb_phy_config>:
  endbr64
  mov    $0xc1108400,%eax
  mov    (%rax),%edx
  and    $0x1f,%dl
  mov    %edx,(%rax)
  mov    (%rax),%edx
  and    $0x80ffffff,%edx
  mov    %edx,(%rax)
  mov    $0x1,%edx
  test   %edi,%edi
  je     L76
  mov    $0x3,%edx
  mov    $0x31,%edi
L76:
  mov    $0xc1108400,%eax
  mov    (%rax),%ecx
  shl    $0x18,%edi
  or     %ecx,%edi
  mov    %edi,(%rax)
  mov    (%rax),%ecx
  shl    $0x5,%edx
  or     %ecx,%edx
  mov    %edx,(%rax)
  mov    $0xc1108410,%edx
  mov    (%rdx),%ecx
  or     $0x800000,%ecx
  mov    %ecx,(%rdx)
  mov    (%rdx),%ecx
  or     $0x1000000,%ecx
  mov    %ecx,(%rdx)
  mov    (%rax),%edx
  or     $0x1,%dh
  mov    %edx,(%rax)
  mov    $0x1f5,%eax
L10:
  sub    $0x1,%eax
  jne    L10
  mov    $0xc1108400,%edx
  mov    (%rdx),%eax
  or     $0x20000,%eax
  mov    %eax,(%rdx)
  mov    $0x1f5,%eax
L98:
  sub    $0x1,%eax
  jne    L98
  mov    $0xc1108400,%edx
  mov    (%rdx),%eax
  and    $0xfffdffff,%eax
  mov    %eax,(%rdx)
  mov    $0x1f5,%eax
L6:
  sub    $0x1,%eax
  jne    L6
  mov    $0xc1108400,%edx
  mov    (%rdx),%eax
  or     $0x40000,%eax
  mov    %eax,(%rdx)
  mov    $0x1f5,%eax
L7:
  sub    $0x1,%eax
  jne    L7
  mov    $0xc1108400,%edx
  mov    (%rdx),%eax
  and    $0xfffbffff,%eax
  mov    %eax,(%rdx)
  mov    $0x1f5,%eax
L71:
  sub    $0x1,%eax
  jne    L71
  mov    $0xc1108400,%edx
  mov    (%rdx),%eax
  or     $0x80000,%eax
  mov    %eax,(%rdx)
  mov    $0x1f5,%eax
L72:
  sub    $0x1,%eax
  jne    L72
  mov    $0xc1108400,%edx
  mov    (%rdx),%eax
  and    $0xfff7ffff,%eax
  mov    %eax,(%rdx)
  mov    $0x1f5,%eax
L75:
  sub    $0x1,%eax
  jne    L75
  mov    $0xc1108400,%edx
  mov    (%rdx),%eax
  or     $0x1,%eax
  mov    %eax,(%rdx)
  mov    $0x1f5,%eax
L51:
  sub    $0x1,%eax
  jne    L51
  mov    $0xc1108400,%edx
  mov    (%rdx),%eax
  and    $0xfffffffe,%eax
  mov    %eax,(%rdx)
  mov    $0x1f5,%eax
L70:
  sub    $0x1,%eax
  jne    L70
  ret
```

assistant: ```c
void set_usb_phy_config(int cfg) {
  int divider = 0;
  int clk_sel = 0;
  int i;
  int time_dly = 500;
  *(volatile unsigned *)(0xc1100000 + ((0x2100) << 2)) = (((*(volatile unsigned *)(0xc1100000 + ((0x2100) << 2))) & (~((7 << 5)))));
  *(volatile unsigned *)(0xc1100000 + ((0x2100) << 2)) = (((*(volatile unsigned *)(0xc1100000 + ((0x2100) << 2))) & (~((0x7f << 24)))));
  if (cfg == 0) {
    clk_sel = 1;
    divider = 0;
  } else {
    clk_sel = 3;
    divider = 49;
  }
  *(volatile unsigned *)(0xc1100000 + ((0x2100) << 2)) = (((*(volatile unsigned *)(0xc1100000 + ((0x2100) << 2))) | ((divider << 24))));
  *(volatile unsigned *)(0xc1100000 + ((0x2100) << 2)) = (((*(volatile unsigned *)(0xc1100000 + ((0x2100) << 2))) | ((clk_sel << 5))));
  *(volatile unsigned *)(0xc1100000 + ((0x2104) << 2)) = (((*(volatile unsigned *)(0xc1100000 + ((0x2104) << 2))) | ((1 << 23))));
  *(volatile unsigned *)(0xc1100000 + ((0x2104) << 2)) = (((*(volatile unsigned *)(0xc1100000 + ((0x2104) << 2))) | ((1 << 24))));
  *(volatile unsigned *)(0xc1100000 + ((0x2100) << 2)) = (((*(volatile unsigned *)(0xc1100000 + ((0x2100) << 2))) | ((1 << 8))));
  i = 0;
  while (i++ < time_dly) {
  };
  *(volatile unsigned *)(0xc1100000 + ((0x2100) << 2)) = (((*(volatile unsigned *)(0xc1100000 + ((0x2100) << 2))) | ((1 << 17))));
  i = 0;
  while (i++ < time_dly) {
  };
  *(volatile unsigned *)(0xc1100000 + ((0x2100) << 2)) = (((*(volatile unsigned *)(0xc1100000 + ((0x2100) << 2))) & (~((1 << 17)))));
  i = 0;
  while (i++ < time_dly) {
  };
  *(volatile unsigned *)(0xc1100000 + ((0x2100) << 2)) = (((*(volatile unsigned *)(0xc1100000 + ((0x2100) << 2))) | ((1 << 18))));
  i = 0;
  while (i++ < time_dly) {
  };
  *(volatile unsigned *)(0xc1100000 + ((0x2100) << 2)) = (((*(volatile unsigned *)(0xc1100000 + ((0x2100) << 2))) & (~((1 << 18)))));
  i = 0;
  while (i++ < time_dly) {
  };
  *(volatile unsigned *)(0xc1100000 + ((0x2100) << 2)) = (((*(volatile unsigned *)(0xc1100000 + ((0x2100) << 2))) | ((1 << 19))));
  i = 0;
  while (i++ < time_dly) {
  };
  *(volatile unsigned *)(0xc1100000 + ((0x2100) << 2)) = (((*(volatile unsigned *)(0xc1100000 + ((0x2100) << 2))) & (~((1 << 19)))));
  i = 0;
  while (i++ < time_dly) {
  };
  *(volatile unsigned *)(0xc1100000 + ((0x2100) << 2)) = (((*(volatile unsigned *)(0xc1100000 + ((0x2100) << 2))) | ((1 << 0))));
  i = 0;
  while (i++ < time_dly) {
  };
  *(volatile unsigned *)(0xc1100000 + ((0x2100) << 2)) = (((*(volatile unsigned *)(0xc1100000 + ((0x2100) << 2))) & (~((1 << 0)))));
  i = 0;
  while (i++ < time_dly) {
  };
}
```