// File: /workspace/github_cpp_makefile_star2_O2/Fohlen[P]cubescript-standalone/command.cpp
// Function: compileword(vector<unsigned int>&, char const*&, int, char*&, int&)
static bool compileword(vector<uint> &code, const char *&p, int wordtype, char *&word, int &wordlen)
{
    skipcomments(p);
    switch(*p)
    {
        case '\"': word = cutstring(p, wordlen); break;
        case '$': compilelookup(code, p, wordtype); return true;
        case '(':
            p++;
            code.add(CODE_ENTER);
            compilestatements(code, p, VAL_ANY, ')');
            code.add(CODE_EXIT|(wordtype < VAL_ANY ? wordtype<<CODE_RET : 0));
            switch(wordtype)
            {
                case VAL_CODE: code.add(CODE_COMPILE); break;
                case VAL_IDENT: code.add(CODE_IDENTU); break;
            }
            return true;        
        case '[':
            p++;
            compileblock(code, p, wordtype);
            return true;
        default: word = cutword(p, wordlen); break;
    }
    return word!=NULL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %r8, %r14
movq %rcx, %rbx
movl %edx, %r13d
movq %rsi, %r15
movq %rdi, -0x40(%rbp)
movq %rsi, %rdi
callq 0xaa0b
movq (%r15), %rcx
movzbl (%rcx), %eax
cmpl $0x5b, %eax
je 0xab58
cmpl $0x24, %eax
je 0xaacd
cmpl $0x28, %eax
je 0xaae4
movq %r15, %rdi
movq %r14, %rsi
cmpl $0x22, %eax
jne 0xae29
callq 0xb490
jmp 0xae2e
movq -0x40(%rbp), %rdi
movq %r15, %rsi
movl %r13d, %edx
callq 0xb4f7
movb $0x1, %r12b
jmp 0xb0a4
incq %rcx
movq %rcx, (%r15)
leaq -0x2c(%rbp), %rbx
movl $0x3, (%rbx)
movq -0x40(%rbp), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0xd7c0
pushq $0x29
popq %rdx
movq %r14, %rdi
movq %r15, %rsi
callq 0xa094
movl %r13d, %eax
shll $0x6, %eax
orl $0x4, %eax
cmpl $0x4, %r13d
pushq $0x4
popq %rcx
cmovll %eax, %ecx
movl %ecx, (%rbx)
leaq -0x2c(%rbp), %rsi
movq %r14, %rdi
callq 0xd7c0
movb $0x1, %r12b
cmpl $0x7, %r13d
je 0xae3d
cmpl $0x5, %r13d
jne 0xb0a4
leaq -0x2c(%rbp), %rsi
movl $0xa, (%rsi)
jmp 0xae47
movl %r13d, -0x44(%rbp)
incq %rcx
movq %rcx, (%r15)
pushq $0x1
popq %r13
xorl %r12d, %r12d
movq %rcx, -0x50(%rbp)
movq %rcx, -0x38(%rbp)
movq (%r15), %rbx
testl %r13d, %r13d
je 0xae6f
movq %rbx, %rdi
leaq 0x6ba9(%rip), %rsi      # 0x11730
callq 0x2030
leaq (%rbx,%rax), %r14
incq %r14
movq %r14, (%r15)
movzbl -0x1(%r14), %ecx
cmpl $0x22, %ecx
je 0xac3c
cmpl $0x2f, %ecx
je 0xac63
cmpl $0x40, %ecx
je 0xabc9
cmpl $0x5b, %ecx
je 0xac5b
cmpl $0x5d, %ecx
je 0xac34
testl %ecx, %ecx
jne 0xab71
jmp 0xae54
leaq (%rbx,%rax), %r14
addq %rbx, %rax
addq $0x2, %rax
pushq $0x1
popq %rcx
cmpb $0x40, -0x1(%rax)
jne 0xabe7
movq %rax, (%r15)
incl %ecx
incq %rax
jmp 0xabd7
cmpl %ecx, %r13d
jg 0xab71
jge 0xac00
movq -0x50(%rbp), %rdi
leaq 0x70ac(%rip), %rsi      # 0x11ca5
xorl %eax, %eax
callq 0xb336
testl %r12d, %r12d
movq -0x40(%rbp), %rbx
je 0xac87
cmpl $0x18, %r12d
jl 0xac9d
shll $0x8, %r12d
orl $0xd5, %r12d
movl %r12d, -0x2c(%rbp)
movq %rbx, %rdi
leaq -0x2c(%rbp), %rsi
callq 0xd7c0
pushq $0x1
popq %r12
jmp 0xac9d
decl %r13d
jmp 0xab71
movq %r14, %rdi
callq 0x47ed
movq %rax, (%r15)
cmpb $0x22, (%rax)
jne 0xab71
incq %rax
movq %rax, (%r15)
jmp 0xab71
incl %r13d
jmp 0xab71
cmpb $0x2f, (%r14)
jne 0xab71
movq %r14, %rdi
leaq 0x6ab6(%rip), %rsi      # 0x1172d
callq 0x2030
addq %r14, %rax
movq %rax, (%r15)
jmp 0xab71
movl $0x3, -0x2c(%rbp)
movq %rbx, %rdi
leaq -0x2c(%rbp), %rsi
callq 0xd7c0
xorl %r12d, %r12d
movq %rbx, %rdi
movq -0x38(%rbp), %rsi
movq %r14, %rdx
pushq $0x1
popq %rcx
callq 0xb9cb
andl $0x0, -0x2c(%rbp)
movq (%r15), %rdi
movzbl (%rdi), %eax
cmpl $0x22, %eax
je 0xad11
cmpl $0x28, %eax
je 0xacf6
cmpl $0x5b, %eax
jne 0xad1f
movq %rbx, %rdi
movq %r15, %rsi
pushq $0x3
popq %rdx
callq 0xb17e
testb %al, %al
je 0xad9e
movl $0xe1, -0x30(%rbp)
movq %rbx, %rdi
leaq -0x30(%rbp), %rsi
callq 0xd7c0
jmp 0xae09
movq %rbx, %rdi
movq %r15, %rsi
pushq $0x3
popq %rdx
callq 0xb17e
testb %al, %al
jne 0xae09
jmp 0xad9e
movq %r15, %rdi
leaq -0x2c(%rbp), %rsi
callq 0xb490
jmp 0xad66
leaq 0x1(%rdi), %rdx
xorl %ecx, %ecx
xorl %esi, %esi
leaq 0x6fe2(%rip), %r8       # 0x11d10
movabsq $0x100000000, %r9       # imm = 0x100000000
cmpb $0x5f, %al
je 0xad47
movzbl %al, %eax
movb (%r8,%rax), %al
andb $0xc, %al
je 0xad56
movq %rdx, (%r15)
movb (%rdx), %al
addq %r9, %rsi
decl %ecx
incq %rdx
jmp 0xad38
negl %ecx
movl %ecx, -0x2c(%rbp)
jae 0xad9e
sarq $0x20, %rsi
callq 0xd339
movq %rax, %r14
movq %rax, %rdi
pushq $0x20
popq %rsi
callq 0x3be8
testq %rax, %rax
je 0xada3
movl (%rax), %ecx
cmpq $0x4, %rcx
ja 0xada3
leaq 0x67fc(%rip), %rdx      # 0x11584
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movl 0x3c(%rax), %eax
shll $0x8, %eax
orl $0xda, %eax
jmp 0xaded
incl %r12d
jmp 0xae0d
movl -0x2c(%rbp), %edx
movq %rbx, %rdi
movq %r14, %rsi
pushq $0x1
popq %rcx
callq 0xb0b6
movl $0xe1, -0x30(%rbp)
jmp 0xadf0
movl 0x3c(%rax), %eax
shll $0x8, %eax
orl $0xd8, %eax
jmp 0xaded
movl 0x3c(%rax), %eax
shll $0x8, %eax
orl $0xde, %eax
jmp 0xaded
movl 0x3c(%rax), %eax
xorl %ecx, %ecx
cmpl $0x19, %eax
setl %cl
shll $0x8, %eax
leal (%rax,%rcx,2), %eax
addl $0xe0, %eax
movl %eax, -0x30(%rbp)
movq %rbx, %rdi
leaq -0x30(%rbp), %rsi
callq 0xd7c0
testq %r14, %r14
je 0xae09
movq %r14, %rdi
callq 0xf9a8
addl $0x2, %r12d
testl %r12d, %r12d
je 0xae1e
movq (%r15), %rax
movq %rax, -0x38(%rbp)
jmp 0xab71
decl 0xc(%rbx)
xorl %r12d, %r12d
jmp 0xab71
callq 0xb840
movq %rax, (%rbx)
testq %rax, %rax
setne %r12b
jmp 0xb0a4
leaq -0x2c(%rbp), %rsi
movl $0xe, (%rsi)
movq %r14, %rdi
callq 0xd7c0
jmp 0xb0a4
leaq 0x6e3e(%rip), %rsi      # 0x11c99
movq -0x50(%rbp), %rdi
xorl %eax, %eax
callq 0xb336
movq (%r15), %rbx
decq %rbx
movq %rbx, (%r15)
decq %rbx
movq %rbx, %rsi
subq -0x38(%rbp), %rsi
movl -0x44(%rbp), %r13d
jbe 0xaeab
testl %r12d, %r12d
je 0xaf49
xorl %ecx, %ecx
testl %r12d, %r12d
setg %cl
movq -0x40(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq %rbx, %rdx
callq 0xb9cb
cmpl $0x1, %r12d
jle 0xaeab
incl %r12d
jmp 0xaeb0
testl %r12d, %r12d
je 0xaeff
movl %r13d, %eax
shll $0x6, %eax
cmpl $0x4, %r13d
movl $0xc0, %r14d
cmovll %eax, %r14d
shll $0x8, %r12d
orl %r14d, %r12d
orl $0x16, %r12d
leaq -0x2c(%rbp), %rbx
movl %r12d, (%rbx)
movq -0x40(%rbp), %r12
movq %r12, %rdi
movq %rbx, %rsi
callq 0xd7c0
orl $0x4, %r14d
movl %r14d, (%rbx)
movq %r12, %rbx
leaq -0x2c(%rbp), %rsi
movq %r12, %rdi
callq 0xd7c0
xorl %eax, %eax
jmp 0xaf05
movb $0x1, %al
movq -0x40(%rbp), %rbx
cmpl $0x7, %r13d
ja 0xafd4
movl %r13d, %ecx
leaq 0x667f(%rip), %rdx      # 0x11598
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movq (%r15), %rcx
decq %rcx
cmpq -0x38(%rbp), %rcx
setbe %cl
andb %cl, %al
movb $0x1, %r12b
cmpb $0x1, %al
jne 0xb0a4
movq %rbx, %rdi
callq 0xb1df
jmp 0xb0a4
cmpl $0x7, %r13d
je 0xb06b
cmpl $0x5, %r13d
jne 0xae88
movq -0x38(%rbp), %rax
movq %rax, (%r15)
movq -0x40(%rbp), %r12
movslq 0xc(%r12), %r14
leaq -0x2c(%rbp), %rbx
movl $0x9, (%rbx)
movq %r12, %rdi
movq %rbx, %rsi
callq 0xd7c0
movl %r14d, %eax
shll $0x8, %eax
addl $0x201, %eax            # imm = 0x201
movl %eax, (%rbx)
movq %r12, %rdi
movq %rbx, %rsi
callq 0xd7c0
pushq $0x5d
popq %rdx
movq %r12, %rdi
movq %r15, %rsi
callq 0xa094
movl $0x4, (%rbx)
leaq -0x2c(%rbp), %rsi
movq %r12, %rdi
callq 0xd7c0
movl %r14d, %eax
notl %eax
addl 0xc(%r12), %eax
shll $0x8, %eax
movq (%r12), %rcx
orl %eax, (%rcx,%r14,4)
jmp 0xaadc
movb $0x1, %r12b
testb %al, %al
je 0xb0a4
movq (%r15), %rax
decq %rax
cmpq -0x38(%rbp), %rax
jbe 0xb095
shll $0x6, %r13d
orl $0xb, %r13d
leaq -0x2c(%rbp), %rsi
movl %r13d, (%rsi)
movq %rbx, %rdi
jmp 0xae4a
movq (%r15), %rcx
decq %rcx
cmpq -0x38(%rbp), %rcx
setbe %cl
andb %cl, %al
cmpb $0x1, %al
jne 0xb048
movq %rbx, %rdi
callq 0xb270
jmp 0xaadc
movq (%r15), %rcx
decq %rcx
cmpq -0x38(%rbp), %rcx
setbe %cl
andb %cl, %al
cmpb $0x1, %al
jne 0xb054
movq %rbx, %rdi
xorl %esi, %esi
callq 0xb2d7
jmp 0xaadc
leaq -0x2c(%rbp), %rsi
movl $0xa, (%rsi)
jmp 0xb05e
leaq -0x2c(%rbp), %rsi
movl $0xe, (%rsi)
movq %rbx, %rdi
callq 0xd7c0
jmp 0xaadc
movq -0x38(%rbp), %rdi
callq 0xd339
movq %rax, %rbx
movq -0x40(%rbp), %rdi
movq %rax, %rsi
callq 0xb2d7
movb $0x1, %r12b
testq %rbx, %rbx
je 0xb0a4
movq %rbx, %rdi
callq 0xf9a8
jmp 0xb0a4
movq %rbx, %rdi
movl %r13d, %esi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0xb88a
movl %r12d, %eax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq