// File: /workspace/github_c_makefile_star2_O0/haxlang[P]hax/haxBasic.c
// Function: Hax_VarEval
int
Hax_VarEval(
    Hax_Interp *interp,		/* Interpreter in which to execute command. */
    ...				/* One or more strings to concatenate,
				 * terminated with a NULL string. */)
{
    Interp *iPtr = (Interp *) interp;
    Hax_Memoryp *memoryp = iPtr->memoryp;
    va_list argList;
#define FIXED_SIZE 200
    char fixedSpace[FIXED_SIZE+1];
    int spaceAvl, spaceUsed, length;
    char *string, *cmd;
    int result;

    /*
     * Copy the strings one after the other into a single larger
     * string.  Use stack-allocated space for small commands, but if
     * the commands gets too large than call ckalloc to create the
     * space.
     */

    va_start(argList, interp);
    interp = va_arg(argList, Hax_Interp *);
    spaceAvl = FIXED_SIZE;
    spaceUsed = 0;
    cmd = fixedSpace;
    while (1) {
	string = va_arg(argList, char *);
	if (string == NULL) {
	    break;
	}
	length = strlen(string);
	if ((spaceUsed + length) > spaceAvl) {
	    char *newPtr;

	    spaceAvl = spaceUsed + length;
	    spaceAvl += spaceAvl/2;
	    newPtr = (char *) ckalloc(memoryp, (unsigned) spaceAvl);
	    memcpy(newPtr, cmd, spaceUsed);
	    if (cmd != fixedSpace) {
		ckfree(memoryp, cmd);
	    }
	    cmd = newPtr;
	}
	strcpy(cmd + spaceUsed, string);
	spaceUsed += length;
    }
    va_end(argList);
    cmd[spaceUsed] = '\0';

    result = Hax_Eval(interp, NULL, cmd, 0, (char **) NULL);
    if (cmd != fixedSpace) {
	ckfree(memoryp, cmd);
    }
    return result;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x210, %rsp            # imm = 0x210
testb %al, %al
je 0x7f67
movaps %xmm0, -0x1b0(%rbp)
movaps %xmm1, -0x1a0(%rbp)
movaps %xmm2, -0x190(%rbp)
movaps %xmm3, -0x180(%rbp)
movaps %xmm4, -0x170(%rbp)
movaps %xmm5, -0x160(%rbp)
movaps %xmm6, -0x150(%rbp)
movaps %xmm7, -0x140(%rbp)
movq %r9, -0x1b8(%rbp)
movq %r8, -0x1c0(%rbp)
movq %rcx, -0x1c8(%rbp)
movq %rdx, -0x1d0(%rbp)
movq %rsi, -0x1d8(%rbp)
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq 0x280(%rax), %rax
movq %rax, -0x18(%rbp)
leaq -0x30(%rbp), %rax
leaq -0x1e0(%rbp), %rcx
movq %rcx, 0x10(%rax)
leaq 0x10(%rbp), %rcx
movq %rcx, 0x8(%rax)
movl $0x30, 0x4(%rax)
movl $0x8, (%rax)
leaq -0x30(%rbp), %rax
movq %rax, -0x1f0(%rbp)
movl -0x30(%rbp), %eax
movl %eax, -0x1e4(%rbp)
cmpl $0x28, %eax
ja 0x8004
movq -0x1f0(%rbp), %rcx
movl -0x1e4(%rbp), %edx
movslq %edx, %rax
addq 0x10(%rcx), %rax
addl $0x8, %edx
movl %edx, (%rcx)
movq %rax, -0x1f8(%rbp)
jmp 0x8021
movq -0x1f0(%rbp), %rcx
movq 0x8(%rcx), %rax
movq %rax, %rdx
addq $0x8, %rdx
movq %rdx, 0x8(%rcx)
movq %rax, -0x1f8(%rbp)
movq -0x1f8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x8(%rbp)
movl $0xc8, -0x104(%rbp)
movl $0x0, -0x108(%rbp)
leaq -0x100(%rbp), %rax
movq %rax, -0x120(%rbp)
leaq -0x30(%rbp), %rax
movq %rax, -0x208(%rbp)
movl -0x30(%rbp), %eax
movl %eax, -0x1fc(%rbp)
cmpl $0x28, %eax
ja 0x808c
movq -0x208(%rbp), %rcx
movl -0x1fc(%rbp), %edx
movslq %edx, %rax
addq 0x10(%rcx), %rax
addl $0x8, %edx
movl %edx, (%rcx)
movq %rax, -0x210(%rbp)
jmp 0x80a9
movq -0x208(%rbp), %rcx
movq 0x8(%rcx), %rax
movq %rax, %rdx
addq $0x8, %rdx
movq %rdx, 0x8(%rcx)
movq %rax, -0x210(%rbp)
movq -0x210(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x118(%rbp)
cmpq $0x0, -0x118(%rbp)
jne 0x80c9
jmp 0x81ce
movq -0x118(%rbp), %rdi
callq 0x41b0
movl %eax, -0x10c(%rbp)
movl -0x108(%rbp), %eax
addl -0x10c(%rbp), %eax
cmpl -0x104(%rbp), %eax
jle 0x819a
movl -0x108(%rbp), %eax
addl -0x10c(%rbp), %eax
movl %eax, -0x104(%rbp)
movl -0x104(%rbp), %eax
movl $0x2, %ecx
cltd
idivl %ecx
addl -0x104(%rbp), %eax
movl %eax, -0x104(%rbp)
movq -0x18(%rbp), %rdi
movl -0x104(%rbp), %eax
movl %eax, %esi
leaq 0x150cf(%rip), %rdx     # 0x1d201
movl $0x3f2, %ecx            # imm = 0x3F2
callq 0x44c0
movq %rax, -0x130(%rbp)
movq -0x130(%rbp), %rdi
movq -0x120(%rbp), %rsi
movslq -0x108(%rbp), %rdx
callq 0x4390
movq -0x120(%rbp), %rax
leaq -0x100(%rbp), %rcx
cmpq %rcx, %rax
je 0x818c
movq -0x18(%rbp), %rdi
movq -0x120(%rbp), %rsi
leaq 0x1507f(%rip), %rdx     # 0x1d201
movl $0x3f5, %ecx            # imm = 0x3F5
callq 0x4260
movq -0x130(%rbp), %rax
movq %rax, -0x120(%rbp)
movq -0x120(%rbp), %rdi
movslq -0x108(%rbp), %rax
addq %rax, %rdi
movq -0x118(%rbp), %rsi
callq 0x40d0
movl -0x10c(%rbp), %eax
addl -0x108(%rbp), %eax
movl %eax, -0x108(%rbp)
jmp 0x8051
leaq -0x30(%rbp), %rax
movq -0x120(%rbp), %rax
movslq -0x108(%rbp), %rcx
movb $0x0, (%rax,%rcx)
movq -0x8(%rbp), %rdi
movq -0x120(%rbp), %rdx
xorl %eax, %eax
movl %eax, %r8d
xorl %ecx, %ecx
movq %r8, %rsi
callq 0x45b0
movl %eax, -0x124(%rbp)
movq -0x120(%rbp), %rax
leaq -0x100(%rbp), %rcx
cmpq %rcx, %rax
je 0x8233
movq -0x18(%rbp), %rdi
movq -0x120(%rbp), %rsi
leaq 0x14fd8(%rip), %rdx     # 0x1d201
movl $0x401, %ecx            # imm = 0x401
callq 0x4260
movl -0x124(%rbp), %eax
addq $0x210, %rsp            # imm = 0x210
popq %rbp
retq
nopw %cs:(%rax,%rax)