user: 下面的汇编指令对应的C源代码是什么:

```asm
<SensorSetMode_NOON30PC11>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %edi,%eax
  mov    %al,-0x14(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movzbl -0x14(%rbp),%eax
  cmp    $0x4,%eax
  je     L43
  cmp    $0x4,%eax
  jg     L144
  cmp    $0x3,%eax
  je     L45
  cmp    $0x3,%eax
  jg     L144
  cmp    $0x1,%eax
  je     L95
  cmp    $0x2,%eax
  je     L132
  jmp    L144
L95:
  mov    $0x10,%esi
  mov    $0xb,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x1,%esi
  mov    $0x71,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x24,%esi
  mov    $0x72,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xf8,%esi
  mov    $0x73,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x32,%edi
  call   <VIM_USER_DelayMs@plt>
  mov    $0x9c,%esi
  mov    $0xb,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  jmp    L91
L132:
  mov    $0x0,%esi
  mov    $0xb,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x0,%esi
  mov    $0x71,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xf4,%esi
  mov    $0x72,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x24,%esi
  mov    $0x73,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x32,%edi
  call   <VIM_USER_DelayMs@plt>
  mov    $0x8c,%esi
  mov    $0xb,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  jmp    L91
L43:
  lea    -0x9(%rbp),%rax
  mov    %rax,%rsi
  mov    $0xb,%edi
  call   <VIM_SIF_I2cReadByte@plt>
  movzbl -0x9(%rbp),%eax
  cmp    $0x9c,%al
  jne    L46
  mov    $0x10,%esi
  mov    $0xb,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x2,%esi
  mov    $0x71,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x49,%esi
  mov    $0x72,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xf0,%esi
  mov    $0x73,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x32,%edi
  call   <VIM_USER_DelayMs@plt>
  mov    $0x9c,%esi
  mov    $0xb,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  jmp    L91
L46:
  mov    $0x0,%esi
  mov    $0xb,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x1,%esi
  mov    $0x71,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xe8,%esi
  mov    $0x72,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x48,%esi
  mov    $0x73,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x32,%edi
  call   <VIM_USER_DelayMs@plt>
  mov    $0x8c,%esi
  mov    $0xb,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  jmp    L91
L45:
  lea    -0x9(%rbp),%rax
  mov    %rax,%rsi
  mov    $0xb,%edi
  call   <VIM_SIF_I2cReadByte@plt>
  movzbl -0x9(%rbp),%eax
  cmp    $0x9c,%al
  jne    L49
  mov    $0x10,%esi
  mov    $0xb,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x1,%esi
  mov    $0x71,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x24,%esi
  mov    $0x72,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xf8,%esi
  mov    $0x73,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x32,%edi
  call   <VIM_USER_DelayMs@plt>
  mov    $0x9c,%esi
  mov    $0xb,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  jmp    L91
L49:
  mov    $0x0,%esi
  mov    $0xb,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x0,%esi
  mov    $0x71,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xf4,%esi
  mov    $0x72,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x24,%esi
  mov    $0x73,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x32,%edi
  call   <VIM_USER_DelayMs@plt>
  mov    $0x8c,%esi
  mov    $0xb,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  jmp    L91
L144:
  nop
L91:
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L81
  call   <__stack_chk_fail@plt>
L81:
  leave
  ret
```

assistant: ```c
void SensorSetMode_NOON30PC11(unsigned char val) {
  unsigned char uTemp;
  switch (val) {
  case 1:
    VIM_SIF_I2cWriteByte(0x0b, 0x10);
    VIM_SIF_I2cWriteByte(0x71, 0x01);
    VIM_SIF_I2cWriteByte(0x72, 0x24);
    VIM_SIF_I2cWriteByte(0x73, 0xf8);
    VIM_USER_DelayMs(50);
    VIM_SIF_I2cWriteByte(0x0b, 0x9c);
    break;
  case 2:
    VIM_SIF_I2cWriteByte(0x0b, 0x00);
    VIM_SIF_I2cWriteByte(0x71, 0x00);
    VIM_SIF_I2cWriteByte(0x72, 0xf4);
    VIM_SIF_I2cWriteByte(0x73, 0x24);
    VIM_USER_DelayMs(50);
    VIM_SIF_I2cWriteByte(0x0b, 0x8c);
    break;
  case 4:
    VIM_SIF_I2cReadByte(0x0b, &uTemp);
    if (uTemp == 0x9c) {
      VIM_SIF_I2cWriteByte(0x0b, 0x10);
      VIM_SIF_I2cWriteByte(0x71, 0x02);
      VIM_SIF_I2cWriteByte(0x72, 0x49);
      VIM_SIF_I2cWriteByte(0x73, 0xf0);
      VIM_USER_DelayMs(50);
      VIM_SIF_I2cWriteByte(0x0b, 0x9c);
    } else {
      VIM_SIF_I2cWriteByte(0x0b, 0x00);
      VIM_SIF_I2cWriteByte(0x71, 0x01);
      VIM_SIF_I2cWriteByte(0x72, 0xe8);
      VIM_SIF_I2cWriteByte(0x73, 0x48);
      VIM_USER_DelayMs(50);
      VIM_SIF_I2cWriteByte(0x0b, 0x8c);
    }
    break;
  case 3:
    VIM_SIF_I2cReadByte(0x0b, &uTemp);
    if (uTemp == 0x9c) {
      VIM_SIF_I2cWriteByte(0x0b, 0x10);
      VIM_SIF_I2cWriteByte(0x71, 0x01);
      VIM_SIF_I2cWriteByte(0x72, 0x24);
      VIM_SIF_I2cWriteByte(0x73, 0xf8);
      VIM_USER_DelayMs(50);
      VIM_SIF_I2cWriteByte(0x0b, 0x9c);
    } else {
      VIM_SIF_I2cWriteByte(0x0b, 0x00);
      VIM_SIF_I2cWriteByte(0x71, 0x00);
      VIM_SIF_I2cWriteByte(0x72, 0xf4);
      VIM_SIF_I2cWriteByte(0x73, 0x24);
      VIM_USER_DelayMs(50);
      VIM_SIF_I2cWriteByte(0x0b, 0x8c);
    }
    break;
  default:
    break;
  }
}
```