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

```asm
<local_compensation>:
  endbr64
  lea    0x3(%rdi),%eax
  test   %edi,%edi
  cmovns %edi,%eax
  sar    $0x2,%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mulss  D446(%rip),%xmm0
  comiss D386(%rip),%xmm0
  jb     L86
  movss  D119(%rip),%xmm1
  comiss %xmm0,%xmm1
  jb     L86
  mulss  D87(%rip),%xmm0
  divss  %xmm1,%xmm0
  cvttss2si %xmm0,%eax
  ret
L86:
  comiss D119(%rip),%xmm0
  jbe    L74
  movss  D184(%rip),%xmm1
  comiss %xmm0,%xmm1
  jb     L74
  movss  D119(%rip),%xmm1
  subss  %xmm1,%xmm0
  mulss  D281(%rip),%xmm0
  divss  %xmm1,%xmm0
  addss  D87(%rip),%xmm0
  cvttss2si %xmm0,%eax
  ret
L74:
  comiss D184(%rip),%xmm0
  jbe    L143
  movss  D343(%rip),%xmm1
  comiss %xmm0,%xmm1
  jb     L143
  movss  D184(%rip),%xmm2
  subss  %xmm2,%xmm0
  movss  D333(%rip),%xmm1
  mulss  %xmm1,%xmm0
  divss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  cvttss2si %xmm0,%eax
  ret
L143:
  comiss D343(%rip),%xmm0
  jbe    L22
  movss  D418(%rip),%xmm1
  comiss %xmm0,%xmm1
  jb     L22
  subss  D343(%rip),%xmm0
  mulss  D211(%rip),%xmm0
  divss  D184(%rip),%xmm0
  addss  D117(%rip),%xmm0
  cvttss2si %xmm0,%eax
  ret
L22:
  comiss D418(%rip),%xmm0
  jbe    L68
  movss  D114(%rip),%xmm1
  comiss %xmm0,%xmm1
  jb     L68
  subss  D418(%rip),%xmm0
  mulss  D211(%rip),%xmm0
  divss  D184(%rip),%xmm0
  addss  D121(%rip),%xmm0
  cvttss2si %xmm0,%eax
  ret
L68:
  comiss D114(%rip),%xmm0
  jbe    L113
  movss  D16(%rip),%xmm1
  comiss %xmm0,%xmm1
  jb     L113
  subss  D114(%rip),%xmm0
  mulss  D398(%rip),%xmm0
  divss  D184(%rip),%xmm0
  addss  D189(%rip),%xmm0
  cvttss2si %xmm0,%eax
  ret
L113:
  comiss D16(%rip),%xmm0
  jbe    L115
  movss  D14(%rip),%xmm1
  comiss %xmm0,%xmm1
  jb     L115
  subss  D16(%rip),%xmm0
  mulss  D398(%rip),%xmm0
  divss  D184(%rip),%xmm0
  addss  D416(%rip),%xmm0
  cvttss2si %xmm0,%eax
  ret
L115:
  comiss D14(%rip),%xmm0
  jbe    L63
  movss  D314(%rip),%xmm1
  comiss %xmm0,%xmm1
  jb     L63
  subss  D14(%rip),%xmm0
  mulss  D399(%rip),%xmm0
  divss  D343(%rip),%xmm0
  addss  D27(%rip),%xmm0
  cvttss2si %xmm0,%eax
  ret
L63:
  comiss D314(%rip),%xmm0
  jbe    L172
  movss  D433(%rip),%xmm1
  comiss %xmm0,%xmm1
  jb     L136
  subss  D314(%rip),%xmm0
  mulss  D427(%rip),%xmm0
  divss  D58(%rip),%xmm0
  addss  D464(%rip),%xmm0
  cvttss2si %xmm0,%eax
  ret
L172:
  mov    $0x0,%eax
  ret
L136:
  mov    $0x0,%eax
  ret
```

