user: Converte this assembly snippet into its equivalent C code:

```asm
<UARTPinMuxSetup>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %edi,-0x14(%rbp)
  mov    %esi,-0x18(%rbp)
  movl   $0x0,-0x8(%rbp)
  movl   $0x0,-0x4(%rbp)
  cmpl   $0x0,-0x14(%rbp)
  jne    L41
  cmpl   $0x1,-0x18(%rbp)
  jne    L6
  mov    $0x1c1412c,%eax
  mov    (%rax),%eax
  and    $0xffffff,%eax
  mov    %eax,-0x8(%rbp)
  mov    $0x1c1412c,%edx
  mov    -0x8(%rbp),%eax
  or     $0x22000000,%eax
  mov    %eax,(%rdx)
L6:
  mov    $0x1c1412c,%eax
  mov    (%rax),%eax
  and    $0xff00ffff,%eax
  mov    %eax,-0x4(%rbp)
  mov    $0x1c1412c,%edx
  mov    -0x4(%rbp),%eax
  or     $0x220000,%eax
  mov    %eax,(%rdx)
  jmp    L30
L41:
  cmpl   $0x1,-0x14(%rbp)
  jne    L66
  cmpl   $0x1,-0x18(%rbp)
  jne    L22
  mov    $0x1c14120,%eax
  mov    (%rax),%eax
  and    $0xff00ffff,%eax
  mov    %eax,-0x8(%rbp)
  mov    $0x1c14120,%edx
  mov    -0x8(%rbp),%eax
  or     $0x440000,%eax
  mov    %eax,(%rdx)
L22:
  mov    $0x1c14130,%eax
  mov    (%rax),%eax
  and    $0xffffff,%eax
  mov    %eax,-0x4(%rbp)
  mov    $0x1c14130,%edx
  mov    -0x4(%rbp),%eax
  or     $0x22000000,%eax
  mov    %eax,(%rdx)
  jmp    L30
L66:
  cmpl   $0x2,-0x14(%rbp)
  jne    L30
  cmpl   $0x1,-0x18(%rbp)
  jne    L40
  mov    $0x1c14120,%eax
  mov    (%rax),%eax
  and    $0xffffff,%eax
  mov    %eax,-0x8(%rbp)
  mov    $0x1c14120,%edx
  mov    -0x8(%rbp),%eax
  or     $0x44000000,%eax
  mov    %eax,(%rdx)
L40:
  mov    $0x1c14130,%eax
  mov    (%rax),%eax
  and    $0xff00ffff,%eax
  mov    %eax,-0x4(%rbp)
  mov    $0x1c14130,%edx
  mov    -0x4(%rbp),%eax
  or     $0x220000,%eax
  mov    %eax,(%rdx)
L30:
  nop
  pop    %rbp
  ret
```

assistant: ```c
void UARTPinMuxSetup(unsigned int instanceNum, unsigned int modemCtrlChoice) {
  unsigned int svPinMuxRtsCts = 0;
  unsigned int svPinMuxTxdRxd = 0;
  if (0 == instanceNum) {
    if (1 == modemCtrlChoice) {
      svPinMuxRtsCts = ((*((volatile unsigned int *)((0x01C14000) + (0x120 + (3 * 4))))) & ~((0x0F000000u) | (0xF0000000u)));
      (*((volatile unsigned int *)((0x01C14000) + (0x120 + (3 * 4))))) = (((0x00000002u) << (0x00000018u)) | ((0x00000002u) << (0x0000001Cu)) | svPinMuxRtsCts);
    }
    svPinMuxTxdRxd = ((*((volatile unsigned int *)((0x01C14000) + (0x120 + (3 * 4))))) & ~((0x00F00000u) | (0x000F0000u)));
    (*((volatile unsigned int *)((0x01C14000) + (0x120 + (3 * 4))))) = (((0x00000002u) << (0x00000014u)) | ((0x00000002u) << (0x00000010u)) | svPinMuxTxdRxd);
  } else if (1 == instanceNum) {
    if (1 == modemCtrlChoice) {
      svPinMuxRtsCts = ((*((volatile unsigned int *)((0x01C14000) + (0x120 + (0 * 4))))) & ~((0x00F00000u) | (0x000F0000u)));
      (*((volatile unsigned int *)((0x01C14000) + (0x120 + (0 * 4))))) = (((0x00000004u) << (0x00000014u)) | ((0x00000004u) << (0x00000010u)) | svPinMuxRtsCts);
    }
    svPinMuxTxdRxd = ((*((volatile unsigned int *)((0x01C14000) + (0x120 + (4 * 4))))) & ~((0xF0000000u) | (0x0F000000u)));
    (*((volatile unsigned int *)((0x01C14000) + (0x120 + (4 * 4))))) = (((0x00000002u) << (0x0000001Cu)) | ((0x00000002u) << (0x00000018u)) | svPinMuxTxdRxd);
  } else if (2 == instanceNum) {
    if (1 == modemCtrlChoice) {
      svPinMuxRtsCts = ((*((volatile unsigned int *)((0x01C14000) + (0x120 + (0 * 4))))) & ~((0xF0000000u) | (0x0F000000u)));
      (*((volatile unsigned int *)((0x01C14000) + (0x120 + (0 * 4))))) = (((0x00000004u) << (0x0000001Cu)) | ((0x00000004u) << (0x00000018u)) | svPinMuxRtsCts);
    }
    svPinMuxTxdRxd = ((*((volatile unsigned int *)((0x01C14000) + (0x120 + (4 * 4))))) & ~((0x00F00000u) | (0x000F0000u)));
    (*((volatile unsigned int *)((0x01C14000) + (0x120 + (4 * 4))))) = (((0x00000002u) << (0x00000014u)) | ((0x00000002u) << (0x00000010u)) | svPinMuxTxdRxd);
  } else {
  }
}
```