user: Please show me the C implementation that matches the assembly code listed below:

```asm
<SensorSetMode_SP80818>:
  endbr64
  sub    $0x8,%rsp
  cmp    $0x3,%dil
  je     L28
  ja     L9
  cmp    $0x1,%dil
  je     L38
  cmp    $0x2,%dil
  jne    L79
  mov    $0x1f,%esi
  mov    $0x9,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xc,%esi
  mov    $0xe7,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xa6,%esi
  mov    $0xe8,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x80,%esi
  mov    $0x13,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xa0,%esi
  mov    $0x14,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  xor    %esi,%esi
  mov    $0x24,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x8f,%esi
  mov    $0x26,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x41,%esi
  mov    $0x43,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  xor    %esi,%esi
  mov    $0x46,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xa0,%esi
  mov    $0x60,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x65,%esi
  mov    $0x61,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x35,%esi
  mov    $0x62,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x10,%esi
  mov    $0x63,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x9,%esi
  mov    $0x69,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x14,%esi
L19:
  mov    $0x6a,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xa0,%esi
  mov    $0xea,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x80,%esi
  mov    $0xeb,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x50,%esi
  mov    $0xec,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x10,%esi
  mov    $0xed,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  xor    %esi,%esi
  mov    $0x77,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xa0,%esi
  mov    $0x78,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xa0,%esi
  mov    $0x79,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x20,%esi
  mov    $0x7c,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x25,%esi
  mov    $0x7d,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x11,%esi
  mov    $0x31,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x19,%esi
  mov    $0x32,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x26,%esi
  mov    $0x33,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x2f,%esi
  mov    $0x34,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x37,%esi
  mov    $0x35,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x45,%esi
  mov    $0x36,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x51,%esi
  mov    $0x37,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x5c,%esi
  mov    $0x38,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x65,%esi
  mov    $0x39,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x77,%esi
  mov    $0x3a,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x87,%esi
  mov    $0x3b,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x95,%esi
  mov    $0x3c,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xae,%esi
  mov    $0x3d,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xc5,%esi
  mov    $0x3e,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xda,%esi
  mov    $0x3f,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x11,%esi
  mov    $0x81,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x19,%esi
  mov    $0x82,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x26,%esi
  mov    $0x83,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x2f,%esi
  mov    $0x84,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x37,%esi
  mov    $0x85,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x45,%esi
  mov    $0x86,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x51,%esi
  mov    $0x87,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x5c,%esi
  mov    $0x88,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x65,%esi
  mov    $0x89,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x77,%esi
  mov    $0x8a,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x87,%esi
  mov    $0x8b,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x95,%esi
  mov    $0x8c,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xae,%esi
  mov    $0x8d,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xc5,%esi
  mov    $0x8e,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xda,%esi
  mov    $0x8f,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x11,%esi
  mov    $0x91,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x19,%esi
  mov    $0x92,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x26,%esi
  mov    $0x93,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x2f,%esi
  mov    $0x94,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x37,%esi
  mov    $0x95,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x45,%esi
  mov    $0x96,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x51,%esi
  mov    $0x97,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x5c,%esi
  mov    $0x98,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x65,%esi
  mov    $0x99,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x77,%esi
  mov    $0x9a,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x87,%esi
  mov    $0x9b,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x95,%esi
  mov    $0x9c,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xae,%esi
  mov    $0x9d,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xc5,%esi
  mov    $0x9e,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xda,%esi
  mov    $0x9f,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x19,%esi
L7:
  mov    $0xd,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  xor    %esi,%esi
  mov    $0xe0,%edi
  add    $0x8,%rsp
  jmp    1050 <VIM_SIF_I2cWriteByte@plt>
  nopl   (%rax)
L9:
  cmp    $0x4,%dil
  jne    L79
  mov    $0x7,%esi
  mov    $0x9,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xc,%esi
  mov    $0xe7,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x8b,%esi
  mov    $0xe8,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x80,%esi
  mov    $0x13,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x80,%esi
  mov    $0x14,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xff,%esi
  mov    $0x24,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x87,%esi
  mov    $0x26,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xc1,%esi
  mov    $0x43,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x5,%esi
  mov    $0x46,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xd0,%esi
  mov    $0x60,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x85,%esi
  mov    $0x61,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x55,%esi
  mov    $0x62,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x20,%esi
  mov    $0x63,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x7,%esi
  mov    $0x69,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x9a,%esi
  mov    $0x6a,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xb0,%esi
  mov    $0xea,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x90,%esi
  mov    $0xeb,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x60,%esi
  mov    $0xec,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x20,%esi
  mov    $0xed,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xf,%esi
  mov    $0x77,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x90,%esi
  mov    $0x78,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x90,%esi
  mov    $0x79,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x20,%esi
  mov    $0x7c,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x40,%esi
  mov    $0x7d,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x8,%esi
  mov    $0x31,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xd,%esi
  mov    $0x32,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x16,%esi
  mov    $0x33,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x1e,%esi
  mov    $0x34,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x24,%esi
  mov    $0x35,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x30,%esi
  mov    $0x36,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x3b,%esi
  mov    $0x37,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x45,%esi
  mov    $0x38,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x4f,%esi
  mov    $0x39,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x61,%esi
  mov    $0x3a,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x71,%esi
  mov    $0x3b,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x80,%esi
  mov    $0x3c,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x9d,%esi
  mov    $0x3d,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xb8,%esi
  mov    $0x3e,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xd1,%esi
  mov    $0x3f,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x8,%esi
  mov    $0x81,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xd,%esi
  mov    $0x82,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x16,%esi
  mov    $0x83,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x1e,%esi
  mov    $0x84,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x24,%esi
  mov    $0x85,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x30,%esi
  mov    $0x86,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x3b,%esi
  mov    $0x87,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x45,%esi
  mov    $0x88,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x4f,%esi
  mov    $0x89,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x61,%esi
  mov    $0x8a,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x71,%esi
  mov    $0x8b,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x80,%esi
  mov    $0x8c,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x9d,%esi
  mov    $0x8d,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xb8,%esi
  mov    $0x8e,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xd1,%esi
  mov    $0x8f,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x8,%esi
  mov    $0x91,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xd,%esi
  mov    $0x92,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x16,%esi
  mov    $0x93,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x1e,%esi
  mov    $0x94,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x24,%esi
  mov    $0x95,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x30,%esi
  mov    $0x96,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x3b,%esi
  mov    $0x97,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x45,%esi
  mov    $0x98,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x4f,%esi
  mov    $0x99,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x61,%esi
  mov    $0x9a,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x71,%esi
  mov    $0x9b,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x80,%esi
  mov    $0x9c,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x9d,%esi
  mov    $0x9d,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xb8,%esi
  mov    $0x9e,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xd1,%esi
  mov    $0x9f,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x1b,%esi
  jmp    L7
  nop
L79:
  add    $0x8,%rsp
  ret
  nopl   (%rax)
L38:
  mov    $0x1f,%esi
  mov    $0x9,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xc,%esi
  mov    $0xe7,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x8b,%esi
  mov    $0xe8,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x80,%esi
  mov    $0x13,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xa0,%esi
  mov    $0x14,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  xor    %esi,%esi
  mov    $0x24,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x8f,%esi
  mov    $0x26,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x41,%esi
  mov    $0x43,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  xor    %esi,%esi
  mov    $0x46,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xa0,%esi
  mov    $0x60,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x65,%esi
  mov    $0x61,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x35,%esi
  mov    $0x62,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x10,%esi
  mov    $0x63,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x7,%esi
  mov    $0x69,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x9a,%esi
  jmp    L19
  xchg   %ax,%ax
L28:
  mov    $0x1f,%esi
  mov    $0x9,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xc,%esi
  mov    $0xe7,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xd,%esi
  mov    $0xe8,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x80,%esi
  mov    $0x13,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xa0,%esi
  mov    $0x14,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  xor    %esi,%esi
  mov    $0x24,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x8d,%esi
  mov    $0x26,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x41,%esi
  mov    $0x43,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  xor    %esi,%esi
  mov    $0x46,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xa0,%esi
  mov    $0x60,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x65,%esi
  mov    $0x61,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x35,%esi
  mov    $0x62,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x10,%esi
  mov    $0x63,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  xor    %esi,%esi
  mov    $0x69,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xb6,%esi
  mov    $0x6a,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xa0,%esi
  mov    $0xea,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x80,%esi
  mov    $0xeb,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x50,%esi
  mov    $0xec,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x10,%esi
  mov    $0xed,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  xor    %esi,%esi
  mov    $0x77,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xa0,%esi
  mov    $0x78,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xa0,%esi
  mov    $0x79,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x20,%esi
  mov    $0x7c,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x25,%esi
  mov    $0x7d,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x11,%esi
  mov    $0x31,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x19,%esi
  mov    $0x32,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x26,%esi
  mov    $0x33,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x2f,%esi
  mov    $0x34,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x37,%esi
  mov    $0x35,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x45,%esi
  mov    $0x36,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x51,%esi
  mov    $0x37,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x5c,%esi
  mov    $0x38,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x65,%esi
  mov    $0x39,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x77,%esi
  mov    $0x3a,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x87,%esi
  mov    $0x3b,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x95,%esi
  mov    $0x3c,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xae,%esi
  mov    $0x3d,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xc5,%esi
  mov    $0x3e,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xda,%esi
  mov    $0x3f,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x11,%esi
  mov    $0x81,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x19,%esi
  mov    $0x82,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x26,%esi
  mov    $0x83,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x2f,%esi
  mov    $0x84,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x37,%esi
  mov    $0x85,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x45,%esi
  mov    $0x86,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x51,%esi
  mov    $0x87,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x5c,%esi
  mov    $0x88,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x65,%esi
  mov    $0x89,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x77,%esi
  mov    $0x8a,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x87,%esi
  mov    $0x8b,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x95,%esi
  mov    $0x8c,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xae,%esi
  mov    $0x8d,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xc5,%esi
  mov    $0x8e,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xda,%esi
  mov    $0x8f,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x11,%esi
  mov    $0x91,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x19,%esi
  mov    $0x92,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x26,%esi
  mov    $0x93,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x2f,%esi
  mov    $0x94,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x37,%esi
  mov    $0x95,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x45,%esi
  mov    $0x96,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x51,%esi
  mov    $0x97,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x5c,%esi
  mov    $0x98,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x65,%esi
  mov    $0x99,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x77,%esi
  mov    $0x9a,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x87,%esi
  mov    $0x9b,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x95,%esi
  mov    $0x9c,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xae,%esi
  mov    $0x9d,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xc5,%esi
  mov    $0x9e,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0xda,%esi
  mov    $0x9f,%edi
  call   <VIM_SIF_I2cWriteByte@plt>
  mov    $0x11,%esi
  jmp    L7
```

