user: 请从给定的汇编指令推导出C源代码:

```asm
<gain_aster>:
  endbr64
  test   %esi,%esi
  jne    L379
  movsd  D95(%rip),%xmm0
  cmp    $0x1,%edi
  je     L414
  movsd  D320(%rip),%xmm0
  cmp    $0x2,%edi
  jne    L418
L414:
  ret
  nopw   0x0(%rax,%rax,1)
L379:
  cmp    $0x1,%esi
  jne    L144
  movsd  D205(%rip),%xmm0
  test   %edi,%edi
  je     L414
  movsd  D227(%rip),%xmm0
  cmp    $0x1,%edi
  je     L414
  cmp    $0x2,%edi
  jne    L164
L169:
  movsd  D238(%rip),%xmm0
  ret
L144:
  cmp    $0x2,%esi
  jne    L47
  movsd  D394(%rip),%xmm0
  test   %edi,%edi
  je     L414
  movsd  D167(%rip),%xmm0
  cmp    $0x1,%edi
  je     L414
  cmp    $0x2,%edi
  jne    L97
L15:
  movsd  D256(%rip),%xmm0
  ret
L47:
  cmp    $0x3,%esi
  jne    L270
  movsd  D384(%rip),%xmm0
  cmp    $0x4,%edi
  je     L414
  cmp    $0x5,%edi
  jne    L438
  movsd  D91(%rip),%xmm0
  ret
  nopl   0x0(%rax)
L418:
  cmp    $0x3,%edi
  jne    L284
  movsd  D320(%rip),%xmm0
  ret
  cs nopw 0x0(%rax,%rax,1)
L438:
  cmp    $0x6,%edi
  jne    L246
  movsd  D204(%rip),%xmm0
  ret
L284:
  cmp    $0x4,%edi
  jne    L320
  movsd  D325(%rip),%xmm0
  ret
L320:
  cmp    $0x5,%edi
  jne    L357
  movsd  D124(%rip),%xmm0
  ret
L164:
  cmp    $0x3,%edi
  je     L169
  cmp    $0x4,%edi
  jne    L137
  movsd  D230(%rip),%xmm0
  ret
L97:
  cmp    $0x3,%edi
  je     L15
  cmp    $0x4,%edi
  jne    L63
  movsd  D384(%rip),%xmm0
  ret
L246:
  cmp    $0x7,%edi
  jne    L346
  movsd  D9(%rip),%xmm0
  ret
L346:
  cmp    $0x8,%edi
  jne    L316
  movsd  D106(%rip),%xmm0
  ret
L316:
  cmp    $0x9,%edi
  jne    L414
  movsd  D114(%rip),%xmm0
  ret
L357:
  movsd  D177(%rip),%xmm0
  cmp    $0x6,%edi
  jne    L435
  movsd  D340(%rip),%xmm0
  ret
L435:
  cmp    $0x7,%edi
  jne    L193
  movsd  D52(%rip),%xmm0
  ret
L193:
  cmp    $0x8,%edi
  jne    L278
  movsd  D159(%rip),%xmm0
  ret
L278:
  cmp    $0x9,%edi
  jne    L362
  movsd  D331(%rip),%xmm0
  ret
L270:
  ret
L362:
  ret
L63:
  movsd  D394(%rip),%xmm0
  cmp    $0x5,%edi
  jne    L159
  movsd  D273(%rip),%xmm0
  ret
L159:
  cmp    $0x6,%edi
  jne    L113
  movsd  D407(%rip),%xmm0
  ret
L113:
  cmp    $0x7,%edi
  jne    L157
  movsd  D198(%rip),%xmm0
  ret
L157:
  cmp    $0x8,%edi
  jne    L332
  movsd  D398(%rip),%xmm0
  ret
L332:
  cmp    $0x9,%edi
  jne    L3
  movsd  D315(%rip),%xmm0
  ret
L137:
  movsd  D205(%rip),%xmm0
  cmp    $0x5,%edi
  jne    L402
  movsd  D349(%rip),%xmm0
  ret
L402:
  cmp    $0x6,%edi
  jne    L106
  movsd  D28(%rip),%xmm0
  ret
L106:
  cmp    $0x7,%edi
  jne    L87
  movsd  D409(%rip),%xmm0
  ret
L87:
  cmp    $0x8,%edi
  jne    L381
  movsd  D358(%rip),%xmm0
  ret
L381:
  cmp    $0x9,%edi
  jne    L16
  movsd  D286(%rip),%xmm0
  ret
L16:
  cmp    $0xa,%edi
  jne    L46
  movsd  D235(%rip),%xmm0
  ret
L46:
  cmp    $0xb,%edi
  jne    L352
  movsd  D195(%rip),%xmm0
  ret
L352:
  cmp    $0xc,%edi
  jne    L216
  movsd  D219(%rip),%xmm0
  ret
L216:
  cmp    $0xd,%edi
  jne    L75
  movsd  D316(%rip),%xmm0
  ret
L75:
  cmp    $0xe,%edi
  jne    L119
  movsd  D170(%rip),%xmm0
  ret
L3:
  ret
L119:
  ret
```

