// File: /workspace/github_c_makefile_star2_O3/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 0x1f754
movq %rsi, %r14
movl 0x8(%rsi), %ebp
testl %ebp, %ebp
js 0x1f7a5
movq %rdx, %r15
movq %rdi, %r12
testl %eax, %eax
jne 0x1f675
movq (%r14), %rdi
callq 0x8180
leaq 0x1(%rax), %rdi
callq 0x8460
movq %rax, (%r15)
movq (%r14), %rcx
testq %rax, %rax
je 0x1f9b9
leaq 0xebdb6(%rip), %rbx     # 0x10b404
xorl %edi, %edi
xorl %esi, %esi
movq %rbx, %rdx
xorl %eax, %eax
callq 0x8550
movq (%r15), %rdi
incl %eax
movslq %eax, %rsi
movq (%r14), %rcx
movq %rbx, %rdx
xorl %eax, %eax
callq 0x8550
movl 0x8(%r14), %ebp
testl %ebp, %ebp
jne 0x1f6ca
movq (%r12), %rdi
callq 0x8180
leaq 0x1(%rax), %rdi
callq 0x8460
movq %rax, (%r15)
movq (%r12), %rcx
testq %rax, %rax
je 0x1f9fc
leaq 0xebd62(%rip), %rbx     # 0x10b404
xorl %edi, %edi
xorl %esi, %esi
movq %rbx, %rdx
xorl %eax, %eax
callq 0x8550
movq (%r15), %rdi
incl %eax
movslq %eax, %rsi
movq (%r12), %rcx
movq %rbx, %rdx
xorl %eax, %eax
callq 0x8550
movl 0x8(%r14), %ebp
movl 0x8(%r12), %eax
testl %eax, %eax
je 0x1f7fc
testl %ebp, %ebp
je 0x1f805
movq (%r12), %rdi
callq 0x8180
movq %rax, %rbx
movq (%r14), %rdi
callq 0x8180
leaq (%rbx,%rax), %rdi
addq $0x5, %rdi
callq 0x8460
movq %rax, (%r15)
movq (%r12), %rcx
testq %rax, %rax
je 0x1fa3f
movq %r13, 0x8(%rsp)
movq (%r14), %r8
leaq 0xd17af(%rip), %rbx     # 0xf0ece
xorl %edi, %edi
xorl %esi, %esi
movq %rbx, %rdx
xorl %eax, %eax
callq 0x8550
movq (%r15), %rdi
incl %eax
movslq %eax, %rsi
movq (%r12), %rcx
movq (%r14), %r8
movq %rbx, %rdx
xorl %eax, %eax
callq 0x8550
movl 0x8(%r12), %eax
movl 0x8(%r14), %ebp
jmp 0x1f80c
leaq 0xd16f7(%rip), %rsi     # 0xf0e52
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x30af0
leaq 0xce911(%rip), %rsi     # 0xee082
leaq 0xd171c(%rip), %rdx     # 0xf0e94
leaq 0x810(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30af0
leaq 0xce8a0(%rip), %rsi     # 0xee034
leaq 0xd1709(%rip), %rdx     # 0xf0ea4
movq %r13, %rdi
movl $0x276, %ecx            # imm = 0x276
jmp 0x1f7f4
leaq 0xd16a6(%rip), %rsi     # 0xf0e52
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x30af0
leaq 0xce8c0(%rip), %rsi     # 0xee082
leaq 0xd16e6(%rip), %rdx     # 0xf0eaf
leaq 0x810(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rcx
xorl %eax, %eax
callq 0x30af0
leaq 0xce84f(%rip), %rsi     # 0xee034
leaq 0xd16b8(%rip), %rdx     # 0xf0ea4
movq %r13, %rdi
movl $0x27a, %ecx            # imm = 0x27A
movq %r14, %r8
jmp 0x1fac7
movq %r13, 0x8(%rsp)
xorl %eax, %eax
jmp 0x1f80c
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 0x8460
movq %rax, 0x18(%r15)
testq %rax, %rax
je 0x1f93b
movq %r13, %rdi
callq 0x8460
movq %rax, 0x10(%r15)
testq %rax, %rax
je 0x1f97a
addq %rbx, %rbx
movq %rbx, %rdi
callq 0x8460
movq %rax, 0x20(%r15)
testq %rax, %rax
movq 0x8(%rsp), %r13
je 0x1fa8d
movl 0x8(%r12), %eax
testl %eax, %eax
jle 0x1f8c0
xorl %ebx, %ebx
xorl %r13d, %r13d
movq 0x18(%r15), %rdi
addq %rbx, %rdi
movq 0x18(%r12), %rsi
addq %rbx, %rsi
callq 0x8350
movq 0x10(%r15), %rdi
addq %rbx, %rdi
movq 0x10(%r12), %rsi
addq %rbx, %rsi
callq 0x8350
movq 0x20(%r12), %rax
movzwl (%rax,%r13,2), %eax
movq 0x20(%r15), %rcx
movw %ax, (%rcx,%r13,2)
incq %r13
movslq 0x8(%r12), %rax
addq $0x400, %rbx            # imm = 0x400
cmpq %rax, %r13
jl 0x1f871
cmpl $0x0, 0x8(%r14)
jle 0x1fae7
xorl %ebx, %ebx
xorl %r13d, %r13d
xorl %ebp, %ebp
movslq %eax, %rdi
addq %rbp, %rdi
shlq $0xa, %rdi
addq 0x18(%r15), %rdi
movq 0x18(%r14), %rsi
addq %r13, %rsi
callq 0x8350
movslq 0x8(%r12), %rdi
addq %rbp, %rdi
shlq $0xa, %rdi
addq 0x10(%r15), %rdi
movq 0x10(%r14), %rsi
addq %r13, %rsi
callq 0x8350
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
movslq 0x8(%r14), %rcx
addq $0x400, %r13            # imm = 0x400
cmpq %rcx, %rbp
jl 0x1f8d2
jmp 0x1fad3
shll $0xa, %ebp
leaq 0xce6bf(%rip), %rsi     # 0xee004
leaq 0xd158b(%rip), %rdx     # 0xf0ed7
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
movl %ebp, %ecx
xorl %eax, %eax
callq 0x30af0
leaq 0xce6d0(%rip), %rsi     # 0xee034
leaq 0xd1539(%rip), %rdx     # 0xf0ea4
movq 0x8(%rsp), %rdi
movl $0x28a, %ecx            # imm = 0x28A
jmp 0x1fac4
shll $0xa, %ebp
leaq 0xce680(%rip), %rsi     # 0xee004
leaq 0xd1558(%rip), %rdx     # 0xf0ee3
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
movl %ebp, %ecx
xorl %eax, %eax
callq 0x30af0
leaq 0xce691(%rip), %rsi     # 0xee034
leaq 0xd14fa(%rip), %rdx     # 0xf0ea4
movq 0x8(%rsp), %rdi
movl $0x28b, %ecx            # imm = 0x28B
jmp 0x1fac4
movq %rcx, %rdi
callq 0x8180
leal 0x1(%rax), %ecx
leaq 0xce639(%rip), %rsi     # 0xee004
leaq 0xd14ed(%rip), %rdx     # 0xf0ebf
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x30af0
leaq 0xce64c(%rip), %rsi     # 0xee034
leaq 0xd14b5(%rip), %rdx     # 0xf0ea4
movq %r13, %rdi
movl $0x27d, %ecx            # imm = 0x27D
jmp 0x1fac4
movq %rcx, %rdi
callq 0x8180
leal 0x1(%rax), %ecx
leaq 0xce5f6(%rip), %rsi     # 0xee004
leaq 0xd14aa(%rip), %rdx     # 0xf0ebf
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x30af0
leaq 0xce609(%rip), %rsi     # 0xee034
leaq 0xd1472(%rip), %rdx     # 0xf0ea4
movq %r13, %rdi
movl $0x281, %ecx            # imm = 0x281
jmp 0x1fac4
movq %rcx, %rdi
callq 0x8180
movq %rax, %rbx
movq (%r14), %rdi
callq 0x8180
leal (%rax,%rbx), %ecx
addl $0x5, %ecx
leaq 0xce5a5(%rip), %rsi     # 0xee004
leaq 0xd1459(%rip), %rdx     # 0xf0ebf
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x30af0
leaq 0xce5b8(%rip), %rsi     # 0xee034
leaq 0xd1421(%rip), %rdx     # 0xf0ea4
movq %r13, %rdi
movl $0x285, %ecx            # imm = 0x285
jmp 0x1fac4
addl %ebp, %ebp
leaq 0xce56e(%rip), %rsi     # 0xee004
leaq 0xd1451(%rip), %rdx     # 0xf0eee
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
movl %ebp, %ecx
xorl %eax, %eax
callq 0x30af0
leaq 0xce57f(%rip), %rsi     # 0xee034
leaq 0xd13e8(%rip), %rdx     # 0xf0ea4
movq %r13, %rdi
movl $0x28c, %ecx            # imm = 0x28C
movq %rbx, %r8
xorl %eax, %eax
callq 0x30af0
movl $0x1, %ebx
movl %ebx, %eax
addq $0x1018, %rsp           # imm = 0x1018
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %ebx, %ebx
jmp 0x1fad3