assistant: ```c
void SensorSetMode_SP80818(unsigned char val) {
  switch (val) {
  case 1:
    VIM_SIF_I2cWriteByte(0x9, 0x1f);
    VIM_SIF_I2cWriteByte(0xe7, 0x0c);
    VIM_SIF_I2cWriteByte(0xe8, 0x8b);
    VIM_SIF_I2cWriteByte(0x13, 0x80);
    VIM_SIF_I2cWriteByte(0x14, 0xa0);
    VIM_SIF_I2cWriteByte(0x24, 0x0);
    VIM_SIF_I2cWriteByte(0x26, 0x8f);
    VIM_SIF_I2cWriteByte(0x43, 0x41);
    VIM_SIF_I2cWriteByte(0x46, 0x00);
    VIM_SIF_I2cWriteByte(0x60, 0xa0);
    VIM_SIF_I2cWriteByte(0x61, 0x65);
    VIM_SIF_I2cWriteByte(0x62, 0x35);
    VIM_SIF_I2cWriteByte(0x63, 0x10);
    VIM_SIF_I2cWriteByte(0x69, 0x07);
    VIM_SIF_I2cWriteByte(0x6a, 0x9a);
    VIM_SIF_I2cWriteByte(0xea, 0xa0);
    VIM_SIF_I2cWriteByte(0xeb, 0x80);
    VIM_SIF_I2cWriteByte(0xec, 0x50);
    VIM_SIF_I2cWriteByte(0xed, 0x10);
    VIM_SIF_I2cWriteByte(0x77, 0x00);
    VIM_SIF_I2cWriteByte(0x78, 0xa0);
    VIM_SIF_I2cWriteByte(0x79, 0xa0);
    VIM_SIF_I2cWriteByte(0x7c, 0x20);
    VIM_SIF_I2cWriteByte(0x7d, 0x25);
    VIM_SIF_I2cWriteByte(0x31, 0x11);
    VIM_SIF_I2cWriteByte(0x32, 0x19);
    VIM_SIF_I2cWriteByte(0x33, 0x26);
    VIM_SIF_I2cWriteByte(0x34, 0x2f);
    VIM_SIF_I2cWriteByte(0x35, 0x37);
    VIM_SIF_I2cWriteByte(0x36, 0x45);
    VIM_SIF_I2cWriteByte(0x37, 0x51);
    VIM_SIF_I2cWriteByte(0x38, 0x5c);
    VIM_SIF_I2cWriteByte(0x39, 0x65);
    VIM_SIF_I2cWriteByte(0x3a, 0x77);
    VIM_SIF_I2cWriteByte(0x3b, 0x87);
    VIM_SIF_I2cWriteByte(0x3c, 0x95);
    VIM_SIF_I2cWriteByte(0x3d, 0xae);
    VIM_SIF_I2cWriteByte(0x3e, 0xc5);
    VIM_SIF_I2cWriteByte(0x3f, 0xda);
    VIM_SIF_I2cWriteByte(0x81, 0x11);
    VIM_SIF_I2cWriteByte(0x82, 0x19);
    VIM_SIF_I2cWriteByte(0x83, 0x26);
    VIM_SIF_I2cWriteByte(0x84, 0x2f);
    VIM_SIF_I2cWriteByte(0x85, 0x37);
    VIM_SIF_I2cWriteByte(0x86, 0x45);
    VIM_SIF_I2cWriteByte(0x87, 0x51);
    VIM_SIF_I2cWriteByte(0x88, 0x5c);
    VIM_SIF_I2cWriteByte(0x89, 0x65);
    VIM_SIF_I2cWriteByte(0x8a, 0x77);
    VIM_SIF_I2cWriteByte(0x8b, 0x87);
    VIM_SIF_I2cWriteByte(0x8c, 0x95);
    VIM_SIF_I2cWriteByte(0x8d, 0xae);
    VIM_SIF_I2cWriteByte(0x8e, 0xc5);
    VIM_SIF_I2cWriteByte(0x8f, 0xda);
    VIM_SIF_I2cWriteByte(0x91, 0x11);
    VIM_SIF_I2cWriteByte(0x92, 0x19);
    VIM_SIF_I2cWriteByte(0x93, 0x26);
    VIM_SIF_I2cWriteByte(0x94, 0x2f);
    VIM_SIF_I2cWriteByte(0x95, 0x37);
    VIM_SIF_I2cWriteByte(0x96, 0x45);
    VIM_SIF_I2cWriteByte(0x97, 0x51);
    VIM_SIF_I2cWriteByte(0x98, 0x5c);
    VIM_SIF_I2cWriteByte(0x99, 0x65);
    VIM_SIF_I2cWriteByte(0x9a, 0x77);
    VIM_SIF_I2cWriteByte(0x9b, 0x87);
    VIM_SIF_I2cWriteByte(0x9c, 0x95);
    VIM_SIF_I2cWriteByte(0x9d, 0xae);
    VIM_SIF_I2cWriteByte(0x9e, 0xc5);
    VIM_SIF_I2cWriteByte(0x9f, 0xda);
    VIM_SIF_I2cWriteByte(0xd, 0x19);
    VIM_SIF_I2cWriteByte(0xe0, 0x00);
    break;
  case 2:
    VIM_SIF_I2cWriteByte(0x9, 0x1f);
    VIM_SIF_I2cWriteByte(0xe7, 0x0c);
    VIM_SIF_I2cWriteByte(0xe8, 0xa6);
    VIM_SIF_I2cWriteByte(0x13, 0x80);
    VIM_SIF_I2cWriteByte(0x14, 0xa0);
    VIM_SIF_I2cWriteByte(0x24, 0x0);
    VIM_SIF_I2cWriteByte(0x26, 0x8f);
    VIM_SIF_I2cWriteByte(0x43, 0x41);
    VIM_SIF_I2cWriteByte(0x46, 0x00);
    VIM_SIF_I2cWriteByte(0x60, 0xa0);
    VIM_SIF_I2cWriteByte(0x61, 0x65);
    VIM_SIF_I2cWriteByte(0x62, 0x35);
    VIM_SIF_I2cWriteByte(0x63, 0x10);
    VIM_SIF_I2cWriteByte(0x69, 0x09);
    VIM_SIF_I2cWriteByte(0x6a, 0x14);
    VIM_SIF_I2cWriteByte(0xea, 0xa0);
    VIM_SIF_I2cWriteByte(0xeb, 0x80);
    VIM_SIF_I2cWriteByte(0xec, 0x50);
    VIM_SIF_I2cWriteByte(0xed, 0x10);
    VIM_SIF_I2cWriteByte(0x77, 0x00);
    VIM_SIF_I2cWriteByte(0x78, 0xa0);
    VIM_SIF_I2cWriteByte(0x79, 0xa0);
    VIM_SIF_I2cWriteByte(0x7c, 0x20);
    VIM_SIF_I2cWriteByte(0x7d, 0x25);
    VIM_SIF_I2cWriteByte(0x31, 0x11);
    VIM_SIF_I2cWriteByte(0x32, 0x19);
    VIM_SIF_I2cWriteByte(0x33, 0x26);
    VIM_SIF_I2cWriteByte(0x34, 0x2f);
    VIM_SIF_I2cWriteByte(0x35, 0x37);
    VIM_SIF_I2cWriteByte(0x36, 0x45);
    VIM_SIF_I2cWriteByte(0x37, 0x51);
    VIM_SIF_I2cWriteByte(0x38, 0x5c);
    VIM_SIF_I2cWriteByte(0x39, 0x65);
    VIM_SIF_I2cWriteByte(0x3a, 0x77);
    VIM_SIF_I2cWriteByte(0x3b, 0x87);
    VIM_SIF_I2cWriteByte(0x3c, 0x95);
    VIM_SIF_I2cWriteByte(0x3d, 0xae);
    VIM_SIF_I2cWriteByte(0x3e, 0xc5);
    VIM_SIF_I2cWriteByte(0x3f, 0xda);
    VIM_SIF_I2cWriteByte(0x81, 0x11);
    VIM_SIF_I2cWriteByte(0x82, 0x19);
    VIM_SIF_I2cWriteByte(0x83, 0x26);
    VIM_SIF_I2cWriteByte(0x84, 0x2f);
    VIM_SIF_I2cWriteByte(0x85, 0x37);
    VIM_SIF_I2cWriteByte(0x86, 0x45);
    VIM_SIF_I2cWriteByte(0x87, 0x51);
    VIM_SIF_I2cWriteByte(0x88, 0x5c);
    VIM_SIF_I2cWriteByte(0x89, 0x65);
    VIM_SIF_I2cWriteByte(0x8a, 0x77);
    VIM_SIF_I2cWriteByte(0x8b, 0x87);
    VIM_SIF_I2cWriteByte(0x8c, 0x95);
    VIM_SIF_I2cWriteByte(0x8d, 0xae);
    VIM_SIF_I2cWriteByte(0x8e, 0xc5);
    VIM_SIF_I2cWriteByte(0x8f, 0xda);
    VIM_SIF_I2cWriteByte(0x91, 0x11);
    VIM_SIF_I2cWriteByte(0x92, 0x19);
    VIM_SIF_I2cWriteByte(0x93, 0x26);
    VIM_SIF_I2cWriteByte(0x94, 0x2f);
    VIM_SIF_I2cWriteByte(0x95, 0x37);
    VIM_SIF_I2cWriteByte(0x96, 0x45);
    VIM_SIF_I2cWriteByte(0x97, 0x51);
    VIM_SIF_I2cWriteByte(0x98, 0x5c);
    VIM_SIF_I2cWriteByte(0x99, 0x65);
    VIM_SIF_I2cWriteByte(0x9a, 0x77);
    VIM_SIF_I2cWriteByte(0x9b, 0x87);
    VIM_SIF_I2cWriteByte(0x9c, 0x95);
    VIM_SIF_I2cWriteByte(0x9d, 0xae);
    VIM_SIF_I2cWriteByte(0x9e, 0xc5);
    VIM_SIF_I2cWriteByte(0x9f, 0xda);
    VIM_SIF_I2cWriteByte(0xd, 0x19);
    VIM_SIF_I2cWriteByte(0xe0, 0x00);
    break;
  case 4:
    VIM_SIF_I2cWriteByte(0x09, 0x07);
    VIM_SIF_I2cWriteByte(0xe7, 0x0c);
    VIM_SIF_I2cWriteByte(0xe8, 0x8b);
    VIM_SIF_I2cWriteByte(0x13, 0x80);
    VIM_SIF_I2cWriteByte(0x14, 0x80);
    VIM_SIF_I2cWriteByte(0x24, 0xff);
    VIM_SIF_I2cWriteByte(0x26, 0x87);
    VIM_SIF_I2cWriteByte(0x43, 0xc1);
    VIM_SIF_I2cWriteByte(0x46, 0x05);
    VIM_SIF_I2cWriteByte(0x60, 0xd0);
    VIM_SIF_I2cWriteByte(0x61, 0x85);
    VIM_SIF_I2cWriteByte(0x62, 0x55);
    VIM_SIF_I2cWriteByte(0x63, 0x20);
    VIM_SIF_I2cWriteByte(0x69, 0x07);
    VIM_SIF_I2cWriteByte(0x6a, 0x9a);
    VIM_SIF_I2cWriteByte(0xea, 0xb0);
    VIM_SIF_I2cWriteByte(0xeb, 0x90);
    VIM_SIF_I2cWriteByte(0xec, 0x60);
    VIM_SIF_I2cWriteByte(0xed, 0x20);
    VIM_SIF_I2cWriteByte(0x77, 0x0f);
    VIM_SIF_I2cWriteByte(0x78, 0x90);
    VIM_SIF_I2cWriteByte(0x79, 0x90);
    VIM_SIF_I2cWriteByte(0x7c, 0x20);
    VIM_SIF_I2cWriteByte(0x7d, 0x40);
    VIM_SIF_I2cWriteByte(0x31, 0x08);
    VIM_SIF_I2cWriteByte(0x32, 0x0d);
    VIM_SIF_I2cWriteByte(0x33, 0x16);
    VIM_SIF_I2cWriteByte(0x34, 0x1e);
    VIM_SIF_I2cWriteByte(0x35, 0x24);
    VIM_SIF_I2cWriteByte(0x36, 0x30);
    VIM_SIF_I2cWriteByte(0x37, 0x3b);
    VIM_SIF_I2cWriteByte(0x38, 0x45);
    VIM_SIF_I2cWriteByte(0x39, 0x4f);
    VIM_SIF_I2cWriteByte(0x3a, 0x61);
    VIM_SIF_I2cWriteByte(0x3b, 0x71);
    VIM_SIF_I2cWriteByte(0x3c, 0x80);
    VIM_SIF_I2cWriteByte(0x3d, 0x9d);
    VIM_SIF_I2cWriteByte(0x3e, 0xb8);
    VIM_SIF_I2cWriteByte(0x3f, 0xd1);
    VIM_SIF_I2cWriteByte(0x81, 0x08);
    VIM_SIF_I2cWriteByte(0x82, 0x0d);
    VIM_SIF_I2cWriteByte(0x83, 0x16);
    VIM_SIF_I2cWriteByte(0x84, 0x1e);
    VIM_SIF_I2cWriteByte(0x85, 0x24);
    VIM_SIF_I2cWriteByte(0x86, 0x30);
    VIM_SIF_I2cWriteByte(0x87, 0x3b);
    VIM_SIF_I2cWriteByte(0x88, 0x45);
    VIM_SIF_I2cWriteByte(0x89, 0x4f);
    VIM_SIF_I2cWriteByte(0x8a, 0x61);
    VIM_SIF_I2cWriteByte(0x8b, 0x71);
    VIM_SIF_I2cWriteByte(0x8c, 0x80);
    VIM_SIF_I2cWriteByte(0x8d, 0x9d);
    VIM_SIF_I2cWriteByte(0x8e, 0xb8);
    VIM_SIF_I2cWriteByte(0x8f, 0xd1);
    VIM_SIF_I2cWriteByte(0x91, 0x08);
    VIM_SIF_I2cWriteByte(0x92, 0x0d);
    VIM_SIF_I2cWriteByte(0x93, 0x16);
    VIM_SIF_I2cWriteByte(0x94, 0x1e);
    VIM_SIF_I2cWriteByte(0x95, 0x24);
    VIM_SIF_I2cWriteByte(0x96, 0x30);
    VIM_SIF_I2cWriteByte(0x97, 0x3b);
    VIM_SIF_I2cWriteByte(0x98, 0x45);
    VIM_SIF_I2cWriteByte(0x99, 0x4f);
    VIM_SIF_I2cWriteByte(0x9a, 0x61);
    VIM_SIF_I2cWriteByte(0x9b, 0x71);
    VIM_SIF_I2cWriteByte(0x9c, 0x80);
    VIM_SIF_I2cWriteByte(0x9d, 0x9d);
    VIM_SIF_I2cWriteByte(0x9e, 0xb8);
    VIM_SIF_I2cWriteByte(0x9f, 0xd1);
    VIM_SIF_I2cWriteByte(0x0d, 0x1b);
    VIM_SIF_I2cWriteByte(0xe0, 0x00);
    break;
  case 3:
    VIM_SIF_I2cWriteByte(0x9, 0x1f);
    VIM_SIF_I2cWriteByte(0xe7, 0x0c);
    VIM_SIF_I2cWriteByte(0xe8, 0x0d);
    VIM_SIF_I2cWriteByte(0x13, 0x80);
    VIM_SIF_I2cWriteByte(0x14, 0xa0);
    VIM_SIF_I2cWriteByte(0x24, 0x0);
    VIM_SIF_I2cWriteByte(0x26, 0x8d);
    VIM_SIF_I2cWriteByte(0x43, 0x41);
    VIM_SIF_I2cWriteByte(0x46, 0x00);
    VIM_SIF_I2cWriteByte(0x60, 0xa0);
    VIM_SIF_I2cWriteByte(0x61, 0x65);
    VIM_SIF_I2cWriteByte(0x62, 0x35);
    VIM_SIF_I2cWriteByte(0x63, 0x10);
    VIM_SIF_I2cWriteByte(0x69, 0x00);
    VIM_SIF_I2cWriteByte(0x6a, 0xb6);
    VIM_SIF_I2cWriteByte(0xea, 0xa0);
    VIM_SIF_I2cWriteByte(0xeb, 0x80);
    VIM_SIF_I2cWriteByte(0xec, 0x50);
    VIM_SIF_I2cWriteByte(0xed, 0x10);
    VIM_SIF_I2cWriteByte(0x77, 0x00);
    VIM_SIF_I2cWriteByte(0x78, 0xa0);
    VIM_SIF_I2cWriteByte(0x79, 0xa0);
    VIM_SIF_I2cWriteByte(0x7c, 0x20);
    VIM_SIF_I2cWriteByte(0x7d, 0x25);
    VIM_SIF_I2cWriteByte(0x31, 0x11);
    VIM_SIF_I2cWriteByte(0x32, 0x19);
    VIM_SIF_I2cWriteByte(0x33, 0x26);
    VIM_SIF_I2cWriteByte(0x34, 0x2f);
    VIM_SIF_I2cWriteByte(0x35, 0x37);
    VIM_SIF_I2cWriteByte(0x36, 0x45);
    VIM_SIF_I2cWriteByte(0x37, 0x51);
    VIM_SIF_I2cWriteByte(0x38, 0x5c);
    VIM_SIF_I2cWriteByte(0x39, 0x65);
    VIM_SIF_I2cWriteByte(0x3a, 0x77);
    VIM_SIF_I2cWriteByte(0x3b, 0x87);
    VIM_SIF_I2cWriteByte(0x3c, 0x95);
    VIM_SIF_I2cWriteByte(0x3d, 0xae);
    VIM_SIF_I2cWriteByte(0x3e, 0xc5);
    VIM_SIF_I2cWriteByte(0x3f, 0xda);
    VIM_SIF_I2cWriteByte(0x81, 0x11);
    VIM_SIF_I2cWriteByte(0x82, 0x19);
    VIM_SIF_I2cWriteByte(0x83, 0x26);
    VIM_SIF_I2cWriteByte(0x84, 0x2f);
    VIM_SIF_I2cWriteByte(0x85, 0x37);
    VIM_SIF_I2cWriteByte(0x86, 0x45);
    VIM_SIF_I2cWriteByte(0x87, 0x51);
    VIM_SIF_I2cWriteByte(0x88, 0x5c);
    VIM_SIF_I2cWriteByte(0x89, 0x65);
    VIM_SIF_I2cWriteByte(0x8a, 0x77);
    VIM_SIF_I2cWriteByte(0x8b, 0x87);
    VIM_SIF_I2cWriteByte(0x8c, 0x95);
    VIM_SIF_I2cWriteByte(0x8d, 0xae);
    VIM_SIF_I2cWriteByte(0x8e, 0xc5);
    VIM_SIF_I2cWriteByte(0x8f, 0xda);
    VIM_SIF_I2cWriteByte(0x91, 0x11);
    VIM_SIF_I2cWriteByte(0x92, 0x19);
    VIM_SIF_I2cWriteByte(0x93, 0x26);
    VIM_SIF_I2cWriteByte(0x94, 0x2f);
    VIM_SIF_I2cWriteByte(0x95, 0x37);
    VIM_SIF_I2cWriteByte(0x96, 0x45);
    VIM_SIF_I2cWriteByte(0x97, 0x51);
    VIM_SIF_I2cWriteByte(0x98, 0x5c);
    VIM_SIF_I2cWriteByte(0x99, 0x65);
    VIM_SIF_I2cWriteByte(0x9a, 0x77);
    VIM_SIF_I2cWriteByte(0x9b, 0x87);
    VIM_SIF_I2cWriteByte(0x9c, 0x95);
    VIM_SIF_I2cWriteByte(0x9d, 0xae);
    VIM_SIF_I2cWriteByte(0x9e, 0xc5);
    VIM_SIF_I2cWriteByte(0x9f, 0xda);
    VIM_SIF_I2cWriteByte(0xd, 0x11);
    VIM_SIF_I2cWriteByte(0xe0, 0x00);
    break;
  default:
    break;
  }
}
```