tool_calls: name: read_data
arguments: data_label: D446
type_infered: byte[4]
name: read_data
arguments: data_label: D386
type_infered: byte[4]
name: read_data
arguments: data_label: D119
type_infered: byte[4]
name: read_data
arguments: data_label: D87
type_infered: byte[4]
name: read_data
arguments: data_label: D184
type_infered: byte[4]
name: read_data
arguments: data_label: D281
type_infered: byte[4]
name: read_data
arguments: data_label: D343
type_infered: byte[4]
name: read_data
arguments: data_label: D333
type_infered: byte[4]
name: read_data
arguments: data_label: D418
type_infered: byte[4]
name: read_data
arguments: data_label: D211
type_infered: byte[4]
name: read_data
arguments: data_label: D117
type_infered: byte[4]
name: read_data
arguments: data_label: D114
type_infered: byte[4]
name: read_data
arguments: data_label: D121
type_infered: byte[4]
name: read_data
arguments: data_label: D16
type_infered: byte[4]
name: read_data
arguments: data_label: D398
type_infered: byte[4]
name: read_data
arguments: data_label: D189
type_infered: byte[4]
name: read_data
arguments: data_label: D14
type_infered: byte[4]
name: read_data
arguments: data_label: D416
type_infered: byte[4]
name: read_data
arguments: data_label: D314
type_infered: byte[4]
name: read_data
arguments: data_label: D399
type_infered: byte[4]
name: read_data
arguments: data_label: D27
type_infered: byte[4]
name: read_data
arguments: data_label: D433
type_infered: byte[4]
name: read_data
arguments: data_label: D427
type_infered: byte[4]
name: read_data
arguments: data_label: D58
type_infered: byte[4]
name: read_data
arguments: data_label: D464
type_infered: byte[4]

tool: {"D446": [0x00,0x00,0x00,0x3d]}

tool: {"D386": [0x00,0x00,0x00,0x00]}

tool: {"D119": [0x00,0x00,0xa0,0x40]}

tool: {"D87": [0x00,0x00,0xc8,0x41]}

tool: {"D184": [0x00,0x00,0x20,0x41]}

tool: {"D281": [0x00,0x00,0xd0,0x41]}

tool: {"D343": [0x00,0x00,0xa0,0x41]}

tool: {"D333": [0x00,0x00,0x4c,0x42]}

tool: {"D418": [0x00,0x00,0xf0,0x41]}

tool: {"D211": [0x00,0x00,0x50,0x42]}

tool: {"D117": [0x00,0x00,0xcc,0x42]}

tool: {"D114": [0x00,0x00,0x20,0x42]}

tool: {"D121": [0x00,0x00,0x1a,0x43]}

tool: {"D16": [0x00,0x00,0x48,0x42]}

tool: {"D398": [0x00,0x00,0x54,0x42]}

tool: {"D189": [0x00,0x00,0x4e,0x43]}

tool: {"D14": [0x00,0x00,0x70,0x42]}

tool: {"D416": [0x00,0x80,0x81,0x43]}

tool: {"D314": [0x00,0x00,0xa0,0x42]}

tool: {"D399": [0x00,0x00,0xd4,0x42]}

tool: {"D27": [0x00,0x00,0x9c,0x43]}

tool: {"D433": [0x00,0x00,0xfa,0x42]}

tool: {"D427": [0x00,0x00,0x6e,0x43]}

tool: {"D58": [0x00,0x00,0x34,0x42]}

tool: {"D464": [0x00,0x00,0xd1,0x43]}

assistant: ```c
int local_compensation(int local_code) {
  float tmp, local_temp;
  int comp;
  local_code = local_code / 4;
  local_temp = (float)local_code / 32;
  if (local_temp >= 0 && local_temp <= 5) {
    tmp = (0x0019 * local_temp) / 5;
    comp = tmp;
  } else if (local_temp > 5 && local_temp <= 10) {
    tmp = (0x001A * (local_temp - 5)) / 5 + 0x0019;
    comp = tmp;
  } else if (local_temp > 10 && local_temp <= 20) {
    tmp = (0x0033 * (local_temp - 10)) / 10 + 0x0033;
    comp = tmp;
  } else if (local_temp > 20 && local_temp <= 30) {
    tmp = (0x0034 * (local_temp - 20)) / 10 + 0x0066;
    comp = tmp;
  } else if (local_temp > 30 && local_temp <= 40) {
    tmp = (0x0034 * (local_temp - 30)) / 10 + 0x009A;
    comp = tmp;
  } else if (local_temp > 40 && local_temp <= 50) {
    tmp = (0x0035 * (local_temp - 40)) / 10 + 0x00CE;
    comp = tmp;
  } else if (local_temp > 50 && local_temp <= 60) {
    tmp = (0x0035 * (local_temp - 50)) / 10 + 0x0103;
    comp = tmp;
  } else if (local_temp > 60 && local_temp <= 80) {
    tmp = (0x006A * (local_temp - 60)) / 20 + 0x0138;
    comp = tmp;
  } else if (local_temp > 80 && local_temp <= 125) {
    tmp = (0x00EE * (local_temp - 80)) / 45 + 0x01A2;
    comp = tmp;
  } else {
    comp = 0;
  }
  return comp;
}
```