// File: Sherhang[P]redis-for-cpp/credis.cpp
// Function: Redis::sscan(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, int, 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>>>>&)
int32_t Redis::sscan(const std::string& key, int32_t cursor, const std::string& pattern, int32_t count, std::vector<std::string>& keys)
{
    std::string cmd = "SSCAN " + key + " " + num2str<int32_t>(cursor)
                    + (pattern.empty() ? "" : (" MATCH " + pattern))
                    + (count < 0 ? "" : " COUNT " + num2str<int32_t>(count));
    return execScan(cmd, keys);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1a0, %rsp            # imm = 0x1A0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq %rcx, -0x20(%rbp)
movl %r8d, -0x24(%rbp)
movq %r9, -0x30(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x188(%rbp)
movq -0x10(%rbp), %rdx
leaq 0xe3d4(%rip), %rsi      # 0x181ac
leaq -0xd0(%rbp), %rdi
movq %rdi, -0x180(%rbp)
callq 0xb510
movq -0x180(%rbp), %rsi
leaq 0xedd9(%rip), %rdx      # 0x18bd2
leaq -0xb0(%rbp), %rdi
callq 0xb6f0
jmp 0x9e07
movq -0x188(%rbp), %rsi
leaq -0x100(%rbp), %rdi
leaq -0x14(%rbp), %rdx
callq 0x4560
jmp 0x9e20
leaq -0x90(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
leaq -0x100(%rbp), %rdx
callq 0xb620
jmp 0x9e3c
movq -0x20(%rbp), %rdi
callq 0x3610
movb $0x0, -0x122(%rbp)
testb $0x1, %al
jne 0x9e52
jmp 0x9e8a
leaq -0x121(%rbp), %rdi
movq %rdi, -0x190(%rbp)
callq 0x3670
movq -0x190(%rbp), %rdx
movb $0x1, -0x122(%rbp)
leaq 0xe400(%rip), %rsi      # 0x1827a
leaq -0x120(%rbp), %rdi
callq 0x3510
jmp 0x9e88
jmp 0x9ea5
movq -0x20(%rbp), %rdx
leaq 0xe258(%rip), %rsi      # 0x180ed
leaq -0x120(%rbp), %rdi
callq 0xb510
jmp 0x9ea3
jmp 0x9ea5
leaq -0x70(%rbp), %rdi
leaq -0x90(%rbp), %rsi
leaq -0x120(%rbp), %rdx
callq 0xb620
jmp 0x9ebe
movl -0x24(%rbp), %eax
movb $0x0, -0x14a(%rbp)
movb $0x0, -0x171(%rbp)
cmpl $0x0, %eax
jge 0x9f0c
leaq -0x149(%rbp), %rdi
movq %rdi, -0x198(%rbp)
callq 0x3670
movq -0x198(%rbp), %rdx
movb $0x1, -0x14a(%rbp)
leaq 0xe37e(%rip), %rsi      # 0x1827a
leaq -0x148(%rbp), %rdi
callq 0x3510
jmp 0x9f0a
jmp 0x9f4a
movq -0x188(%rbp), %rsi
leaq -0x170(%rbp), %rdi
leaq -0x24(%rbp), %rdx
callq 0x4560
jmp 0x9f25
movb $0x1, -0x171(%rbp)
leaq 0xe1c2(%rip), %rsi      # 0x180f5
leaq -0x148(%rbp), %rdi
leaq -0x170(%rbp), %rdx
callq 0xb840
jmp 0x9f48
jmp 0x9f4a
leaq -0x50(%rbp), %rdi
leaq -0x70(%rbp), %rsi
leaq -0x148(%rbp), %rdx
callq 0xb620
jmp 0x9f60
leaq -0x148(%rbp), %rdi
callq 0x3290
testb $0x1, -0x171(%rbp)
jne 0x9f77
jmp 0x9f83
leaq -0x170(%rbp), %rdi
callq 0x3290
testb $0x1, -0x14a(%rbp)
jne 0x9f8e
jmp 0x9f9a
leaq -0x149(%rbp), %rdi
callq 0x3410
leaq -0x70(%rbp), %rdi
callq 0x3290
leaq -0x120(%rbp), %rdi
callq 0x3290
testb $0x1, -0x122(%rbp)
jne 0x9fba
jmp 0x9fc6
leaq -0x121(%rbp), %rdi
callq 0x3410
leaq -0x90(%rbp), %rdi
callq 0x3290
leaq -0x100(%rbp), %rdi
callq 0x3290
leaq -0xb0(%rbp), %rdi
callq 0x3290
leaq -0xd0(%rbp), %rdi
callq 0x3290
movq -0x188(%rbp), %rdi
movq -0x30(%rbp), %rdx
leaq -0x50(%rbp), %rsi
callq 0x6630
movl %eax, -0x19c(%rbp)
jmp 0xa012
leaq -0x50(%rbp), %rdi
callq 0x3290
movl -0x19c(%rbp), %eax
addq $0x1a0, %rsp            # imm = 0x1A0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0xa160
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0xa154
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0xa148
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0xa125
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0xa119
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0xa0f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0xa0e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x3290
testb $0x1, -0x171(%rbp)
jne 0xa0eb
jmp 0xa0f7
leaq -0x170(%rbp), %rdi
callq 0x3290
jmp 0xa0f9
testb $0x1, -0x14a(%rbp)
jne 0xa104
jmp 0xa110
leaq -0x149(%rbp), %rdi
callq 0x3410
leaq -0x70(%rbp), %rdi
callq 0x3290
leaq -0x120(%rbp), %rdi
callq 0x3290
testb $0x1, -0x122(%rbp)
jne 0xa130
jmp 0xa13c
leaq -0x121(%rbp), %rdi
callq 0x3410
leaq -0x90(%rbp), %rdi
callq 0x3290
leaq -0x100(%rbp), %rdi
callq 0x3290
leaq -0xb0(%rbp), %rdi
callq 0x3290
leaq -0xd0(%rbp), %rdi
callq 0x3290
jmp 0xa189
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x3290
movq -0xd8(%rbp), %rdi
callq 0x3660
nopw %cs:(%rax,%rax)