user: What is the c source code of the assembly code below:

```asm
<send_oscam_config>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    -0x18(%rbp),%rax
  mov    $0x2,%esi
  mov    %rax,%rdi
  call   <setActiveMenu@plt>
  mov    -0x20(%rbp),%rax
  lea    D54(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <getParam@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x8(%rbp),%rax
  lea    D7(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L208
  mov    -0x20(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <send_oscam_config_webif@plt>
  jmp    L139
L208:
  mov    -0x8(%rbp),%rax
  lea    D41(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L77
  mov    -0x20(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <send_oscam_config_monitor@plt>
  jmp    L139
L77:
  mov    -0x8(%rbp),%rax
  lea    D16(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L102
  mov    -0x20(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <send_oscam_config_camd35@plt>
  jmp    L139
L102:
  mov    -0x8(%rbp),%rax
  lea    D112(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L120
  mov    -0x20(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <send_oscam_config_camd35tcp@plt>
  jmp    L139
L120:
  mov    -0x8(%rbp),%rax
  lea    D147(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L86
  mov    -0x20(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <send_oscam_config_cache@plt>
  jmp    L139
L86:
  mov    -0x8(%rbp),%rax
  lea    D135(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L42
  mov    -0x20(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <send_oscam_config_newcamd@plt>
  jmp    L139
L42:
  mov    -0x8(%rbp),%rax
  lea    D134(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L201
  mov    -0x20(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <send_oscam_config_radegast@plt>
  jmp    L139
L201:
  mov    -0x8(%rbp),%rax
  lea    D48(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L187
  mov    -0x20(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <send_oscam_config_scam@plt>
  jmp    L139
L187:
  mov    -0x8(%rbp),%rax
  lea    D80(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L218
  mov    -0x20(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <send_oscam_config_cccam@plt>
  jmp    L139
L218:
  mov    -0x8(%rbp),%rax
  lea    D85(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L176
  mov    -0x20(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <send_oscam_config_gbox@plt>
  jmp    L139
L176:
  mov    -0x8(%rbp),%rax
  lea    D111(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L10
  mov    -0x20(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <send_oscam_config_dvbapi@plt>
  jmp    L139
L10:
  mov    -0x8(%rbp),%rax
  lea    D14(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L0
  mov    -0x20(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <send_oscam_config_anticasc@plt>
  jmp    L139
L0:
  mov    -0x8(%rbp),%rax
  lea    D92(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L266
  mov    -0x20(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <send_oscam_config_serial@plt>
  jmp    L139
L266:
  mov    -0x8(%rbp),%rax
  lea    D99(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L211
  mov    -0x20(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <send_oscam_config_loadbalancer@plt>
  jmp    L139
L211:
  mov    -0x20(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <send_oscam_config_global@plt>
L139:
  leave
  ret
```

tool_calls: name: unpack_data
arguments: label: D54
type_guessed: string
name: unpack_data
arguments: label: D7
type_guessed: string
name: unpack_data
arguments: label: D41
type_guessed: string
name: unpack_data
arguments: label: D16
type_guessed: string
name: unpack_data
arguments: label: D112
type_guessed: string
name: unpack_data
arguments: label: D147
type_guessed: string
name: unpack_data
arguments: label: D135
type_guessed: string
name: unpack_data
arguments: label: D134
type_guessed: string
name: unpack_data
arguments: label: D48
type_guessed: string
name: unpack_data
arguments: label: D80
type_guessed: string
name: unpack_data
arguments: label: D85
type_guessed: string
name: unpack_data
arguments: label: D111
type_guessed: string
name: unpack_data
arguments: label: D14
type_guessed: string
name: unpack_data
arguments: label: D92
type_guessed: string
name: unpack_data
arguments: label: D99
type_guessed: string

tool: D54: part

tool: D7: webif

tool: D41: monitor

tool: D16: camd35

tool: D112: camd35tcp

tool: D147: cache

tool: D135: newcamd

tool: D134: radegast

tool: D48: scam

tool: D80: cccam

tool: D85: gbox

tool: D111: dvbapi

tool: D14: anticasc

tool: D92: serial

tool: D99: loadbalancer

assistant: ```c
char *send_oscam_config(struct templatevars *vars, struct uriparams *params) {
  setActiveMenu(vars, 2);
  char *part = getParam(params, "part");
  if (!strcmp(part, "webif")) {
    return send_oscam_config_webif(vars, params);
  } else if (!strcmp(part, "monitor")) {
    return send_oscam_config_monitor(vars, params);
  } else if (!strcmp(part, "camd35")) {
    return send_oscam_config_camd35(vars, params);
  } else if (!strcmp(part, "camd35tcp")) {
    return send_oscam_config_camd35tcp(vars, params);
  } else if (!strcmp(part, "cache")) {
    return send_oscam_config_cache(vars, params);
  } else if (!strcmp(part, "newcamd")) {
    return send_oscam_config_newcamd(vars, params);
  } else if (!strcmp(part, "radegast")) {
    return send_oscam_config_radegast(vars, params);
  } else if (!strcmp(part, "scam")) {
    return send_oscam_config_scam(vars, params);
  } else if (!strcmp(part, "cccam")) {
    return send_oscam_config_cccam(vars, params);
  } else if (!strcmp(part, "gbox")) {
    return send_oscam_config_gbox(vars, params);
  } else if (!strcmp(part, "dvbapi")) {
    return send_oscam_config_dvbapi(vars, params);
  } else if (!strcmp(part, "anticasc")) {
    return send_oscam_config_anticasc(vars, params);
  } else if (!strcmp(part, "serial")) {
    return send_oscam_config_serial(vars, params);
  } else if (!strcmp(part, "loadbalancer")) {
    return send_oscam_config_loadbalancer(vars, params);
  } else {
    return send_oscam_config_global(vars, params);
  }
}
```