tool_calls: name: unpack_data
arguments: data_label: D95
type_guessed: f64
name: unpack_data
arguments: data_label: D320
type_guessed: f64
name: unpack_data
arguments: data_label: D205
type_guessed: f64
name: unpack_data
arguments: data_label: D227
type_guessed: f64
name: unpack_data
arguments: data_label: D238
type_guessed: f64
name: unpack_data
arguments: data_label: D394
type_guessed: f64
name: unpack_data
arguments: data_label: D167
type_guessed: f64
name: unpack_data
arguments: data_label: D256
type_guessed: f64
name: unpack_data
arguments: data_label: D384
type_guessed: f64
name: unpack_data
arguments: data_label: D91
type_guessed: f64
name: unpack_data
arguments: data_label: D204
type_guessed: f64
name: unpack_data
arguments: data_label: D325
type_guessed: f64
name: unpack_data
arguments: data_label: D124
type_guessed: f64
name: unpack_data
arguments: data_label: D230
type_guessed: f64
name: unpack_data
arguments: data_label: D9
type_guessed: f64
name: unpack_data
arguments: data_label: D106
type_guessed: f64
name: unpack_data
arguments: data_label: D114
type_guessed: f64
name: unpack_data
arguments: data_label: D177
type_guessed: f64
name: unpack_data
arguments: data_label: D340
type_guessed: f64
name: unpack_data
arguments: data_label: D52
type_guessed: f64
name: unpack_data
arguments: data_label: D159
type_guessed: f64
name: unpack_data
arguments: data_label: D331
type_guessed: f64
name: unpack_data
arguments: data_label: D273
type_guessed: f64
name: unpack_data
arguments: data_label: D407
type_guessed: f64
name: unpack_data
arguments: data_label: D198
type_guessed: f64
name: unpack_data
arguments: data_label: D398
type_guessed: f64
name: unpack_data
arguments: data_label: D315
type_guessed: f64
name: unpack_data
arguments: data_label: D349
type_guessed: f64
name: unpack_data
arguments: data_label: D28
type_guessed: f64
name: unpack_data
arguments: data_label: D409
type_guessed: f64
name: unpack_data
arguments: data_label: D358
type_guessed: f64
name: unpack_data
arguments: data_label: D286
type_guessed: f64
name: unpack_data
arguments: data_label: D235
type_guessed: f64
name: unpack_data
arguments: data_label: D195
type_guessed: f64
name: unpack_data
arguments: data_label: D219
type_guessed: f64
name: unpack_data
arguments: data_label: D316
type_guessed: f64
name: unpack_data
arguments: data_label: D170
type_guessed: f64

tool: D95: 0.708

tool: D320: 0.423

tool: D205: 1.688

tool: D227: 1.415

tool: D238: 0.862

tool: D394: 2.25

tool: D167: 1.89

tool: D256: 1.15

tool: D384: 0.29

tool: D91: 0.409

tool: D204: 0.39

tool: D325: 0.1087

tool: D124: 0.0348

tool: D230: 0.2174

tool: D9: 0.332

tool: D106: 0.245

tool: D114: 0.265

tool: D177: 0.676

tool: D340: 0.0313

tool: D52: 0.0299

tool: D159: 0.0209

tool: D331: 0.0159

tool: D273: 0.0925

tool: D407: 0.083

tool: D198: 0.0795

tool: D398: 0.0556

tool: D315: 0.0424

tool: D349: 0.0696

tool: D28: 0.0625

tool: D409: 0.0597

tool: D358: 0.0417

tool: D286: 0.0318

tool: D235: 0.006822

tool: D195: 0.00678

tool: D219: 0.00659

tool: D316: 0.005693

tool: D170: 0.005225

assistant: ```c
double gain_aster(int band_number, int gain_code) {
  double result;
  if (gain_code == 0) {
    if (band_number == 0)
      result = 0.676;
    if (band_number == 1)
      result = 0.708;
    if (band_number == 2)
      result = 0.423;
    if (band_number == 3)
      result = 0.423;
    if (band_number == 4)
      result = 0.1087;
    if (band_number == 5)
      result = 0.0348;
    if (band_number == 6)
      result = 0.0313;
    if (band_number == 7)
      result = 0.0299;
    if (band_number == 8)
      result = 0.0209;
    if (band_number == 9)
      result = 0.0159;
  }
  if (gain_code == 1) {
    if (band_number == 0)
      result = 1.688;
    if (band_number == 1)
      result = 1.415;
    if (band_number == 2)
      result = 0.862;
    if (band_number == 3)
      result = 0.862;
    if (band_number == 4)
      result = 0.2174;
    if (band_number == 5)
      result = 0.0696;
    if (band_number == 6)
      result = 0.0625;
    if (band_number == 7)
      result = 0.0597;
    if (band_number == 8)
      result = 0.0417;
    if (band_number == 9)
      result = 0.0318;
    if (band_number == 10)
      result = 0.006822;
    if (band_number == 11)
      result = 0.006780;
    if (band_number == 12)
      result = 0.006590;
    if (band_number == 13)
      result = 0.005693;
    if (band_number == 14)
      result = 0.005225;
  }
  if (gain_code == 2) {
    if (band_number == 0)
      result = 2.25;
    if (band_number == 1)
      result = 1.89;
    if (band_number == 2)
      result = 1.15;
    if (band_number == 3)
      result = 1.15;
    if (band_number == 4)
      result = 0.290;
    if (band_number == 5)
      result = 0.0925;
    if (band_number == 6)
      result = 0.0830;
    if (band_number == 7)
      result = 0.0795;
    if (band_number == 8)
      result = 0.0556;
    if (band_number == 9)
      result = 0.0424;
  }
  if (gain_code == 3) {
    if (band_number == 4)
      result = 0.290;
    if (band_number == 5)
      result = 0.409;
    if (band_number == 6)
      result = 0.390;
    if (band_number == 7)
      result = 0.332;
    if (band_number == 8)
      result = 0.245;
    if (band_number == 9)
      result = 0.265;
  }
  return result;
}
```