// File: Sherhang[P]redis-for-cpp/credis.cpp
// Function: Redis::zrevrange(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, long, long, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>&, bool)
bool Redis::zrevrange(const std::string& key, int64_t start, int64_t stop, std::vector<std::string>& values, bool with_scores)
{
    std::string cmd = "ZREVRANGE " + key + " " + num2str<int64_t>(start) + " "
        + num2str<int64_t>(stop) + (with_scores ? " WITHSCORES" : "");
    values.clear();
    if (execReplyArray(cmd, values))
    {
        return true;
    }
    return false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x170, %rsp            # imm = 0x170
movb %r9b, %al
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq %r8, -0x30(%rbp)
andb $0x1, %al
movb %al, -0x31(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x160(%rbp)
movq -0x18(%rbp), %rdx
leaq 0xf472(%rip), %rsi      # 0x1816f
leaq -0xf8(%rbp), %rdi
movq %rdi, -0x158(%rbp)
callq 0xb510
movq -0x158(%rbp), %rsi
leaq 0xfeb4(%rip), %rdx      # 0x18bd2
leaq -0xd8(%rbp), %rdi
callq 0xb6f0
jmp 0x8d2c
movq -0x160(%rbp), %rsi
leaq -0x128(%rbp), %rdi
leaq -0x20(%rbp), %rdx
callq 0xb740
jmp 0x8d45
leaq -0xb8(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
leaq -0x128(%rbp), %rdx
callq 0xb620
jmp 0x8d61
leaq 0xfe6a(%rip), %rdx      # 0x18bd2
leaq -0x98(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0xb6f0
jmp 0x8d7d
movq -0x160(%rbp), %rsi
leaq -0x148(%rbp), %rdi
leaq -0x28(%rbp), %rdx
callq 0xb740
jmp 0x8d96
leaq -0x78(%rbp), %rdi
leaq -0x98(%rbp), %rsi
leaq -0x148(%rbp), %rdx
callq 0xb620
jmp 0x8daf
movb -0x31(%rbp), %cl
leaq 0xf3aa(%rip), %rax      # 0x18163
leaq 0xf4ba(%rip), %rdx      # 0x1827a
testb $0x1, %cl
cmovneq %rax, %rdx
leaq -0x58(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0xb6f0
jmp 0x8dd6
leaq -0x78(%rbp), %rdi
callq 0x3290
leaq -0x148(%rbp), %rdi
callq 0x3290
leaq -0x98(%rbp), %rdi
callq 0x3290
leaq -0xb8(%rbp), %rdi
callq 0x3290
leaq -0x128(%rbp), %rdi
callq 0x3290
leaq -0xd8(%rbp), %rdi
callq 0x3290
leaq -0xf8(%rbp), %rdi
callq 0x3290
movq -0x30(%rbp), %rdi
callq 0xb890
movq -0x160(%rbp), %rdi
movq -0x30(%rbp), %rdx
leaq -0x58(%rbp), %rsi
callq 0x6140
movb %al, -0x161(%rbp)
jmp 0x8e4c
movb -0x161(%rbp), %al
testb $0x1, %al
jne 0x8e5b
jmp 0x8f6e
movb $0x1, -0x1(%rbp)
movl $0x1, -0x14c(%rbp)
jmp 0x8f7c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x100(%rbp)
movl %eax, -0x104(%rbp)
jmp 0x8f43
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x100(%rbp)
movl %eax, -0x104(%rbp)
jmp 0x8f37
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x100(%rbp)
movl %eax, -0x104(%rbp)
jmp 0x8f2b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x100(%rbp)
movl %eax, -0x104(%rbp)
jmp 0x8f1f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x100(%rbp)
movl %eax, -0x104(%rbp)
jmp 0x8f13
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x100(%rbp)
movl %eax, -0x104(%rbp)
jmp 0x8f07
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x100(%rbp)
movl %eax, -0x104(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x3290
leaq -0x148(%rbp), %rdi
callq 0x3290
leaq -0x98(%rbp), %rdi
callq 0x3290
leaq -0xb8(%rbp), %rdi
callq 0x3290
leaq -0x128(%rbp), %rdi
callq 0x3290
leaq -0xd8(%rbp), %rdi
callq 0x3290
leaq -0xf8(%rbp), %rdi
callq 0x3290
jmp 0x8f93
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x100(%rbp)
movl %eax, -0x104(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x3290
jmp 0x8f93
movb $0x0, -0x1(%rbp)
movl $0x1, -0x14c(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x3290
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x170, %rsp            # imm = 0x170
popq %rbp
retq
movq -0x100(%rbp), %rdi
callq 0x3660
nop