// File: /workspace/github_c_makefile_star2_O0/gplessis[P]dotdeb-redis/src/object.c
// Function: compareStringObjectsWithFlags
int compareStringObjectsWithFlags(robj *a, robj *b, int flags) {
    serverAssertWithInfo(NULL,a,a->type == OBJ_STRING && b->type == OBJ_STRING);
    char bufa[128], bufb[128], *astr, *bstr;
    size_t alen, blen, minlen;

    if (a == b) return 0;
    if (sdsEncodedObject(a)) {
        astr = a->ptr;
        alen = sdslen(astr);
    } else {
        alen = ll2string(bufa,sizeof(bufa),(long) a->ptr);
        astr = bufa;
    }
    if (sdsEncodedObject(b)) {
        bstr = b->ptr;
        blen = sdslen(bstr);
    } else {
        blen = ll2string(bufb,sizeof(bufb),(long) b->ptr);
        bstr = bufb;
    }
    if (flags & REDIS_COMPARE_COLL) {
        return strcoll(astr,bstr);
    } else {
        int cmp;

        minlen = (alen < blen) ? alen : blen;
        cmp = memcmp(astr,bstr,minlen);
        if (cmp == 0) return alen-blen;
        return cmp;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x160, %rsp            # imm = 0x160
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movl %edx, -0x1c(%rbp)
movq -0x10(%rbp), %rax
movl (%rax), %eax
andl $0xf, %eax
cmpl $0x0, %eax
jne 0x495f4
movq -0x18(%rbp), %rax
movl (%rax), %eax
andl $0xf, %eax
cmpl $0x0, %eax
jne 0x495f4
jmp 0x4961f
movq -0x10(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edi
leaq 0xf2175(%rip), %rdx     # 0x13b778
leaq 0xf208c(%rip), %rcx     # 0x13b696
movl $0x1d6, %r8d            # imm = 0x1D6
callq 0x78360
movl $0x1, %edi
callq 0x263c0
movq -0x10(%rbp), %rax
cmpq -0x18(%rbp), %rax
jne 0x49635
movl $0x0, -0x4(%rbp)
jmp 0x497c8
movq -0x10(%rbp), %rax
movl (%rax), %eax
shrl $0x4, %eax
andl $0xf, %eax
cmpl $0x0, %eax
je 0x49657
movq -0x10(%rbp), %rax
movl (%rax), %eax
shrl $0x4, %eax
andl $0xf, %eax
cmpl $0x8, %eax
jne 0x4967b
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x128(%rbp)
movq -0x128(%rbp), %rdi
callq 0x48aa0
movq %rax, -0x138(%rbp)
jmp 0x496ab
leaq -0xa0(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdx
movl $0x80, %esi
callq 0x477e0
cltq
movq %rax, -0x138(%rbp)
leaq -0xa0(%rbp), %rax
movq %rax, -0x128(%rbp)
movq -0x18(%rbp), %rax
movl (%rax), %eax
shrl $0x4, %eax
andl $0xf, %eax
cmpl $0x0, %eax
je 0x496cd
movq -0x18(%rbp), %rax
movl (%rax), %eax
shrl $0x4, %eax
andl $0xf, %eax
cmpl $0x8, %eax
jne 0x496f1
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x130(%rbp)
movq -0x130(%rbp), %rdi
callq 0x48aa0
movq %rax, -0x140(%rbp)
jmp 0x49721
leaq -0x120(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rdx
movl $0x80, %esi
callq 0x477e0
cltq
movq %rax, -0x140(%rbp)
leaq -0x120(%rbp), %rax
movq %rax, -0x130(%rbp)
movl -0x1c(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x49747
movq -0x128(%rbp), %rdi
movq -0x130(%rbp), %rsi
callq 0x260e0
movl %eax, -0x4(%rbp)
jmp 0x497c8
movq -0x138(%rbp), %rax
cmpq -0x140(%rbp), %rax
jae 0x49767
movq -0x138(%rbp), %rax
movq %rax, -0x158(%rbp)
jmp 0x49775
movq -0x140(%rbp), %rax
movq %rax, -0x158(%rbp)
movq -0x158(%rbp), %rax
movq %rax, -0x148(%rbp)
movq -0x128(%rbp), %rdi
movq -0x130(%rbp), %rsi
movq -0x148(%rbp), %rdx
callq 0x269b0
movl %eax, -0x14c(%rbp)
cmpl $0x0, -0x14c(%rbp)
jne 0x497bf
movq -0x138(%rbp), %rax
subq -0x140(%rbp), %rax
movl %eax, -0x4(%rbp)
jmp 0x497c8
movl -0x14c(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x160, %rsp            # imm = 0x160
popq %rbp
retq
nopw %cs:(%rax,%rax)