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

```asm
<UART0ModuleClkConfig>:
  endbr64
  mov    0x44e000e0,%eax
  or     $0x2,%eax
  mov    %eax,0x44e000e0
  nopl   (%rax)
L88:
  mov    0x44e000e0,%eax
  and    $0x3,%eax
  cmp    $0x2,%eax
  jne    L88
  mov    0x44e000dc,%eax
  or     $0x2,%eax
  mov    %eax,0x44e000dc
  nopl   0x0(%rax,%rax,1)
L56:
  mov    0x44e000dc,%eax
  and    $0x3,%eax
  cmp    $0x2,%eax
  jne    L56
  mov    0x44e0000c,%eax
  or     $0x2,%eax
  mov    %eax,0x44e0000c
L123:
  mov    0x44e0000c,%eax
  and    $0x3,%eax
  cmp    $0x2,%eax
  jne    L123
  mov    0x44e0012c,%eax
  or     $0x2,%eax
  mov    %eax,0x44e0012c
L78:
  mov    0x44e0012c,%eax
  and    $0x3,%eax
  cmp    $0x2,%eax
  jne    L78
  mov    0x44e00004,%eax
  or     $0x2,%eax
  mov    %eax,0x44e00004
L115:
  mov    0x44e00004,%eax
  and    $0x3,%eax
  cmp    $0x2,%eax
  jne    L115
  nop
L118:
  mov    0x44e000e0,%eax
  test   $0x30000,%eax
  jne    L118
  xchg   %ax,%ax
L58:
  mov    0x44e000dc,%eax
  test   $0x30000,%eax
  jne    L58
  xchg   %ax,%ax
L160:
  mov    0x44e0000c,%eax
  test   $0x10,%al
  je     L160
  nopl   0x0(%rax,%rax,1)
L48:
  mov    0x44e0012c,%eax
  test   $0x10,%al
  je     L48
  nopl   0x0(%rax,%rax,1)
L83:
  mov    0x44e00004,%eax
  test   $0x8,%al
  je     L83
  mov    0x44e00404,%eax
  or     $0x2,%eax
  mov    %eax,0x44e00404
  nopl   0x0(%rax)
L10:
  mov    0x44e00404,%eax
  and    $0x3,%eax
  cmp    $0x2,%eax
  jne    L10
  mov    0x44e00400,%eax
  or     $0x2,%eax
  mov    %eax,0x44e00400
L205:
  mov    0x44e00400,%eax
  and    $0x3,%eax
  cmp    $0x2,%eax
  jne    L205
  mov    0x44e00418,%eax
  or     $0x2,%eax
  mov    %eax,0x44e00418
L82:
  mov    0x44e00418,%eax
  and    $0x3,%eax
  cmp    $0x2,%eax
  jne    L82
  mov    0x44e004b4,%eax
  or     $0x2,%eax
  mov    %eax,0x44e004b4
L68:
  mov    0x44e004b4,%eax
  and    $0x3,%eax
  cmp    $0x2,%eax
  jne    L68
  nop
L208:
  mov    0x44e00404,%eax
  test   $0x30000,%eax
  jne    L208
  xchg   %ax,%ax
L41:
  mov    0x44e00418,%eax
  test   $0x8,%al
  je     L41
  nopl   0x0(%rax,%rax,1)
L155:
  mov    0x44e0040c,%eax
  test   $0x30000,%eax
  jne    L155
  xchg   %ax,%ax
L172:
  mov    0x44e00400,%eax
  test   $0x4,%al
  je     L172
  nopl   0x0(%rax,%rax,1)
L127:
  mov    0x44e004cc,%eax
  test   $0x4,%al
  je     L127
  nopl   0x0(%rax,%rax,1)
L170:
  mov    0x44e00400,%eax
  test   $0x10,%ah
  je     L170
  nopl   0x0(%rax)
L75:
  mov    0x44e004b4,%eax
  test   $0x30000,%eax
  jne    L75
  ret
```

