user: Converte this assembly snippet into its equivalent C code:

```asm
<prolog>:
  endbr64
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  lea    D282(%rip),%rdi
  call   <printf@plt>
  lea    D244(%rip),%rbx
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D70(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D51(%rip),%rdi
  call   <printf@plt>
  lea    D465(%rip),%rdi
  call   <printf@plt>
  lea    D25(%rip),%r12
  mov    %r12,%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D688(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D99(%rip),%rdi
  call   <printf@plt>
  lea    D44(%rip),%rdi
  call   <printf@plt>
  lea    D112(%rip),%rdi
  call   <printf@plt>
  lea    D92(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D549(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D200(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D727(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D293(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D311(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D248(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D616(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D430(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D470(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D62(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D54(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D162(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D332(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D22(%rip),%rdi
  call   <printf@plt>
  lea    D710(%rip),%rdi
  call   <printf@plt>
  lea    D500(%rip),%rdi
  call   <printf@plt>
  lea    D388(%rip),%rdi
  call   <printf@plt>
  lea    D563(%rip),%rdi
  call   <printf@plt>
  lea    D656(%rip),%rdi
  call   <printf@plt>
  lea    D633(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D342(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D520(%rip),%rdi
  call   <printf@plt>
  lea    D259(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D362(%rip),%rdi
  call   <printf@plt>
  lea    D170(%rip),%r13
  mov    %r13,%rdi
  call   <printf@plt>
  lea    D151(%rip),%rbp
  mov    %rbp,%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D507(%rip),%rdi
  call   <printf@plt>
  lea    D303(%rip),%rdi
  call   <printf@plt>
  lea    D401(%rip),%rdi
  call   <printf@plt>
  lea    D330(%rip),%rdi
  call   <printf@plt>
  lea    D306(%rip),%rdi
  call   <printf@plt>
  lea    D144(%rip),%r14
  mov    %r14,%rdi
  call   <printf@plt>
  lea    D645(%rip),%rdi
  call   <printf@plt>
  lea    D199(%rip),%rdi
  call   <printf@plt>
  lea    D243(%rip),%rdi
  call   <printf@plt>
  lea    D261(%rip),%rdi
  call   <printf@plt>
  mov    %r14,%rdi
  call   <printf@plt>
  lea    D271(%rip),%rdi
  call   <printf@plt>
  lea    D197(%rip),%rdi
  call   <printf@plt>
  lea    D45(%rip),%rdi
  call   <printf@plt>
  lea    D537(%rip),%rdi
  call   <printf@plt>
  lea    D26(%rip),%rdi
  call   <printf@plt>
  lea    D643(%rip),%rdi
  call   <printf@plt>
  lea    D221(%rip),%rdi
  call   <printf@plt>
  lea    D380(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D339(%rip),%rdi
  call   <printf@plt>
  lea    D677(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D288(%rip),%rdi
  call   <printf@plt>
  lea    D49(%rip),%rdi
  call   <printf@plt>
  lea    D703(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D631(%rip),%rdi
  call   <printf@plt>
  lea    D287(%rip),%rdi
  call   <printf@plt>
  mov    %r13,%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D628(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D241(%rip),%rdi
  call   <printf@plt>
  lea    D684(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D720(%rip),%rdi
  call   <printf@plt>
  lea    D96(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D59(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D246(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D701(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D230(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D152(%rip),%rdi
  call   <printf@plt>
  lea    D699(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
```

tool_calls: name: retrieve_data
arguments: data_label: D282
type_guessed: string
name: retrieve_data
arguments: data_label: D244
type_guessed: string
name: retrieve_data
arguments: data_label: D70
type_guessed: string
name: retrieve_data
arguments: data_label: D51
type_guessed: string
name: retrieve_data
arguments: data_label: D465
type_guessed: string
name: retrieve_data
arguments: data_label: D25
type_guessed: string
name: retrieve_data
arguments: data_label: D688
type_guessed: string
name: retrieve_data
arguments: data_label: D99
type_guessed: string
name: retrieve_data
arguments: data_label: D44
type_guessed: string
name: retrieve_data
arguments: data_label: D112
type_guessed: string
name: retrieve_data
arguments: data_label: D92
type_guessed: string
name: retrieve_data
arguments: data_label: D549
type_guessed: string
name: retrieve_data
arguments: data_label: D200
type_guessed: string
name: retrieve_data
arguments: data_label: D727
type_guessed: string
name: retrieve_data
arguments: data_label: D293
type_guessed: string
name: retrieve_data
arguments: data_label: D311
type_guessed: string
name: retrieve_data
arguments: data_label: D248
type_guessed: string
name: retrieve_data
arguments: data_label: D616
type_guessed: string
name: retrieve_data
arguments: data_label: D430
type_guessed: string
name: retrieve_data
arguments: data_label: D470
type_guessed: string
name: retrieve_data
arguments: data_label: D62
type_guessed: string
name: retrieve_data
arguments: data_label: D54
type_guessed: string
name: retrieve_data
arguments: data_label: D162
type_guessed: string
name: retrieve_data
arguments: data_label: D332
type_guessed: string
name: retrieve_data
arguments: data_label: D22
type_guessed: string
name: retrieve_data
arguments: data_label: D710
type_guessed: string
name: retrieve_data
arguments: data_label: D500
type_guessed: string
name: retrieve_data
arguments: data_label: D388
type_guessed: string
name: retrieve_data
arguments: data_label: D563
type_guessed: string
name: retrieve_data
arguments: data_label: D656
type_guessed: string
name: retrieve_data
arguments: data_label: D633
type_guessed: string
name: retrieve_data
arguments: data_label: D342
type_guessed: string
name: retrieve_data
arguments: data_label: D520
type_guessed: string
name: retrieve_data
arguments: data_label: D259
type_guessed: string
name: retrieve_data
arguments: data_label: D362
type_guessed: string
name: retrieve_data
arguments: data_label: D170
type_guessed: string
name: retrieve_data
arguments: data_label: D151
type_guessed: string
name: retrieve_data
arguments: data_label: D507
type_guessed: string
name: retrieve_data
arguments: data_label: D303
type_guessed: string
name: retrieve_data
arguments: data_label: D401
type_guessed: string
name: retrieve_data
arguments: data_label: D330
type_guessed: string
name: retrieve_data
arguments: data_label: D306
type_guessed: string
name: retrieve_data
arguments: data_label: D144
type_guessed: string
name: retrieve_data
arguments: data_label: D645
type_guessed: string
name: retrieve_data
arguments: data_label: D199
type_guessed: string
name: retrieve_data
arguments: data_label: D243
type_guessed: string
name: retrieve_data
arguments: data_label: D261
type_guessed: string
name: retrieve_data
arguments: data_label: D271
type_guessed: string
name: retrieve_data
arguments: data_label: D197
type_guessed: string
name: retrieve_data
arguments: data_label: D45
type_guessed: string
name: retrieve_data
arguments: data_label: D537
type_guessed: string
name: retrieve_data
arguments: data_label: D26
type_guessed: string
name: retrieve_data
arguments: data_label: D643
type_guessed: string
name: retrieve_data
arguments: data_label: D221
type_guessed: string
name: retrieve_data
arguments: data_label: D380
type_guessed: string
name: retrieve_data
arguments: data_label: D339
type_guessed: string
name: retrieve_data
arguments: data_label: D677
type_guessed: string
name: retrieve_data
arguments: data_label: D288
type_guessed: string
name: retrieve_data
arguments: data_label: D49
type_guessed: string
name: retrieve_data
arguments: data_label: D703
type_guessed: string
name: retrieve_data
arguments: data_label: D631
type_guessed: string
name: retrieve_data
arguments: data_label: D287
type_guessed: string
name: retrieve_data
arguments: data_label: D628
type_guessed: string
name: retrieve_data
arguments: data_label: D241
type_guessed: string
name: retrieve_data
arguments: data_label: D684
type_guessed: string
name: retrieve_data
arguments: data_label: D720
type_guessed: string
name: retrieve_data
arguments: data_label: D96
type_guessed: string
name: retrieve_data
arguments: data_label: D59
type_guessed: string
name: retrieve_data
arguments: data_label: D246
type_guessed: string
name: retrieve_data
arguments: data_label: D701
type_guessed: string
name: retrieve_data
arguments: data_label: D230
type_guessed: string
name: retrieve_data
arguments: data_label: D152
type_guessed: string
name: retrieve_data
arguments: data_label: D699
type_guessed: string

tool: D282: #ifdef _MSC_VER


tool: D244: 


tool: D70: #pragma warning( disable:4996 )


tool: D51: #ifndef __cplusplus


tool: D465: #define inline __inline


tool: D25: #endif


