user: Translate the below assembly code into C programming language:

```asm
<prolog>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  lea    D320(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D525(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D900(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D702(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D428(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D259(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D100(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D720(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1010(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D757(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D937(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D210(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D40(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D611(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D916(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D591(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D834(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D755(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D910(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D889(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D113(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D247(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D824(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1047(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D907(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D157(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D712(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D200(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D470(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1093(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1036(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D118(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D38(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D237(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D187(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D792(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D318(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D244(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D740(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D2(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D132(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D46(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D728(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D756(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D406(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1085(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D46(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D178(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D858(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D342(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D70(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D270(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D251(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D742(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D345(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D792(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D207(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D415(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D765(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D681(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D692(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1025(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D864(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D187(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D792(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D230(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D885(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1006(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D691(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D403(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D275(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D87(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D290(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D804(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D536(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1020(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D428(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D640(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  nop
  pop    %rbp
  ret
```

tool_calls: name: read_data
arguments: data_label: D320
type: string
name: read_data
arguments: data_label: D640
type: string
name: read_data
arguments: data_label: D525
type: string
name: read_data
arguments: data_label: D900
type: string
name: read_data
arguments: data_label: D702
type: string
name: read_data
arguments: data_label: D428
type: string
name: read_data
arguments: data_label: D259
type: string
name: read_data
arguments: data_label: D100
type: string
name: read_data
arguments: data_label: D720
type: string
name: read_data
arguments: data_label: D1010
type: string
name: read_data
arguments: data_label: D757
type: string
name: read_data
arguments: data_label: D937
type: string
name: read_data
arguments: data_label: D210
type: string
name: read_data
arguments: data_label: D40
type: string
name: read_data
arguments: data_label: D611
type: string
name: read_data
arguments: data_label: D916
type: string
name: read_data
arguments: data_label: D591
type: string
name: read_data
arguments: data_label: D834
type: string
name: read_data
arguments: data_label: D755
type: string
name: read_data
arguments: data_label: D910
type: string
name: read_data
arguments: data_label: D889
type: string
name: read_data
arguments: data_label: D113
type: string
name: read_data
arguments: data_label: D247
type: string
name: read_data
arguments: data_label: D824
type: string
name: read_data
arguments: data_label: D1047
type: string
name: read_data
arguments: data_label: D907
type: string
name: read_data
arguments: data_label: D157
type: string
name: read_data
arguments: data_label: D712
type: string
name: read_data
arguments: data_label: D200
type: string
name: read_data
arguments: data_label: D470
type: string
name: read_data
arguments: data_label: D1093
type: string
name: read_data
arguments: data_label: D1036
type: string
name: read_data
arguments: data_label: D118
type: string
name: read_data
arguments: data_label: D38
type: string
name: read_data
arguments: data_label: D237
type: string
name: read_data
arguments: data_label: D187
type: string
name: read_data
arguments: data_label: D792
type: string
name: read_data
arguments: data_label: D318
type: string
name: read_data
arguments: data_label: D244
type: string
name: read_data
arguments: data_label: D740
type: string
name: read_data
arguments: data_label: D2
type: string
name: read_data
arguments: data_label: D132
type: string
name: read_data
arguments: data_label: D46
type: string
name: read_data
arguments: data_label: D728
type: string
name: read_data
arguments: data_label: D756
type: string
name: read_data
arguments: data_label: D406
type: string
name: read_data
arguments: data_label: D1085
type: string
name: read_data
arguments: data_label: D178
type: string
name: read_data
arguments: data_label: D858
type: string
name: read_data
arguments: data_label: D342
type: string
name: read_data
arguments: data_label: D70
type: string
name: read_data
arguments: data_label: D270
type: string
name: read_data
arguments: data_label: D251
type: string
name: read_data
arguments: data_label: D742
type: string
name: read_data
arguments: data_label: D345
type: string
name: read_data
arguments: data_label: D207
type: string
name: read_data
arguments: data_label: D415
type: string
name: read_data
arguments: data_label: D765
type: string
name: read_data
arguments: data_label: D681
type: string
name: read_data
arguments: data_label: D692
type: string
name: read_data
arguments: data_label: D1025
type: string
name: read_data
arguments: data_label: D864
type: string
name: read_data
arguments: data_label: D230
type: string
name: read_data
arguments: data_label: D885
type: string
name: read_data
arguments: data_label: D1006
type: string
name: read_data
arguments: data_label: D691
type: string
name: read_data
arguments: data_label: D403
type: string
name: read_data
arguments: data_label: D275
type: string
name: read_data
arguments: data_label: D87
type: string
name: read_data
arguments: data_label: D290
type: string
name: read_data
arguments: data_label: D804
type: string
name: read_data
arguments: data_label: D536
type: string
name: read_data
arguments: data_label: D1020
type: string

tool: D320: #ifdef _MSC_VER


tool: D640: 


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


tool: D900: #ifndef __cplusplus


tool: D702: #define inline __inline


tool: D428: #endif


tool: D259: #define WIN32_LEAN_AND_MEAN


tool: D100: #include <windows.h>


tool: D720: #include <stdlib.h>


tool: D1010: #include <stdio.h>


tool: D757: #include <errno.h>


tool: D937: //  WINDOW pthreads "LIBRARY"


tool: D210:   //  Mutex macros


tool: D40: typedef SRWLOCK pthread_mutex_t;


tool: D611: #define PTHREAD_MUTEX_INITIALIZER RTL_SRWLOCK_INIT


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


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


tool: D834:   //  Condition variable macros


tool: D755: typedef CONDITION_VARIABLE pthread_cond_t;


tool: D910: #define PTHREAD_COND_INITIALIZER RTL_CONDITION_VARIABLE_INIT


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


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


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


tool: D824:   //  Simple thread support


tool: D1047: typedef struct


tool: D907:   { HANDLE *handle;


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


tool: D712:     void   *arg;


tool: D200:     void   *retval;


tool: D470:     int     id;


tool: D1093:   } Mythread;


tool: D1036: typedef Mythread *pthread_t;


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


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


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


tool: D187:   return (0);


tool: D792: }


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


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


tool: D740: { Mythread *tv;


tool: D2:   if (attr != NULL)


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


tool: D46:       exit (1);


tool: D728:     }


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


tool: D406:   if (tv == NULL)


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


tool: D178:     };


tool: D858:   tv->fct    = fct;


tool: D342:   tv->arg    = arg;


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


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


tool: D251:     return (EAGAIN);


tool: D742:   else


tool: D345:     return (0);


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


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


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


tool: D681:   if (ret != NULL)


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


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


tool: D864:   free(tv);


tool: D230: typedef int pthread_id;


tool: D885: static pthread_id pthread_tag()


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


tool: D691: static int pthread_is_this(pthread_id id)


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


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


tool: D87: #include <pthread.h>


tool: D290: typedef pthread_t pthread_id;


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


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


tool: D1020: { 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");
}
```