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

```asm
<output_add_method>:
  endbr64
  push   %r12
  xor    %eax,%eax
  mov    %rsi,%r12
  lea    D63(%rip),%rsi
  push   %rbp
  mov    %rdi,%rbp
  push   %rbx
  mov    %rdx,%rbx
  call   <outputf@plt>
  mov    %rbp,%rdi
  lea    D101(%rip),%rsi
  xor    %eax,%eax
  call   <outputf@plt>
  mov    %rbx,%rdx
  mov    %rbp,%rdi
  xor    %eax,%eax
  lea    D9(%rip),%rsi
  call   <outputf@plt>
  mov    %rbx,%r8
  mov    %r12,%rcx
  mov    %rbp,%rdi
  lea    D59(%rip),%rdx
  lea    D73(%rip),%rsi
  xor    %eax,%eax
  call   <outputf@plt>
  mov    %rbp,%rdi
  call   <output_dump_stack@plt>
  mov    %rbp,%rdi
  lea    D94(%rip),%rsi
  xor    %eax,%eax
  call   <outputf@plt>
  mov    %rbp,%rdi
  lea    D56(%rip),%rsi
  xor    %eax,%eax
  call   <outputf@plt>
  mov    %rbp,%rdi
  lea    D80(%rip),%rsi
  xor    %eax,%eax
  call   <outputf@plt>
  mov    %rbp,%rdi
  lea    D86(%rip),%rsi
  xor    %eax,%eax
  call   <outputf@plt>
  mov    %rbp,%rdi
  lea    D100(%rip),%rsi
  xor    %eax,%eax
  call   <outputf@plt>
  mov    %rbp,%rdi
  lea    D3(%rip),%rsi
  xor    %eax,%eax
  call   <outputf@plt>
  mov    %rbp,%rdi
  lea    D107(%rip),%rsi
  xor    %eax,%eax
  call   <outputf@plt>
  pop    %rbx
  xor    %eax,%eax
  pop    %rbp
  pop    %r12
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D63
data_type: string
name: extract_symbolic_data
arguments: data_tag: D101
data_type: string
name: extract_symbolic_data
arguments: data_tag: D9
data_type: string
name: extract_symbolic_data
arguments: data_tag: D59
data_type: string
name: extract_symbolic_data
arguments: data_tag: D73
data_type: string
name: extract_symbolic_data
arguments: data_tag: D94
data_type: string
name: extract_symbolic_data
arguments: data_tag: D56
data_type: string
name: extract_symbolic_data
arguments: data_tag: D80
data_type: string
name: extract_symbolic_data
arguments: data_tag: D86
data_type: string
name: extract_symbolic_data
arguments: data_tag: D100
data_type: string
name: extract_symbolic_data
arguments: data_tag: D3
data_type: string
name: extract_symbolic_data
arguments: data_tag: D107
data_type: string

tool: D63: 	/* Add a method */


tool: D101: 	duk_dup(ctx, 0);


tool: D9: 	duk_push_string(ctx, "%s");


tool: D59: dukky

tool: D73: 	duk_push_c_function(ctx, %s_%s_%s, DUK_VARARGS);


tool: D94: 	duk_def_prop(ctx, -3,


tool: D56: 		     DUK_DEFPROP_HAVE_VALUE |


tool: D80: 		     DUK_DEFPROP_HAVE_WRITABLE |


tool: D86: 		     DUK_DEFPROP_HAVE_ENUMERABLE |


tool: D100: 		     DUK_DEFPROP_ENUMERABLE |


tool: D3: 		     DUK_DEFPROP_HAVE_CONFIGURABLE);


tool: D107: 	duk_pop(ctx);



assistant: ```c
int output_add_method(struct opctx *outc, const char *class_name, const char *method) {
  outputf(outc, "\t/* Add a method */\n");
  outputf(outc, "\tduk_dup(ctx, 0);\n");
  outputf(outc, "\tduk_push_string(ctx, \"%s\");\n", method);
  outputf(outc, "\tduk_push_c_function(ctx, %s_%s_%s, DUK_VARARGS);\n", "dukky", class_name, method);
  output_dump_stack(outc);
  outputf(outc, "\tduk_def_prop(ctx, -3,\n");
  outputf(outc, "\t\t     DUK_DEFPROP_HAVE_VALUE |\n");
  outputf(outc, "\t\t     DUK_DEFPROP_HAVE_WRITABLE |\n");
  outputf(outc, "\t\t     DUK_DEFPROP_HAVE_ENUMERABLE |\n");
  outputf(outc, "\t\t     DUK_DEFPROP_ENUMERABLE |\n");
  outputf(outc, "\t\t     DUK_DEFPROP_HAVE_CONFIGURABLE);\n");
  outputf(outc, "\tduk_pop(ctx);\n\n");
  return 0;
}
```