// File: /workspace/github_c_makefile_star2_O1/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 $0x1008, %rsp           # imm = 0x1008
movq %rcx, %rbx
movl 0x8(%rdi), %eax
testl %eax, %eax
js 0x1f7ee
movq %rsi, %r14
cmpl $0x0, 0x8(%rsi)
js 0x1f83d
movq %rdx, %r15
movq %rdi, %r12
testl %eax, %eax
jne 0x1f5fa
movq (%r14), %rdi
callq 0x8180
leaq 0x1(%rax), %rdi
callq 0x8460
movq %rax, (%r15)
movq (%r14), %rcx
testq %rax, %rax
je 0x1f90c
leaq 0xeee0d(%rip), %r13     # 0x10e3e4
xorl %edi, %edi
xorl %esi, %esi
movq %r13, %rdx
xorl %eax, %eax
callq 0x8550
movq (%r15), %rdi
incl %eax
movslq %eax, %rsi
movq (%r14), %rcx
movq %r13, %rdx
xorl %eax, %eax
callq 0x8550
cmpl $0x0, 0x8(%r14)
jne 0x1f64e
movq (%r12), %rdi
callq 0x8180
leaq 0x1(%rax), %rdi
callq 0x8460
movq %rax, (%r15)
movq (%r12), %rcx
testq %rax, %rax
je 0x1f94d
leaq 0xeedba(%rip), %r13     # 0x10e3e4
xorl %edi, %edi
xorl %esi, %esi
movq %r13, %rdx
xorl %eax, %eax
callq 0x8550
movq (%r15), %rdi
incl %eax
movslq %eax, %rsi
movq (%r12), %rcx
movq %r13, %rdx
xorl %eax, %eax
callq 0x8550
cmpl $0x0, 0x8(%r12)
je 0x1f6bf
cmpl $0x0, 0x8(%r14)
je 0x1f6bf
movq (%r12), %rdi
callq 0x8180
movq %rax, %r13
movq (%r14), %rdi
callq 0x8180
leaq (%rax,%r13), %rdi
addq $0x5, %rdi
callq 0x8460
movq %rax, (%r15)
movq (%r12), %rcx
testq %rax, %rax
je 0x1f98e
movq (%r14), %r8
leaq 0xd4826(%rip), %r13     # 0xf3ebe
xorl %edi, %edi
xorl %esi, %esi
movq %r13, %rdx
xorl %eax, %eax
callq 0x8550
movq (%r15), %rdi
incl %eax
movslq %eax, %rsi
movq (%r12), %rcx
movq (%r14), %r8
movq %r13, %rdx
xorl %eax, %eax
callq 0x8550
movslq 0x8(%r12), %rax
movslq 0x8(%r14), %r13
addq %rax, %r13
movl %r13d, 0x8(%r15)
movq %r13, %rbp
shlq $0xa, %rbp
movq %rbp, %rdi
callq 0x8460
movq %rax, 0x18(%r15)
testq %rax, %rax
je 0x1f892
movq %rbp, %rdi
callq 0x8460
movq %rax, 0x10(%r15)
testq %rax, %rax
je 0x1f8cf
movq %r13, %rdi
addq %r13, %rdi
callq 0x8460
movq %rax, 0x20(%r15)
testq %rax, %rax
je 0x1f9db
cmpl $0x0, 0x8(%r12)
jle 0x1f774
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 0x1f725
cmpl $0x0, 0x8(%r14)
jle 0x1fa37
xorl %ebx, %ebx
xorl %r13d, %r13d
xorl %ebp, %ebp
movslq 0x8(%r12), %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), %eax
movq 0x20(%r15), %rcx
movslq 0x8(%r12), %rdx
addq %rbp, %rdx
movw %ax, (%rcx,%rdx,2)
incq %rbp
movslq 0x8(%r14), %rax
addq $0x400, %r13            # imm = 0x400
cmpq %rax, %rbp
jl 0x1f786
jmp 0x1fa23
leaq 0xd464d(%rip), %rsi     # 0xf3e42
movq %rsp, %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x30c2c
leaq 0xd1879(%rip), %rsi     # 0xf1082
leaq 0xd4674(%rip), %rdx     # 0xf3e84
leaq 0x800(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0xd1808(%rip), %rsi     # 0xf1034
leaq 0xd4661(%rip), %rdx     # 0xf3e94
movq %rbx, %rdi
movl $0x276, %ecx            # imm = 0x276
jmp 0x1f88a
leaq 0xd45fe(%rip), %rsi     # 0xf3e42
movq %rsp, %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x30c2c
leaq 0xd182a(%rip), %rsi     # 0xf1082
leaq 0xd4640(%rip), %rdx     # 0xf3e9f
leaq 0x800(%rsp), %r15
movq %r15, %rdi
movq %r14, %rcx
xorl %eax, %eax
callq 0x30c2c
leaq 0xd17b9(%rip), %rsi     # 0xf1034
leaq 0xd4612(%rip), %rdx     # 0xf3e94
movq %rbx, %rdi
movl $0x27a, %ecx            # imm = 0x27A
movq %r15, %r8
jmp 0x1fa17
shll $0xa, %r13d
leaq 0xd1767(%rip), %rsi     # 0xf1004
leaq 0xd4623(%rip), %rdx     # 0xf3ec7
movq %rsp, %r14
movq %r14, %rdi
movl %r13d, %ecx
xorl %eax, %eax
callq 0x30c2c
leaq 0xd1779(%rip), %rsi     # 0xf1034
leaq 0xd45d2(%rip), %rdx     # 0xf3e94
movq %rbx, %rdi
movl $0x28a, %ecx            # imm = 0x28A
jmp 0x1fa14
shll $0xa, %r13d
leaq 0xd172a(%rip), %rsi     # 0xf1004
leaq 0xd45f2(%rip), %rdx     # 0xf3ed3
movq %rsp, %r14
movq %r14, %rdi
movl %r13d, %ecx
xorl %eax, %eax
callq 0x30c2c
leaq 0xd173c(%rip), %rsi     # 0xf1034
leaq 0xd4595(%rip), %rdx     # 0xf3e94
movq %rbx, %rdi
movl $0x28b, %ecx            # imm = 0x28B
jmp 0x1fa14
movq %rcx, %rdi
callq 0x8180
leal 0x1(%rax), %ecx
leaq 0xd16e6(%rip), %rsi     # 0xf1004
leaq 0xd458a(%rip), %rdx     # 0xf3eaf
movq %rsp, %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x30c2c
leaq 0xd16fb(%rip), %rsi     # 0xf1034
leaq 0xd4554(%rip), %rdx     # 0xf3e94
movq %rbx, %rdi
movl $0x27d, %ecx            # imm = 0x27D
jmp 0x1fa14
movq %rcx, %rdi
callq 0x8180
leal 0x1(%rax), %ecx
leaq 0xd16a5(%rip), %rsi     # 0xf1004
leaq 0xd4549(%rip), %rdx     # 0xf3eaf
movq %rsp, %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x30c2c
leaq 0xd16ba(%rip), %rsi     # 0xf1034
leaq 0xd4513(%rip), %rdx     # 0xf3e94
movq %rbx, %rdi
movl $0x281, %ecx            # imm = 0x281
jmp 0x1fa14
movq %rcx, %rdi
callq 0x8180
movq %rax, %r15
movq (%r14), %rdi
callq 0x8180
leal (%rax,%r15), %ecx
addl $0x5, %ecx
leaq 0xd1655(%rip), %rsi     # 0xf1004
leaq 0xd44f9(%rip), %rdx     # 0xf3eaf
movq %rsp, %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x30c2c
leaq 0xd166a(%rip), %rsi     # 0xf1034
leaq 0xd44c3(%rip), %rdx     # 0xf3e94
movq %rbx, %rdi
movl $0x285, %ecx            # imm = 0x285
jmp 0x1fa14
leal (,%r13,2), %ecx
leaq 0xd161a(%rip), %rsi     # 0xf1004
leaq 0xd44ed(%rip), %rdx     # 0xf3ede
movq %rsp, %r14
movq %r14, %rdi
xorl %eax, %eax
callq 0x30c2c
leaq 0xd162f(%rip), %rsi     # 0xf1034
leaq 0xd4488(%rip), %rdx     # 0xf3e94
movq %rbx, %rdi
movl $0x28c, %ecx            # imm = 0x28C
movq %r14, %r8
xorl %eax, %eax
callq 0x30c2c
movl $0x1, %ebx
movl %ebx, %eax
addq $0x1008, %rsp           # imm = 0x1008
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %ebx, %ebx
jmp 0x1fa23