user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<led_init>:
  endbr64
  sub    $0x8,%rsp
  xor    %edx,%edx
  mov    $0x40,%esi
  mov    $0x44e10854,%edi
  call   <regmask32@plt>
  mov    $0x20,%edx
  mov    $0x20,%esi
  mov    $0x44e10854,%edi
  call   <regmask32@plt>
  xor    %edx,%edx
  mov    $0x10,%esi
  mov    $0x44e10854,%edi
  call   <regmask32@plt>
  xor    %edx,%edx
  mov    $0x8,%esi
  mov    $0x44e10854,%edi
  call   <regmask32@plt>
  mov    $0x7,%edx
  mov    $0x7,%esi
  mov    $0x44e10854,%edi
  call   <regmask32@plt>
  xor    %edx,%edx
  mov    $0x40,%esi
  mov    $0x44e10858,%edi
  call   <regmask32@plt>
  mov    $0x20,%edx
  mov    $0x20,%esi
  mov    $0x44e10858,%edi
  call   <regmask32@plt>
  xor    %edx,%edx
  mov    $0x10,%esi
  mov    $0x44e10858,%edi
  call   <regmask32@plt>
  xor    %edx,%edx
  mov    $0x8,%esi
  mov    $0x44e10858,%edi
  call   <regmask32@plt>
  mov    $0x7,%edx
  mov    $0x7,%esi
  mov    $0x44e10858,%edi
  call   <regmask32@plt>
  xor    %edx,%edx
  mov    $0x40,%esi
  mov    $0x44e1085c,%edi
  call   <regmask32@plt>
  mov    $0x20,%edx
  mov    $0x20,%esi
  mov    $0x44e1085c,%edi
  call   <regmask32@plt>
  xor    %edx,%edx
  mov    $0x10,%esi
  mov    $0x44e1085c,%edi
  call   <regmask32@plt>
  xor    %edx,%edx
  mov    $0x8,%esi
  mov    $0x44e1085c,%edi
  call   <regmask32@plt>
  mov    $0x7,%edx
  mov    $0x7,%esi
  mov    $0x44e1085c,%edi
  call   <regmask32@plt>
  xor    %edx,%edx
  mov    $0x40,%esi
  mov    $0x44e10860,%edi
  call   <regmask32@plt>
  mov    $0x20,%edx
  mov    $0x20,%esi
  mov    $0x44e10860,%edi
  call   <regmask32@plt>
  xor    %edx,%edx
  mov    $0x10,%esi
  mov    $0x44e10860,%edi
  call   <regmask32@plt>
  xor    %edx,%edx
  mov    $0x8,%esi
  mov    $0x44e10860,%edi
  call   <regmask32@plt>
  mov    $0x7,%edx
  mov    $0x7,%esi
  mov    $0x44e10860,%edi
  call   <regmask32@plt>
  mov    $0x2,%edx
  mov    $0x3,%esi
  mov    $0x44e000ac,%edi
  call   <regmask32@plt>
  nopl   0x0(%rax,%rax,1)
L5:
  mov    $0x44e000ac,%edi
  call   <regread32@plt>
  and    $0x3,%eax
  cmp    $0x2,%eax
  jne    L5
  mov    $0x4804c134,%edi
  xor    %edx,%edx
  mov    $0x1e00000,%esi
  call   <regmask32@plt>
  mov    $0x6,%edi
  add    $0x8,%rsp
  jmp    1070 <led_write@plt>
```

assistant: ```c
void led_init(void) {
  regmask32(0x44e10000 + 0x854, (1 << 6), (0 << 6));
  regmask32(0x44e10000 + 0x854, (1 << 5), (1 << 5));
  regmask32(0x44e10000 + 0x854, (1 << 4), (0 << 4));
  regmask32(0x44e10000 + 0x854, (1 << 3), (0 << 3));
  regmask32(0x44e10000 + 0x854, (0b111 << 0), (0b111 << 0));
  regmask32(0x44e10000 + 0x858, (1 << 6), (0 << 6));
  regmask32(0x44e10000 + 0x858, (1 << 5), (1 << 5));
  regmask32(0x44e10000 + 0x858, (1 << 4), (0 << 4));
  regmask32(0x44e10000 + 0x858, (1 << 3), (0 << 3));
  regmask32(0x44e10000 + 0x858, (0b111 << 0), (0b111 << 0));
  regmask32(0x44e10000 + 0x85c, (1 << 6), (0 << 6));
  regmask32(0x44e10000 + 0x85c, (1 << 5), (1 << 5));
  regmask32(0x44e10000 + 0x85c, (1 << 4), (0 << 4));
  regmask32(0x44e10000 + 0x85c, (1 << 3), (0 << 3));
  regmask32(0x44e10000 + 0x85c, (0b111 << 0), (0b111 << 0));
  regmask32(0x44e10000 + 0x860, (1 << 6), (0 << 6));
  regmask32(0x44e10000 + 0x860, (1 << 5), (1 << 5));
  regmask32(0x44e10000 + 0x860, (1 << 4), (0 << 4));
  regmask32(0x44e10000 + 0x860, (1 << 3), (0 << 3));
  regmask32(0x44e10000 + 0x860, (0b111 << 0), (0b111 << 0));
  regmask32(0x44e00000 + 0xac, (0b11 << 0), (0b10 << 0));
  while ((regread32(0x44e00000 + 0xac) & (0b11 << 0)) != (0b10 << 0))
    ;
  regmask32(0x4804c000 + 0x134, (0b1111 << 21), 0);
  led_write(0b0110);
}
```