// File: /workspace/github_c_makefile_star2_O2/PoulinV[P]AxiCLASS/build/../tools/parser.c
// Function: parser_cat
int parser_cat(struct file_content * pfc1,
               struct file_content * pfc2,
               struct file_content * pfc3,
               ErrorMsg errmsg) {

  int i;

  class_test(pfc1->size < 0.,
             errmsg,
             "size of file_content structure probably not initialized properly\n");

  class_test(pfc2->size < 0.,
             errmsg,
             "size of file_content structure probably not initialized properly\n");

  if (pfc1->size == 0) {
    class_alloc(pfc3->filename,(strlen(pfc2->filename)+1)*sizeof(char),errmsg);
    class_sprintf(pfc3->filename,"%s",pfc2->filename);
  }
  if (pfc2->size == 0) {
    class_alloc(pfc3->filename,(strlen(pfc1->filename)+1)*sizeof(char),errmsg);
    class_sprintf(pfc3->filename,"%s",pfc1->filename);
  }
  if ((pfc1->size !=0) && (pfc2->size != 0)) {
    class_alloc(pfc3->filename,(strlen(pfc1->filename)+strlen(pfc2->filename)+5)*sizeof(char),errmsg);
    class_sprintf(pfc3->filename,"%s or %s",pfc1->filename,pfc2->filename);
  }

  pfc3->size = pfc1->size + pfc2->size;
  class_alloc(pfc3->value,pfc3->size*sizeof(FileArg),errmsg);
  class_alloc(pfc3->name,pfc3->size*sizeof(FileArg),errmsg);
  class_alloc(pfc3->read,pfc3->size*sizeof(short),errmsg);

  for (i=0; i < pfc1->size; i++) {
    strcpy(pfc3->value[i],pfc1->value[i]);
    strcpy(pfc3->name[i],pfc1->name[i]);
    pfc3->read[i]=pfc1->read[i];
  }

  for (i=0; i < pfc2->size; i++) {
    strcpy(pfc3->value[i+pfc1->size],pfc2->value[i]);
    strcpy(pfc3->name[i+pfc1->size],pfc2->name[i]);
    pfc3->read[i+pfc1->size]=pfc2->read[i];
  }

  return _SUCCESS_;

}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1018, %rsp           # imm = 0x1018
movq %rcx, %r13
movl 0x8(%rdi), %eax
testl %eax, %eax
js 0x1d5f0
movq %rsi, %r14
movl 0x8(%rsi), %ebp
testl %ebp, %ebp
js 0x1d641
movq %rdx, %r15
movq %rdi, %r12
testl %eax, %eax
jne 0x1d511
movq (%r14), %rdi
callq 0x8190
leaq 0x1(%rax), %rdi
callq 0x8490
movq %rax, (%r15)
movq (%r14), %rcx
testq %rax, %rax
je 0x1d847
leaq 0xe4dda(%rip), %rbx     # 0x1022c4
xorl %edi, %edi
xorl %esi, %esi
movq %rbx, %rdx
xorl %eax, %eax
callq 0x8580
movq (%r15), %rdi
incl %eax
movslq %eax, %rsi
movq (%r14), %rcx
movq %rbx, %rdx
xorl %eax, %eax
callq 0x8580
movl 0x8(%r14), %ebp
testl %ebp, %ebp
jne 0x1d566
movq (%r12), %rdi
callq 0x8190
leaq 0x1(%rax), %rdi
callq 0x8490
movq %rax, (%r15)
movq (%r12), %rcx
testq %rax, %rax
je 0x1d88a
leaq 0xe4d86(%rip), %rbx     # 0x1022c4
xorl %edi, %edi
xorl %esi, %esi
movq %rbx, %rdx
xorl %eax, %eax
callq 0x8580
movq (%r15), %rdi
incl %eax
movslq %eax, %rsi
movq (%r12), %rcx
movq %rbx, %rdx
xorl %eax, %eax
callq 0x8580
movl 0x8(%r14), %ebp
movl 0x8(%r12), %eax
testl %eax, %eax
je 0x1d698
testl %ebp, %ebp
je 0x1d6a1
movq (%r12), %rdi
callq 0x8190
movq %rax, %rbx
movq (%r14), %rdi
callq 0x8190
leaq (%rbx,%rax), %rdi
addq $0x5, %rdi
callq 0x8490
movq %rax, (%r15)
movq (%r12), %rcx
testq %rax, %rax
je 0x1d8cd
movq %r13, 0x8(%rsp)
movq (%r14), %r8
leaq 0xca8d3(%rip), %rbx     # 0xe7e8e
xorl %edi, %edi
xorl %esi, %esi
movq %rbx, %rdx
xorl %eax, %eax
callq 0x8580
movq (%r15), %rdi
incl %eax
movslq %eax, %rsi
movq (%r12), %rcx
movq (%r14), %r8
movq %rbx, %rdx
xorl %eax, %eax
callq 0x8580
movl 0x8(%r12), %eax
movl 0x8(%r14), %ebp
jmp 0x1d6a8
leaq 0xca81b(%rip), %rsi     # 0xe7e12
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0xc7a75(%rip), %rsi     # 0xe5082
leaq 0xca840(%rip), %rdx     # 0xe7e54
leaq 0x810(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0xc7a04(%rip), %rsi     # 0xe5034
leaq 0xca82d(%rip), %rdx     # 0xe7e64
movq %r13, %rdi
movl $0x276, %ecx            # imm = 0x276
jmp 0x1d690
leaq 0xca7ca(%rip), %rsi     # 0xe7e12
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0xc7a24(%rip), %rsi     # 0xe5082
leaq 0xca80a(%rip), %rdx     # 0xe7e6f
leaq 0x810(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2e014
leaq 0xc79b3(%rip), %rsi     # 0xe5034
leaq 0xca7dc(%rip), %rdx     # 0xe7e64
movq %r13, %rdi
movl $0x27a, %ecx            # imm = 0x27A
movq %r14, %r8
jmp 0x1d955
movq %r13, 0x8(%rsp)
xorl %eax, %eax
jmp 0x1d6a8
movq %r13, 0x8(%rsp)
xorl %ebp, %ebp
addl %eax, %ebp
movl %ebp, 0x8(%r15)
movslq %ebp, %rbx
movq %rbx, %r13
shlq $0xa, %r13
movq %r13, %rdi
callq 0x8490
movq %rax, 0x18(%r15)
testq %rax, %rax
je 0x1d759
movq %r13, %rdi
callq 0x8490
movq %rax, 0x10(%r15)
testq %rax, %rax
je 0x1d808
addq %rbx, %rbx
movq %rbx, %rdi
callq 0x8490
movq %rax, 0x20(%r15)
testq %rax, %rax
movq 0x8(%rsp), %r13
je 0x1d91b
xorl %ebx, %ebx
xorl %r13d, %r13d
movslq 0x8(%r12), %rax
cmpq %rax, %r13
jge 0x1d798
movq 0x18(%r15), %rdi
addq %rbx, %rdi
movq 0x18(%r12), %rsi
addq %rbx, %rsi
callq 0x8370
movq 0x10(%r15), %rdi
addq %rbx, %rdi
movq 0x10(%r12), %rsi
addq %rbx, %rsi
callq 0x8370
movq 0x20(%r12), %rax
movzwl (%rax,%r13,2), %eax
movq 0x20(%r15), %rcx
movw %ax, (%rcx,%r13,2)
incq %r13
addq $0x400, %rbx            # imm = 0x400
jmp 0x1d704
shll $0xa, %ebp
leaq 0xc78a1(%rip), %rsi     # 0xe5004
leaq 0xca72d(%rip), %rdx     # 0xe7e97
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
movl %ebp, %ecx
xorl %eax, %eax
callq 0x2e014
leaq 0xc78b2(%rip), %rsi     # 0xe5034
leaq 0xca6db(%rip), %rdx     # 0xe7e64
movq 0x8(%rsp), %rdi
movl $0x28a, %ecx            # imm = 0x28A
jmp 0x1d952
xorl %ebx, %ebx
xorl %r13d, %r13d
xorl %ebp, %ebp
movslq 0x8(%r14), %rcx
cmpq %rcx, %rbp
jge 0x1d95f
addl %ebp, %eax
movslq %eax, %rdi
shlq $0xa, %rdi
addq 0x18(%r15), %rdi
movq 0x18(%r14), %rsi
addq %r13, %rsi
callq 0x8370
movslq 0x8(%r12), %rdi
addq %rbp, %rdi
shlq $0xa, %rdi
addq 0x10(%r15), %rdi
movq 0x10(%r14), %rsi
addq %r13, %rsi
callq 0x8370
movq 0x20(%r14), %rax
movzwl (%rax,%rbp,2), %ecx
movq 0x20(%r15), %rdx
movslq 0x8(%r12), %rax
movq %rax, %rsi
addq %rbp, %rsi
movw %cx, (%rdx,%rsi,2)
incq %rbp
addq $0x400, %r13            # imm = 0x400
jmp 0x1d79f
shll $0xa, %ebp
leaq 0xc77f2(%rip), %rsi     # 0xe5004
leaq 0xca68a(%rip), %rdx     # 0xe7ea3
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
movl %ebp, %ecx
xorl %eax, %eax
callq 0x2e014
leaq 0xc7803(%rip), %rsi     # 0xe5034
leaq 0xca62c(%rip), %rdx     # 0xe7e64
movq 0x8(%rsp), %rdi
movl $0x28b, %ecx            # imm = 0x28B
jmp 0x1d952
movq %rcx, %rdi
callq 0x8190
leal 0x1(%rax), %ecx
leaq 0xc77ab(%rip), %rsi     # 0xe5004
leaq 0xca61f(%rip), %rdx     # 0xe7e7f
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0xc77be(%rip), %rsi     # 0xe5034
leaq 0xca5e7(%rip), %rdx     # 0xe7e64
movq %r13, %rdi
movl $0x27d, %ecx            # imm = 0x27D
jmp 0x1d952
movq %rcx, %rdi
callq 0x8190
leal 0x1(%rax), %ecx
leaq 0xc7768(%rip), %rsi     # 0xe5004
leaq 0xca5dc(%rip), %rdx     # 0xe7e7f
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0xc777b(%rip), %rsi     # 0xe5034
leaq 0xca5a4(%rip), %rdx     # 0xe7e64
movq %r13, %rdi
movl $0x281, %ecx            # imm = 0x281
jmp 0x1d952
movq %rcx, %rdi
callq 0x8190
movq %rax, %rbx
movq (%r14), %rdi
callq 0x8190
leal (%rax,%rbx), %ecx
addl $0x5, %ecx
leaq 0xc7717(%rip), %rsi     # 0xe5004
leaq 0xca58b(%rip), %rdx     # 0xe7e7f
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x2e014
leaq 0xc772a(%rip), %rsi     # 0xe5034
leaq 0xca553(%rip), %rdx     # 0xe7e64
movq %r13, %rdi
movl $0x285, %ecx            # imm = 0x285
jmp 0x1d952
addl %ebp, %ebp
leaq 0xc76e0(%rip), %rsi     # 0xe5004
leaq 0xca583(%rip), %rdx     # 0xe7eae
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
movl %ebp, %ecx
xorl %eax, %eax
callq 0x2e014
leaq 0xc76f1(%rip), %rsi     # 0xe5034
leaq 0xca51a(%rip), %rdx     # 0xe7e64
movq %r13, %rdi
movl $0x28c, %ecx            # imm = 0x28C
movq %rbx, %r8
xorl %eax, %eax
callq 0x2e014
pushq $0x1
popq %rbx
movl %ebx, %eax
addq $0x1018, %rsp           # imm = 0x1018
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq