// File: acliusBackHome[P]kamaya/dist/ParseDeclaration.cpp
// Function: ParseConstant::operator<(ParseConstant const&) const
bool ParseConstant::operator<(const ParseConstant &other) const {
    if (type < other.type) {
        return true;
    } else if (other.type < type) {
        return false;
    }
    switch (type) {
        case C_STRING: {
            const string &this_value = *(string *) value, &that_value = *(string *) other.value;
            if (this_value.length() < that_value.length()) {
                return true;
            } else if (that_value.length() < this_value.length()) {
                return false;
            }
            for (size_t i = 0; i < this_value.length(); ++i) {
                if (this_value[i] < that_value[i]) {
                    return true;
                } else if (that_value[i] < this_value[i]) {
                    return false;
                }
            }
            break;
        }
        case C_SIGNED: {
            const long long &this_value = *(long long *) value, &that_value = *(long long *) other.value;
            if (this_value < that_value) {
                return true;
            } else if (that_value < this_value) {
                return false;
            }
            break;
        }
        case C_UNSIGNED: {
            const unsigned long long &this_value = *(unsigned long long *) value,
                    &that_value = *(unsigned long long *) other.value;
            if (this_value < that_value) {
                return true;
            } else if (that_value < this_value) {
                return false;
            }
            break;
        }
        case C_FLOAT: {
            const long double &this_value = *(long double *) value,
                    &that_value = *(long double *) other.value;
            if (this_value < that_value) {
                return true;
            } else if (that_value < this_value) {
                return false;
            }
            break;
        }
        case C_BOOL: {
            bool this_value = *(bool *) value,
                    that_value = *(bool *) other.value;
            if (!this_value && that_value) {
                return true;
            } else if (!that_value && this_value) {
                return false;
            }
            break;
        }
        case C_UNDEFINED:
            break;
    }
    return false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x70(%rbp)
movl (%rax), %eax
movq -0x18(%rbp), %rcx
cmpl (%rcx), %eax
jge 0x69d1e
movb $0x1, -0x1(%rbp)
jmp 0x69fd4
movq -0x70(%rbp), %rcx
movq -0x18(%rbp), %rax
movl (%rax), %eax
cmpl (%rcx), %eax
jge 0x69d35
movb $0x0, -0x1(%rbp)
jmp 0x69fd4
jmp 0x69d37
movq -0x70(%rbp), %rax
movl (%rax), %eax
movq %rax, -0x78(%rbp)
subq $0x5, %rax
ja 0x69fd0
movq -0x78(%rbp), %rax
leaq 0x26a26(%rip), %rcx     # 0x9077c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x70(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rdi
callq 0x44e0
movq %rax, -0x80(%rbp)
movq -0x28(%rbp), %rdi
callq 0x44e0
movq %rax, %rcx
movq -0x80(%rbp), %rax
cmpq %rcx, %rax
jae 0x69da2
movb $0x1, -0x1(%rbp)
jmp 0x69fd4
movq -0x28(%rbp), %rdi
callq 0x44e0
movq %rax, -0x88(%rbp)
movq -0x20(%rbp), %rdi
callq 0x44e0
movq %rax, %rcx
movq -0x88(%rbp), %rax
cmpq %rcx, %rax
jae 0x69dd3
movb $0x0, -0x1(%rbp)
jmp 0x69fd4
jmp 0x69dd5
movq $0x0, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x20(%rbp), %rdi
callq 0x44e0
movq %rax, %rcx
movq -0x90(%rbp), %rax
cmpq %rcx, %rax
jae 0x69e91
movq -0x20(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x4390
movsbl (%rax), %eax
movl %eax, -0x94(%rbp)
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x4390
movq %rax, %rcx
movl -0x94(%rbp), %eax
movsbl (%rcx), %ecx
cmpl %ecx, %eax
jge 0x69e40
movb $0x1, -0x1(%rbp)
jmp 0x69fd4
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x4390
movsbl (%rax), %eax
movl %eax, -0x98(%rbp)
movq -0x20(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x4390
movq %rax, %rcx
movl -0x98(%rbp), %eax
movsbl (%rcx), %ecx
cmpl %ecx, %eax
jge 0x69e7c
movb $0x0, -0x1(%rbp)
jmp 0x69fd4
jmp 0x69e7e
jmp 0x69e80
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
jmp 0x69ddd
jmp 0x69fd0
movq -0x70(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x38(%rbp), %rax
movq (%rax), %rax
movq -0x40(%rbp), %rcx
cmpq (%rcx), %rax
jge 0x69ec7
movb $0x1, -0x1(%rbp)
jmp 0x69fd4
movq -0x40(%rbp), %rax
movq (%rax), %rax
movq -0x38(%rbp), %rcx
cmpq (%rcx), %rax
jge 0x69ee0
movb $0x0, -0x1(%rbp)
jmp 0x69fd4
jmp 0x69ee2
jmp 0x69fd0
movq -0x70(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x50(%rbp)
movq -0x48(%rbp), %rax
movq (%rax), %rax
movq -0x50(%rbp), %rcx
cmpq (%rcx), %rax
jae 0x69f18
movb $0x1, -0x1(%rbp)
jmp 0x69fd4
movq -0x50(%rbp), %rax
movq (%rax), %rax
movq -0x48(%rbp), %rcx
cmpq (%rcx), %rax
jae 0x69f31
movb $0x0, -0x1(%rbp)
jmp 0x69fd4
jmp 0x69f33
jmp 0x69fd0
movq -0x70(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x58(%rbp), %rax
fldt (%rax)
movq -0x60(%rbp), %rax
fldt (%rax)
fucompi %st(1), %st
fstp %st(0)
jbe 0x69f6a
jmp 0x69f64
movb $0x1, -0x1(%rbp)
jmp 0x69fd4
movq -0x60(%rbp), %rax
fldt (%rax)
movq -0x58(%rbp), %rax
fldt (%rax)
fucompi %st(1), %st
fstp %st(0)
jbe 0x69f84
jmp 0x69f7e
movb $0x0, -0x1(%rbp)
jmp 0x69fd4
jmp 0x69f86
jmp 0x69fd0
movq -0x70(%rbp), %rax
movq 0x8(%rax), %rax
movb (%rax), %al
andb $0x1, %al
movb %al, -0x61(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movb (%rax), %al
andb $0x1, %al
movb %al, -0x62(%rbp)
testb $0x1, -0x61(%rbp)
jne 0x69fb8
testb $0x1, -0x62(%rbp)
je 0x69fb8
movb $0x1, -0x1(%rbp)
jmp 0x69fd4
testb $0x1, -0x62(%rbp)
jne 0x69fca
testb $0x1, -0x61(%rbp)
je 0x69fca
movb $0x0, -0x1(%rbp)
jmp 0x69fd4
jmp 0x69fcc
jmp 0x69fd0
jmp 0x69fd0
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0xa0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)