tool: D688: #define WIN32_LEAN_AND_MEAN


tool: D99: #include <windows.h>


tool: D44: #include <stdlib.h>


tool: D112: #include <stdio.h>


tool: D92: #include <errno.h>


tool: D549: //  WINDOW pthreads "LIBRARY"


tool: D200:   //  Mutex macros


tool: D727: typedef SRWLOCK pthread_mutex_t;


tool: D293: #define PTHREAD_MUTEX_INITIALIZER RTL_SRWLOCK_INIT


tool: D311: #define pthread_mutex_lock(m)  AcquireSRWLockExclusive(m)


tool: D248: #define pthread_mutex_unlock(m) ReleaseSRWLockExclusive(m)


tool: D616:   //  Condition variable macros


tool: D430: typedef CONDITION_VARIABLE pthread_cond_t;


tool: D470: #define PTHREAD_COND_INITIALIZER RTL_CONDITION_VARIABLE_INIT


tool: D62: #define pthread_cond_signal(c) WakeConditionVariable(c)


tool: D54: #define pthread_cond_broadcast(c) WakeAllConditionVariable(c)


tool: D162: #define pthread_cond_wait(c,m) SleepConditionVariableSRW(c,m,INFINITE,0)


tool: D332:   //  Simple thread support


tool: D22: typedef struct


tool: D710:   { HANDLE *handle;


tool: D500:     void   *(*fct)(void *);


tool: D388:     void   *arg;


tool: D563:     void   *retval;


tool: D656:     int     id;


tool: D633:   } Mythread;


tool: D342: typedef Mythread *pthread_t;


tool: D520: static DWORD WINAPI MyStart(void *arg)


tool: D259: { Mythread *tv = (Mythread *) arg;


tool: D362:   tv->retval = tv->fct(tv->arg);


tool: D170:   return (0);


tool: D151: }


tool: D507: static int pthread_create(pthread_t *thread, void *attr,


tool: D303:                           void *(*fct)(void *), void *arg)


tool: D401: { Mythread *tv;


tool: D330:   if (attr != NULL)


tool: D306:     { fprintf(stderr,"Do not support thread attributes\n");


tool: D144:       exit (1);


tool: D645:     }


tool: D199:   tv = (Mythread *) malloc(sizeof(Mythread));


tool: D243:   if (tv == NULL)


tool: D261:     { fprintf(stderr,"pthread_create: Out of memory.\n");


tool: D271:     };


tool: D197:   tv->fct    = fct;


tool: D45:   tv->arg    = arg;


tool: D537:   tv->handle = CreateThread(NULL,0,MyStart,tv,0,&tv->id);


tool: D26:   if (tv->handle == NULL)


tool: D643:     return (EAGAIN);


tool: D221:   else


tool: D380:     return (0);


tool: D339: static int pthread_join(pthread_t t, void **ret)


tool: D677: { Mythread *tv = (Mythread *) t;


tool: D288:   WaitForSingleObject(tv->handle,INFINITE);


tool: D49:   if (ret != NULL)


tool: D703:     *ret = tv->retval;


tool: D631:   CloseHandle(tv->handle);


tool: D287:   free(tv);


tool: D628: typedef int pthread_id;


tool: D241: static pthread_id pthread_tag()


tool: D684: { return (GetCurrentThreadId()); }


tool: D720: static int pthread_is_this(pthread_id id)


tool: D96: { return (GetCurrentThreadId() == id); }


tool: D59: #else   //  Small extension to pthreads!


tool: D246: #include <pthread.h>


tool: D701: typedef pthread_t pthread_id;


tool: D230: #define pthread_tag() pthread_self()


tool: D152: static inline int pthread_is_this(pthread_id id)


tool: D699: { return (pthread_equal(pthread_self(),id)); }


assistant: ```c
void prolog() {
  printf("#ifdef _MSC_VER\n");
  printf("\n");
  printf("#pragma warning( disable:4996 )\n");
  printf("\n");
  printf("#ifndef __cplusplus\n");
  printf("#define inline __inline\n");
  printf("#endif\n");
  printf("\n");
  printf("#define WIN32_LEAN_AND_MEAN\n");
  printf("\n");
  printf("#include <windows.h>\n");
  printf("#include <stdlib.h>\n");
  printf("#include <stdio.h>\n");
  printf("#include <errno.h>\n");
  printf("\n");
  printf("//  WINDOW pthreads \"LIBRARY\"\n");
  printf("\n");
  printf("  //  Mutex macros\n");
  printf("\n");
  printf("typedef SRWLOCK pthread_mutex_t;\n");
  printf("\n");
  printf("#define PTHREAD_MUTEX_INITIALIZER RTL_SRWLOCK_INIT\n");
  printf("\n");
  printf("#define pthread_mutex_lock(m)  AcquireSRWLockExclusive(m)\n");
  printf("\n");
  printf("#define pthread_mutex_unlock(m) ReleaseSRWLockExclusive(m)\n");
  printf("\n");
  printf("  //  Condition variable macros\n");
  printf("\n");
  printf("typedef CONDITION_VARIABLE pthread_cond_t;\n");
  printf("\n");
  printf("#define PTHREAD_COND_INITIALIZER RTL_CONDITION_VARIABLE_INIT\n");
  printf("\n");
  printf("#define pthread_cond_signal(c) WakeConditionVariable(c)\n");
  printf("\n");
  printf("#define pthread_cond_broadcast(c) WakeAllConditionVariable(c)\n");
  printf("\n");
  printf("#define pthread_cond_wait(c,m) SleepConditionVariableSRW(c,m,INFINITE,0)\n");
  printf("\n");
  printf("  //  Simple thread support\n");
  printf("\n");
  printf("typedef struct\n");
  printf("  { HANDLE *handle;\n");
  printf("    void   *(*fct)(void *);\n");
  printf("    void   *arg;\n");
  printf("    void   *retval;\n");
  printf("    int     id;\n");
  printf("  } Mythread;\n");
  printf("\n");
  printf("typedef Mythread *pthread_t;\n");
  printf("\n");
  printf("static DWORD WINAPI MyStart(void *arg)\n");
  printf("{ Mythread *tv = (Mythread *) arg;\n");
  printf("\n");
  printf("  tv->retval = tv->fct(tv->arg);\n");
  printf("  return (0);\n");
  printf("}\n");
  printf("\n");
  printf("static int pthread_create(pthread_t *thread, void *attr,\n");
  printf("                          void *(*fct)(void *), void *arg)\n");
  printf("{ Mythread *tv;\n");
  printf("  if (attr != NULL)\n");
  printf("    { fprintf(stderr,\"Do not support thread attributes\\n\");\n");
  printf("      exit (1);\n");
  printf("    }\n");
  printf("  tv = (Mythread *) malloc(sizeof(Mythread));\n");
  printf("  if (tv == NULL)\n");
  printf("    { fprintf(stderr,\"pthread_create: Out of memory.\\n\");\n");
  printf("      exit (1);\n");
  printf("    };\n");
  printf("  tv->fct    = fct;\n");
  printf("  tv->arg    = arg;\n");
  printf("  tv->handle = CreateThread(NULL,0,MyStart,tv,0,&tv->id);\n");
  printf("  if (tv->handle == NULL)\n");
  printf("    return (EAGAIN);\n");
  printf("  else\n");
  printf("    return (0);\n");
  printf("}\n");
  printf("\n");
  printf("static int pthread_join(pthread_t t, void **ret)\n");
  printf("{ Mythread *tv = (Mythread *) t;\n");
  printf("\n");
  printf("  WaitForSingleObject(tv->handle,INFINITE);\n");
  printf("  if (ret != NULL)\n");
  printf("    *ret = tv->retval;\n");
  printf("\n");
  printf("  CloseHandle(tv->handle);\n");
  printf("  free(tv);\n");
  printf("  return (0);\n");
  printf("}\n");
  printf("\n");
  printf("typedef int pthread_id;\n");
  printf("\n");
  printf("static pthread_id pthread_tag()\n");
  printf("{ return (GetCurrentThreadId()); }\n");
  printf("\n");
  printf("static int pthread_is_this(pthread_id id)\n");
  printf("{ return (GetCurrentThreadId() == id); }\n");
  printf("\n");
  printf("#else   //  Small extension to pthreads!\n");
  printf("\n");
  printf("#include <pthread.h>\n");
  printf("\n");
  printf("typedef pthread_t pthread_id;\n");
  printf("\n");
  printf("#define pthread_tag() pthread_self()\n");
  printf("\n");
  printf("static inline int pthread_is_this(pthread_id id)\n");
  printf("{ return (pthread_equal(pthread_self(),id)); }\n");
  printf("\n");
  printf("#endif\n");
  printf("\n");
}
```