assistant: ```c
void UART0ModuleClkConfig(void) {
  (*((volatile unsigned int *)(((0x44E00000) + 0) + (0xe0)))) |= (0x2u);
  while ((0x2u) != ((*((volatile unsigned int *)(((0x44E00000) + 0) + (0xe0)))) & (0x00000003u)))
    ;
  (*((volatile unsigned int *)(((0x44E00000) + 0) + (0xdc)))) |= (0x2u);
  while ((0x2u) != ((*((volatile unsigned int *)(((0x44E00000) + 0) + (0xdc)))) & (0x00000003u)))
    ;
  (*((volatile unsigned int *)(((0x44E00000) + 0) + (0xc)))) |= (0x2u);
  while ((0x2u) != ((*((volatile unsigned int *)(((0x44E00000) + 0) + (0xc)))) & (0x00000003u)))
    ;
  (*((volatile unsigned int *)(((0x44E00000) + 0) + (0x12c)))) |= (0x2u);
  while ((0x2u) != ((*((volatile unsigned int *)(((0x44E00000) + 0) + (0x12c)))) & (0x00000003u)))
    ;
  (*((volatile unsigned int *)(((0x44E00000) + 0) + (0x4)))) |= (0x2u);
  while ((0x2u) != ((*((volatile unsigned int *)(((0x44E00000) + 0) + (0x4)))) & (0x00000003u)))
    ;
  while (((0x0u) << (0x00000010u)) != ((*((volatile unsigned int *)(((0x44E00000) + 0) + (0xe0)))) & (0x00030000u)))
    ;
  while (((0x0u) << (0x00000010u)) != ((*((volatile unsigned int *)(((0x44E00000) + 0) + (0xdc)))) & (0x00030000u)))
    ;
  while ((0x00000010u) != ((*((volatile unsigned int *)(((0x44E00000) + 0) + (0xc)))) & (0x00000010u)))
    ;
  while ((0x00000010u) != ((*((volatile unsigned int *)(((0x44E00000) + 0) + (0x12c)))) & (0x00000010u)))
    ;
  while ((0x00000008u) != ((*((volatile unsigned int *)(((0x44E00000) + 0) + (0x4)))) & (0x00000008u)))
    ;
  (*((volatile unsigned int *)(((0x44E00000) + 0x400) + (0x4)))) |= (0x2u);
  while ((0x2u) != ((*((volatile unsigned int *)(((0x44E00000) + 0x400) + (0x4)))) & (0x00000003u)))
    ;
  (*((volatile unsigned int *)(((0x44E00000) + 0x400) + (0x0)))) |= (0x2u);
  while ((0x2u) != ((*((volatile unsigned int *)(((0x44E00000) + 0x400) + (0x0)))) & (0x00000003u)))
    ;
  (*((volatile unsigned int *)(((0x44E00000) + 0x400) + (0x18)))) |= (0x2u);
  while ((0x2u) != ((*((volatile unsigned int *)(((0x44E00000) + 0x400) + (0x18)))) & (0x00000003u)))
    ;
  (*((volatile unsigned int *)(((0x44E00000) + 0x400) + (0xb4)))) |= (0x2u);
  while ((0x2u) != ((*((volatile unsigned int *)(((0x44E00000) + 0x400) + (0xb4)))) & (0x00000003u)))
    ;
  while (((0x0u) << (0x00000010u)) != ((*((volatile unsigned int *)(((0x44E00000) + 0x400) + (0x4)))) & (0x00030000u)))
    ;
  while ((0x00000008u) != ((*((volatile unsigned int *)(((0x44E00000) + 0x400) + (0x18)))) & (0x00000008u)))
    ;
  while (((0x0u) << (0x00000010u)) != ((*((volatile unsigned int *)(((0x44E00000) + 0x400) + (0xc)))) & (0x00030000u)))
    ;
  while ((0x00000004u) != ((*((volatile unsigned int *)(((0x44E00000) + 0x400) + (0x0)))) & (0x00000004u)))
    ;
  while ((0x00000004u) != ((*((volatile unsigned int *)(((0x44E00000) + 0x400) + (0xcc)))) & (0x00000004u)))
    ;
  while ((0x00001000u) != ((*((volatile unsigned int *)(((0x44E00000) + 0x400) + (0x0)))) & (0x00001000u)))
    ;
  while (((0x0u) << (0x00000010u)) != ((*((volatile unsigned int *)(((0x44E00000) + 0x400) + (0xb4)))) & (0x00030000u)))
    ;
}
```