All functions:
  Elements:
  - BBCount: 29
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 59
    argCount: 1
    argNames:
    - err
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 95
    functionName: _wsaErrorToErrno
    functionSourceFile: /src/hiredis/sockcompat.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int _wsaErrorToErrno(int err)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _wsaErrorToErrno
      Src: /src/hiredis/sockcompat.c:98,1
    - Dst: WSAGetLastError
      Src: /src/hiredis/sockcompat.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - success
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 99
    functionName: _updateErrno
    functionSourceFile: /src/hiredis/sockcompat.c
    functionUses: 0
    functionsReached:
    - _wsaErrorToErrno
    - WSAGetLastError
    linkageType: ''
    returnType: void
    signature: void _updateErrno(int success)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: WSAStartup
      Src: /src/hiredis/sockcompat.c:105,1
    - Dst: MAKEWORD
      Src: /src/hiredis/sockcompat.c:105,1
    - Dst: _wsaErrorToErrno
      Src: /src/hiredis/sockcompat.c:107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 113
    functionName: _initWinsock
    functionSourceFile: /src/hiredis/sockcompat.c
    functionUses: 0
    functionsReached:
    - WSAStartup
    - _wsaErrorToErrno
    - MAKEWORD
    linkageType: ''
    returnType: int
    signature: int _initWinsock()
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: _initWinsock
      Src: /src/hiredis/sockcompat.c:117,1
    - Dst: getaddrinfo
      Src: /src/hiredis/sockcompat.c:121,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 4
    argNames:
    - node
    - service
    - hints
    - res
    argTypes:
    - char*
    - char*
    - struct addrinfo*
    - struct addrinfo**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 115
    functionDepth: 2
    functionLinenumber: 115
    functionLinenumberEnd: 132
    functionName: win32_getaddrinfo
    functionSourceFile: /src/hiredis/sockcompat.c
    functionUses: 0
    functionsReached:
    - getaddrinfo
    - _initWinsock
    linkageType: ''
    returnType: int
    signature: int win32_getaddrinfo(const char *node, const char *service, const
      struct addrinfo *hints, struct addrinfo **res)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: gai_strerror
      Src: /src/hiredis/sockcompat.c:146,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 1
    argNames:
    - errcode
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 147
    functionName: win32_gai_strerror
    functionSourceFile: /src/hiredis/sockcompat.c
    functionUses: 0
    functionsReached:
    - gai_strerror
    linkageType: ''
    returnType: char
    signature: char *win32_gai_strerror(int errcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: freeaddrinfo
      Src: /src/hiredis/sockcompat.c:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - res
    argTypes:
    - struct addrinfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 151
    functionName: win32_freeaddrinfo
    functionSourceFile: /src/hiredis/sockcompat.c
    functionUses: 0
    functionsReached:
    - freeaddrinfo
    linkageType: ''
    returnType: void
    signature: void win32_freeaddrinfo(struct addrinfo *res)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _initWinsock
      Src: /src/hiredis/sockcompat.c:157,1
    - Dst: _updateErrno
      Src: /src/hiredis/sockcompat.c:161,1
    - Dst: socket
      Src: /src/hiredis/sockcompat.c:161,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - domain
    - type
    - protocol
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 153
    functionDepth: 2
    functionLinenumber: 153
    functionLinenumberEnd: 163
    functionName: win32_socket
    functionSourceFile: /src/hiredis/sockcompat.c
    functionUses: 0
    functionsReached:
    - _updateErrno
    - _initWinsock
    - socket
    linkageType: ''
    returnType: SOCKET
    signature: SOCKET win32_socket(int domain, int type, int protocol)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ioctlsocket
      Src: /src/hiredis/sockcompat.c:166,1
    - Dst: _updateErrno
      Src: /src/hiredis/sockcompat.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - fd
    - request
    - argp
    argTypes:
    - SOCKET
    - unsigned long
    - unsigned long*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 165
    functionDepth: 2
    functionLinenumber: 165
    functionLinenumberEnd: 169
    functionName: win32_ioctl
    functionSourceFile: /src/hiredis/sockcompat.c
    functionUses: 0
    functionsReached:
    - _updateErrno
    - ioctlsocket
    linkageType: ''
    returnType: int
    signature: int win32_ioctl(SOCKET fd, unsigned long request, unsigned long *argp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bind
      Src: /src/hiredis/sockcompat.c:172,1
    - Dst: _updateErrno
      Src: /src/hiredis/sockcompat.c:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - sockfd
    - addr
    - addrlen
    argTypes:
    - SOCKET
    - struct sockaddr*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 171
    functionDepth: 2
    functionLinenumber: 171
    functionLinenumberEnd: 175
    functionName: win32_bind
    functionSourceFile: /src/hiredis/sockcompat.c
    functionUses: 0
    functionsReached:
    - _updateErrno
    - bind
    linkageType: ''
    returnType: int
    signature: int win32_bind(SOCKET sockfd, const struct sockaddr *addr, socklen_t
      addrlen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: connect
      Src: /src/hiredis/sockcompat.c:178,1
    - Dst: _updateErrno
      Src: /src/hiredis/sockcompat.c:179,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - sockfd
    - addr
    - addrlen
    argTypes:
    - SOCKET
    - struct sockaddr*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 177
    functionDepth: 2
    functionLinenumber: 177
    functionLinenumberEnd: 196
    functionName: win32_connect
    functionSourceFile: /src/hiredis/sockcompat.c
    functionUses: 0
    functionsReached:
    - _updateErrno
    - connect
    linkageType: ''
    returnType: int
    signature: int win32_connect(SOCKET sockfd, const struct sockaddr *addr, socklen_t
      addrlen)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getsockopt
      Src: /src/hiredis/sockcompat.c:205,1
    - Dst: getsockopt
      Src: /src/hiredis/sockcompat.c:213,1
    - Dst: _wsaErrorToErrno
      Src: /src/hiredis/sockcompat.c:219,1
    - Dst: _updateErrno
      Src: /src/hiredis/sockcompat.c:223,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 5
    argNames:
    - sockfd
    - level
    - optname
    - optval
    - optlen
    argTypes:
    - SOCKET
    - int
    - int
    - void*
    - socklen_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 198
    functionDepth: 2
    functionLinenumber: 198
    functionLinenumberEnd: 225
    functionName: win32_getsockopt
    functionSourceFile: /src/hiredis/sockcompat.c
    functionUses: 0
    functionsReached:
    - _updateErrno
    - _wsaErrorToErrno
    - getsockopt
    linkageType: ''
    returnType: int
    signature: int win32_getsockopt(SOCKET sockfd, int level, int optname, void *optval,
      socklen_t *optlen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/hiredis/sockcompat.c:232,1
    - Dst: setsockopt
      Src: /src/hiredis/sockcompat.c:234,1
    - Dst: _updateErrno
      Src: /src/hiredis/sockcompat.c:236,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 5
    argNames:
    - sockfd
    - level
    - optname
    - optval
    - optlen
    argTypes:
    - SOCKET
    - int
    - int
    - void*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 227
    functionDepth: 2
    functionLinenumber: 227
    functionLinenumberEnd: 238
    functionName: win32_setsockopt
    functionSourceFile: /src/hiredis/sockcompat.c
    functionUses: 0
    functionsReached:
    - _updateErrno
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int win32_setsockopt(SOCKET sockfd, int level, int optname, const void
      *optval, socklen_t optlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: closesocket
      Src: /src/hiredis/sockcompat.c:241,1
    - Dst: _updateErrno
      Src: /src/hiredis/sockcompat.c:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - fd
    argTypes:
    - SOCKET
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 240
    functionDepth: 2
    functionLinenumber: 240
    functionLinenumberEnd: 244
    functionName: win32_close
    functionSourceFile: /src/hiredis/sockcompat.c
    functionUses: 0
    functionsReached:
    - _updateErrno
    - closesocket
    linkageType: ''
    returnType: int
    signature: int win32_close(SOCKET fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: recv
      Src: /src/hiredis/sockcompat.c:247,1
    - Dst: _updateErrno
      Src: /src/hiredis/sockcompat.c:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - sockfd
    - buf
    - len
    - flags
    argTypes:
    - SOCKET
    - void*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 246
    functionDepth: 2
    functionLinenumber: 246
    functionLinenumberEnd: 250
    functionName: win32_recv
    functionSourceFile: /src/hiredis/sockcompat.c
    functionUses: 0
    functionsReached:
    - recv
    - _updateErrno
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t win32_recv(SOCKET sockfd, void *buf, size_t len, int flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: send
      Src: /src/hiredis/sockcompat.c:253,1
    - Dst: _updateErrno
      Src: /src/hiredis/sockcompat.c:254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - sockfd
    - buf
    - len
    - flags
    argTypes:
    - SOCKET
    - void*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 252
    functionDepth: 2
    functionLinenumber: 252
    functionLinenumberEnd: 256
    functionName: win32_send
    functionSourceFile: /src/hiredis/sockcompat.c
    functionUses: 0
    functionsReached:
    - _updateErrno
    - send
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t win32_send(SOCKET sockfd, const void *buf, size_t len, int
      flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: WSAPoll
      Src: /src/hiredis/sockcompat.c:259,1
    - Dst: _updateErrno
      Src: /src/hiredis/sockcompat.c:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - fds
    - nfds
    - timeout
    argTypes:
    - struct pollfd*
    - nfds_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 258
    functionDepth: 2
    functionLinenumber: 258
    functionLinenumberEnd: 262
    functionName: win32_poll
    functionSourceFile: /src/hiredis/sockcompat.c
    functionUses: 0
    functionsReached:
    - _updateErrno
    - WSAPoll
    linkageType: ''
    returnType: int
    signature: int win32_poll(struct pollfd *fds, nfds_t nfds, int timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: WSAIoctl
      Src: /src/hiredis/sockcompat.c:273,1
    - Dst: _wsaErrorToErrno
      Src: /src/hiredis/sockcompat.c:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - sockfd
    - interval_ms
    argTypes:
    - SOCKET
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 264
    functionDepth: 1
    functionLinenumber: 264
    functionLinenumberEnd: 278
    functionName: win32_redisKeepAlive
    functionSourceFile: /src/hiredis/sockcompat.c
    functionUses: 0
    functionsReached:
    - WSAIoctl
    - _wsaErrorToErrno
    linkageType: ''
    returnType: int
    signature: int win32_redisKeepAlive(SOCKET sockfd, int interval_ms)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - V
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: DICT_NOTUSED
    functionSourceFile: /src/hiredis/dict.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DICT_NOTUSED(V)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ht
    - ','
    - entry
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 82
    functionName: dictFreeEntryVal
    functionSourceFile: /src/hiredis/dict.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dictFreeEntryVal(ht, entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ht
    - ','
    - entry
    - ','
    - _val_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 89
    functionName: dictSetHashVal
    functionSourceFile: /src/hiredis/dict.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dictSetHashVal(ht, entry, _val_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ht
    - ','
    - entry
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 93
    functionName: dictFreeEntryKey
    functionSourceFile: /src/hiredis/dict.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dictFreeEntryKey(ht, entry)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ht
    - ','
    - entry
    - ','
    - _key_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 100
    functionName: dictSetHashKey
    functionSourceFile: /src/hiredis/dict.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dictSetHashKey(ht, entry, _key_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ht
    - ','
    - key1
    - ','
    - key2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 105
    functionName: dictCompareHashKeys
    functionSourceFile: /src/hiredis/dict.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dictCompareHashKeys(ht, key1, key2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ht
    - ','
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 107
    functionName: dictHashKey
    functionSourceFile: /src/hiredis/dict.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dictHashKey(ht, key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - he
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 109
    functionName: dictGetEntryKey
    functionSourceFile: /src/hiredis/dict.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dictGetEntryKey(he)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - he
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 110
    functionName: dictGetEntryVal
    functionSourceFile: /src/hiredis/dict.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dictGetEntryVal(he)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ht
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 111
    functionName: dictSlots
    functionSourceFile: /src/hiredis/dict.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dictSlots(ht)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ht
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 112
    functionName: dictSize
    functionSourceFile: /src/hiredis/dict.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: dictSize(ht)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 76
    functionName: test
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: test(_s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 77
    functionName: test_cond
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: test_cond(_c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 78
    functionName: test_skipped
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: test_skipped()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: Sleep
      Src: /src/hiredis/test.c:82,1
    - Dst: usleep
      Src: /src/hiredis/test.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ms
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 86
    functionName: millisleep
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - Sleep
    - usleep
    linkageType: ''
    returnType: void
    signature: void millisleep(int ms)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/hiredis/test.c:91,1
    - Dst: GetSystemTimeAsFileTime
      Src: /src/hiredis/test.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 98
    functionName: usec
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - GetSystemTimeAsFileTime
    - gettimeofday
    linkageType: ''
    returnType: long long
    signature: long long usec(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 105
    functionName: assert
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: assert(e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - msg
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 113
    functionName: redisTestPanic
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: redisTestPanic(msg)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: redisCommand
      Src: /src/hiredis/test.c:121,1
    - Dst: strstr
      Src: /src/hiredis/test.c:124,1
    - Dst: strlen
      Src: /src/hiredis/test.c:127,1
    - Dst: strstr
      Src: /src/hiredis/test.c:130,1
    - Dst: strtol
      Src: /src/hiredis/test.c:134,1
    - Dst: strtol
      Src: /src/hiredis/test.c:136,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:142,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:146,1
    - Dst: fprintf
      Src: /src/hiredis/test.c:147,1
    - Dst: exit
      Src: /src/hiredis/test.c:148,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 28
    argCount: 3
    argNames:
    - c
    - majorptr
    - minorptr
    argTypes:
    - redisContext*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 149
    functionName: get_redis_version
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - freeReplyObject
    - fprintf
    - redisCommand
    - strtol
    - exit
    - strstr
    - strlen
    linkageType: ''
    returnType: void
    signature: void get_redis_version(redisContext *c, int *majorptr, int *minorptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: redisCommand
      Src: /src/hiredis/test.c:155,1
    - Dst: assert
      Src: /src/hiredis/test.c:156,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:157,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:160,1
    - Dst: assert
      Src: /src/hiredis/test.c:161,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:164,1
    - Dst: printf
      Src: /src/hiredis/test.c:166,1
    - Dst: exit
      Src: /src/hiredis/test.c:167,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - c
    argTypes:
    - redisContext*
    assertStmts:
    - condition: (reply != NULL)
      pos:
        line_end: 160
        line_start: 160
        source_file: /src/hiredis/test.c
    - condition: (reply != NULL)
      pos:
        line_end: 155
        line_start: 155
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 171
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 171
    functionName: select_database
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - freeReplyObject
    - printf
    - assert
    - redisCommand
    - exit
    linkageType: ''
    returnType: redisContext
    signature: redisContext *select_database(redisContext *c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisCommand
      Src: /src/hiredis/test.c:178,1
    - Dst: assert
      Src: /src/hiredis/test.c:180,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:181,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - c
    - version
    argTypes:
    - redisContext*
    - int
    assertStmts:
    - condition: (reply != NULL && reply->type == expected)
      pos:
        line_end: 179
        line_start: 179
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 182
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 182
    functionName: send_hello
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - assert
    - freeReplyObject
    - redisCommand
    linkageType: ''
    returnType: void
    signature: void send_hello(redisContext *c, int version)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisCommand
      Src: /src/hiredis/test.c:188,1
    - Dst: assert
      Src: /src/hiredis/test.c:189,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:190,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - c
    - str
    argTypes:
    - redisContext*
    - char*
    assertStmts:
    - condition: (reply != NULL && reply->type == REDIS_REPLY_STATUS)
      pos:
        line_end: 188
        line_start: 188
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 191
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 191
    functionName: send_client_tracking
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - assert
    - freeReplyObject
    - redisCommand
    linkageType: ''
    returnType: void
    signature: void send_client_tracking(redisContext *c, const char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: redisCommand
      Src: /src/hiredis/test.c:197,1
    - Dst: assert
      Src: /src/hiredis/test.c:198,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:199,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:200,1
    - Dst: assert
      Src: /src/hiredis/test.c:201,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:202,1
    - Dst: redisFreeKeepFd
      Src: /src/hiredis/test.c:206,1
    - Dst: redisFree
      Src: /src/hiredis/test.c:207,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - c
    - keep_fd
    argTypes:
    - redisContext*
    - int
    assertStmts:
    - condition: (reply != NULL)
      pos:
        line_end: 200
        line_start: 200
        source_file: /src/hiredis/test.c
    - condition: (reply != NULL)
      pos:
        line_end: 197
        line_start: 197
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 209
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 209
    functionName: disconnect
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - freeReplyObject
    - redisFree
    - assert
    - redisCommand
    - redisFreeKeepFd
    linkageType: ''
    returnType: int
    signature: int disconnect(redisContext *c, int keep_fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: redisInitiateSSLWithContext
      Src: /src/hiredis/test.c:213,1
    - Dst: printf
      Src: /src/hiredis/test.c:215,1
    - Dst: redisFree
      Src: /src/hiredis/test.c:216,1
    - Dst: exit
      Src: /src/hiredis/test.c:217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - c
    argTypes:
    - redisContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 211
    functionDepth: 1
    functionLinenumber: 211
    functionLinenumberEnd: 222
    functionName: do_ssl_handshake
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - printf
    - redisInitiateSSLWithContext
    - redisFree
    - exit
    linkageType: ''
    returnType: void
    signature: void do_ssl_handshake(redisContext *c)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: redisConnect
      Src: /src/hiredis/test.c:228,1
    - Dst: redisConnect
      Src: /src/hiredis/test.c:230,1
    - Dst: redisConnectUnix
      Src: /src/hiredis/test.c:232,1
    - Dst: redisConnectUnix
      Src: /src/hiredis/test.c:235,1
    - Dst: disconnect
      Src: /src/hiredis/test.c:237,1
    - Dst: printf
      Src: /src/hiredis/test.c:238,1
    - Dst: redisConnectFd
      Src: /src/hiredis/test.c:239,1
    - Dst: redisTestPanic
      Src: /src/hiredis/test.c:242,1
    - Dst: printf
      Src: /src/hiredis/test.c:246,1
    - Dst: exit
      Src: /src/hiredis/test.c:247,1
    - Dst: printf
      Src: /src/hiredis/test.c:249,1
    - Dst: redisFree
      Src: /src/hiredis/test.c:250,1
    - Dst: exit
      Src: /src/hiredis/test.c:251,1
    - Dst: do_ssl_handshake
      Src: /src/hiredis/test.c:255,1
    - Dst: select_database
      Src: /src/hiredis/test.c:258,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 1
    argNames:
    - config
    argTypes:
    - struct config
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 224
    functionDepth: 2
    functionLinenumber: 224
    functionLinenumberEnd: 259
    functionName: do_connect
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - redisFree
    - redisTestPanic
    - printf
    - disconnect
    - redisConnectFd
    - do_ssl_handshake
    - select_database
    - redisConnectUnix
    - exit
    - redisConnect
    linkageType: ''
    returnType: redisContext
    signature: redisContext *do_connect(struct config config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: redisReconnect
      Src: /src/hiredis/test.c:262,1
    - Dst: do_ssl_handshake
      Src: /src/hiredis/test.c:265,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - c
    - config
    argTypes:
    - redisContext*
    - struct config
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 261
    functionDepth: 2
    functionLinenumber: 261
    functionLinenumberEnd: 267
    functionName: do_reconnect
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - redisReconnect
    - do_ssl_handshake
    linkageType: ''
    returnType: void
    signature: void do_reconnect(redisContext *c, struct config config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test
      Src: /src/hiredis/test.c:273,1
    - Dst: redisFormatCommand
      Src: /src/hiredis/test.c:274,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:275,1
    - Dst: strncmp
      Src: /src/hiredis/test.c:275,1
    - Dst: hi_free
      Src: /src/hiredis/test.c:277,1
    - Dst: test
      Src: /src/hiredis/test.c:279,1
    - Dst: redisFormatCommand
      Src: /src/hiredis/test.c:280,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:281,1
    - Dst: strncmp
      Src: /src/hiredis/test.c:281,1
    - Dst: hi_free
      Src: /src/hiredis/test.c:283,1
    - Dst: test
      Src: /src/hiredis/test.c:285,1
    - Dst: redisFormatCommand
      Src: /src/hiredis/test.c:286,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:287,1
    - Dst: strncmp
      Src: /src/hiredis/test.c:287,1
    - Dst: hi_free
      Src: /src/hiredis/test.c:289,1
    - Dst: test
      Src: /src/hiredis/test.c:291,1
    - Dst: redisFormatCommand
      Src: /src/hiredis/test.c:292,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:293,1
    - Dst: strncmp
      Src: /src/hiredis/test.c:293,1
    - Dst: hi_free
      Src: /src/hiredis/test.c:295,1
    - Dst: test
      Src: /src/hiredis/test.c:297,1
    - Dst: redisFormatCommand
      Src: /src/hiredis/test.c:298,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:299,1
    - Dst: strncmp
      Src: /src/hiredis/test.c:299,1
    - Dst: hi_free
      Src: /src/hiredis/test.c:301,1
    - Dst: test
      Src: /src/hiredis/test.c:303,1
    - Dst: redisFormatCommand
      Src: /src/hiredis/test.c:304,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:305,1
    - Dst: strncmp
      Src: /src/hiredis/test.c:305,1
    - Dst: hi_free
      Src: /src/hiredis/test.c:307,1
    - Dst: test
      Src: /src/hiredis/test.c:309,1
    - Dst: redisFormatCommand
      Src: /src/hiredis/test.c:310,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:311,1
    - Dst: strncmp
      Src: /src/hiredis/test.c:311,1
    - Dst: hi_free
      Src: /src/hiredis/test.c:313,1
    - Dst: INTEGER_WIDTH_TEST
      Src: /src/hiredis/test.c:336,1
    - Dst: INTEGER_WIDTH_TEST
      Src: /src/hiredis/test.c:337,1
    - Dst: INTEGER_WIDTH_TEST
      Src: /src/hiredis/test.c:338,1
    - Dst: INTEGER_WIDTH_TEST
      Src: /src/hiredis/test.c:339,1
    - Dst: INTEGER_WIDTH_TEST
      Src: /src/hiredis/test.c:340,1
    - Dst: INTEGER_WIDTH_TEST
      Src: /src/hiredis/test.c:341,1
    - Dst: INTEGER_WIDTH_TEST
      Src: /src/hiredis/test.c:342,1
    - Dst: INTEGER_WIDTH_TEST
      Src: /src/hiredis/test.c:343,1
    - Dst: INTEGER_WIDTH_TEST
      Src: /src/hiredis/test.c:344,1
    - Dst: INTEGER_WIDTH_TEST
      Src: /src/hiredis/test.c:345,1
    - Dst: test
      Src: /src/hiredis/test.c:349,1
    - Dst: redisFormatCommand
      Src: /src/hiredis/test.c:350,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:351,1
    - Dst: test
      Src: /src/hiredis/test.c:353,1
    - Dst: redisFormatCommand
      Src: /src/hiredis/test.c:354,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:355,1
    - Dst: test
      Src: /src/hiredis/test.c:364,1
    - Dst: redisFormatCommandArgv
      Src: /src/hiredis/test.c:365,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:366,1
    - Dst: strncmp
      Src: /src/hiredis/test.c:366,1
    - Dst: hi_free
      Src: /src/hiredis/test.c:368,1
    - Dst: test
      Src: /src/hiredis/test.c:370,1
    - Dst: redisFormatCommandArgv
      Src: /src/hiredis/test.c:371,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:372,1
    - Dst: strncmp
      Src: /src/hiredis/test.c:372,1
    - Dst: hi_free
      Src: /src/hiredis/test.c:374,1
    - Dst: test
      Src: /src/hiredis/test.c:379,1
    - Dst: redisFormatSdsCommandArgv
      Src: /src/hiredis/test.c:380,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:381,1
    - Dst: strncmp
      Src: /src/hiredis/test.c:381,1
    - Dst: sdsfree
      Src: /src/hiredis/test.c:383,1
    - Dst: test
      Src: /src/hiredis/test.c:386,1
    - Dst: redisFormatSdsCommandArgv
      Src: /src/hiredis/test.c:387,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:388,1
    - Dst: strncmp
      Src: /src/hiredis/test.c:388,1
    - Dst: sdsfree
      Src: /src/hiredis/test.c:390,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 66
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 391
    functionName: test_format_commands
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - hi_free
    - sdsfree
    - redisFormatCommand
    - test
    - redisFormatCommandArgv
    - INTEGER_WIDTH_TEST
    - test_cond
    - strncmp
    - redisFormatSdsCommandArgv
    linkageType: ''
    returnType: void
    signature: void test_format_commands(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 318
    functionDepth: 0
    functionLinenumber: 318
    functionLinenumberEnd: 326
    functionName: INTEGER_WIDTH_TEST
    functionSourceFile: /src/hiredis/test.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INTEGER_WIDTH_TEST(fmt, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 327
    functionDepth: 0
    functionLinenumber: 327
    functionLinenumberEnd: 335
    functionName: FLOAT_WIDTH_TEST
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FLOAT_WIDTH_TEST(type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: do_connect
      Src: /src/hiredis/test.c:399,1
    - Dst: test
      Src: /src/hiredis/test.c:401,1
    - Dst: redisFormatCommand
      Src: /src/hiredis/test.c:403,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:405,1
    - Dst: redisAppendFormattedCommand
      Src: /src/hiredis/test.c:405,1
    - Dst: assert
      Src: /src/hiredis/test.c:407,1
    - Dst: redisGetReply
      Src: /src/hiredis/test.c:407,1
    - Dst: hi_free
      Src: /src/hiredis/test.c:409,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:410,1
    - Dst: disconnect
      Src: /src/hiredis/test.c:412,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - config
    argTypes:
    - struct config
    assertStmts:
    - condition: (redisGetReply(c, (void*)&reply) == REDIS_OK)
      pos:
        line_end: 406
        line_start: 406
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 413
      start: 393
    functionDepth: 3
    functionLinenumber: 393
    functionLinenumberEnd: 413
    functionName: test_append_formatted_commands
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - freeReplyObject
    - hi_free
    - redisFormatCommand
    - test
    - disconnect
    - redisAppendFormattedCommand
    - assert
    - test_cond
    - redisGetReply
    - do_connect
    linkageType: ''
    returnType: void
    signature: void test_append_formatted_commands(struct config config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: do_connect
      Src: /src/hiredis/test.c:418,1
    - Dst: test
      Src: /src/hiredis/test.c:420,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:421,1
    - Dst: redisEnableKeepAlive
      Src: /src/hiredis/test.c:421,1
    - Dst: test
      Src: /src/hiredis/test.c:424,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:425,1
    - Dst: redisSetTcpUserTimeout
      Src: /src/hiredis/test.c:425,1
    - Dst: test
      Src: /src/hiredis/test.c:427,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:428,1
    - Dst: redisSetTcpUserTimeout
      Src: /src/hiredis/test.c:428,1
    - Dst: redisFree
      Src: /src/hiredis/test.c:431,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 415
    functionDepth: 3
    functionLinenumber: 415
    functionLinenumberEnd: 432
    functionName: test_tcp_options
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - redisFree
    - test
    - redisSetTcpUserTimeout
    - test_cond
    - redisEnableKeepAlive
    - do_connect
    linkageType: ''
    returnType: void
    signature: void test_tcp_options(struct config cfg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: do_connect
      Src: /src/hiredis/test.c:438,1
    - Dst: test
      Src: /src/hiredis/test.c:440,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:441,1
    - Dst: redisEnableKeepAlive
      Src: /src/hiredis/test.c:441,1
    - Dst: test
      Src: /src/hiredis/test.c:443,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:444,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:445,1
    - Dst: memcmp
      Src: /src/hiredis/test.c:446,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:447,1
    - Dst: redisFree
      Src: /src/hiredis/test.c:449,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 434
    functionDepth: 3
    functionLinenumber: 434
    functionLinenumberEnd: 450
    functionName: test_unix_keepalive
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - freeReplyObject
    - memcmp
    - redisFree
    - test
    - test_cond
    - redisCommand
    - redisEnableKeepAlive
    - do_connect
    linkageType: ''
    returnType: void
    signature: void test_unix_keepalive(struct config cfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test
      Src: /src/hiredis/test.c:458,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:459,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:460,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:461,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:462,1
    - Dst: strcasecmp
      Src: /src/hiredis/test.c:463,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:464,1
    - Dst: test
      Src: /src/hiredis/test.c:468,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:469,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:470,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:471,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:472,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:473,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:474,1
    - Dst: strcasecmp
      Src: /src/hiredis/test.c:475,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:476,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:478,1
    - Dst: test
      Src: /src/hiredis/test.c:479,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:481,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:483,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:484,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:486,1
    - Dst: test
      Src: /src/hiredis/test.c:490,1
    - Dst: assert
      Src: /src/hiredis/test.c:492,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:495,1
    - Dst: memcmp
      Src: /src/hiredis/test.c:496,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:497,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:498,1
    - Dst: test
      Src: /src/hiredis/test.c:500,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:501,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:502,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:503,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:504,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:507,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:508,1
    - Dst: test
      Src: /src/hiredis/test.c:510,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:511,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:512,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:513,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:514,1
    - Dst: strcasecmp
      Src: /src/hiredis/test.c:515,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:516,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:517,1
    - Dst: test
      Src: /src/hiredis/test.c:519,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:520,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:521,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:522,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:523,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:526,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:527,1
    - Dst: test
      Src: /src/hiredis/test.c:529,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:530,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:531,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:532,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:533,1
    - Dst: strcasecmp
      Src: /src/hiredis/test.c:534,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:535,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:536,1
    - Dst: test
      Src: /src/hiredis/test.c:538,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:539,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:540,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:541,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:542,1
    - Dst: strcasecmp
      Src: /src/hiredis/test.c:543,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:544,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:545,1
    - Dst: test
      Src: /src/hiredis/test.c:547,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:548,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:549,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:550,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:551,1
    - Dst: strcasecmp
      Src: /src/hiredis/test.c:552,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:553,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:554,1
    - Dst: test
      Src: /src/hiredis/test.c:556,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:557,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:559,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:560,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:561,1
    - Dst: strcasecmp
      Src: /src/hiredis/test.c:562,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:563,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:564,1
    - Dst: test
      Src: /src/hiredis/test.c:566,1
    - Dst: snprintf
      Src: /src/hiredis/test.c:569,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:572,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:574,1
    - Dst: strlen
      Src: /src/hiredis/test.c:574,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:575,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:576,1
    - Dst: strcasecmp
      Src: /src/hiredis/test.c:576,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:577,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:578,1
    - Dst: test
      Src: /src/hiredis/test.c:581,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:582,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:583,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:584,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:585,1
    - Dst: strcasecmp
      Src: /src/hiredis/test.c:586,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:587,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:588,1
    - Dst: test
      Src: /src/hiredis/test.c:590,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:591,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:592,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:593,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:594,1
    - Dst: strcasecmp
      Src: /src/hiredis/test.c:595,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:596,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:597,1
    - Dst: test
      Src: /src/hiredis/test.c:600,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:601,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:603,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:604,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:605,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:606,1
    - Dst: test
      Src: /src/hiredis/test.c:608,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:609,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:611,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:612,1
    - Dst: assert
      Src: /src/hiredis/test.c:613,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:614,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:615,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:616,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:617,1
    - Dst: test
      Src: /src/hiredis/test.c:619,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:620,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:622,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:623,1
    - Dst: assert
      Src: /src/hiredis/test.c:624,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:625,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:626,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:627,1
    - Dst: test
      Src: /src/hiredis/test.c:629,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:630,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:631,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:632,1
    - Dst: assert
      Src: /src/hiredis/test.c:633,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:634,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:635,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:636,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:639,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:640,1
    - Dst: test
      Src: /src/hiredis/test.c:643,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:644,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:645,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:646,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:647,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:650,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:651,1
    - Dst: test
      Src: /src/hiredis/test.c:654,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:655,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:656,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:657,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:658,1
    - Dst: memcmp
      Src: /src/hiredis/test.c:660,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:661,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:662,1
    - Dst: test
      Src: /src/hiredis/test.c:665,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:666,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:667,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:668,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:669,1
    - Dst: memcmp
      Src: /src/hiredis/test.c:673,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:676,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:677,1
    - Dst: test
      Src: /src/hiredis/test.c:679,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:680,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:681,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:682,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:683,1
    - Dst: fabs
      Src: /src/hiredis/test.c:685,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:687,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:688,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:689,1
    - Dst: test
      Src: /src/hiredis/test.c:691,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:692,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:693,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:694,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:695,1
    - Dst: strcasecmp
      Src: /src/hiredis/test.c:696,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:697,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:698,1
    - Dst: test
      Src: /src/hiredis/test.c:700,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:701,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:702,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:703,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:704,1
    - Dst: isinf
      Src: /src/hiredis/test.c:706,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:708,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:709,1
    - Dst: test
      Src: /src/hiredis/test.c:711,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:712,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:713,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:714,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:715,1
    - Dst: isnan
      Src: /src/hiredis/test.c:717,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:718,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:719,1
    - Dst: test
      Src: /src/hiredis/test.c:721,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:722,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:723,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:724,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:725,1
    - Dst: isnan
      Src: /src/hiredis/test.c:727,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:728,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:729,1
    - Dst: test
      Src: /src/hiredis/test.c:731,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:741,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:742,1
    - Dst: strlen
      Src: /src/hiredis/test.c:742,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:743,1
    - Dst: signbit
      Src: /src/hiredis/test.c:748,1
    - Dst: signbit
      Src: /src/hiredis/test.c:748,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:749,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:750,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:752,1
    - Dst: test
      Src: /src/hiredis/test.c:755,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:763,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:764,1
    - Dst: strlen
      Src: /src/hiredis/test.c:764,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:765,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:766,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:767,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:769,1
    - Dst: test
      Src: /src/hiredis/test.c:772,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:773,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:774,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:775,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:776,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:778,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:779,1
    - Dst: test
      Src: /src/hiredis/test.c:781,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:782,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:783,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:784,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:785,1
    - Dst: strcasecmp
      Src: /src/hiredis/test.c:786,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:787,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:788,1
    - Dst: test
      Src: /src/hiredis/test.c:790,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:791,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:792,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:793,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:794,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:797,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:798,1
    - Dst: test
      Src: /src/hiredis/test.c:800,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:801,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:802,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:803,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:804,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:807,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:808,1
    - Dst: test
      Src: /src/hiredis/test.c:810,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:811,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:812,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:813,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:814,1
    - Dst: strcasecmp
      Src: /src/hiredis/test.c:815,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:816,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:817,1
    - Dst: test
      Src: /src/hiredis/test.c:819,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:820,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:821,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:822,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:823,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:828,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:833,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:836,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:837,1
    - Dst: test
      Src: /src/hiredis/test.c:839,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:840,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:841,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:842,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:843,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:848,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:853,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:856,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:857,1
    - Dst: test
      Src: /src/hiredis/test.c:859,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:860,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:861,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:862,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:863,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:868,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:871,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:878,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:879,1
    - Dst: test
      Src: /src/hiredis/test.c:881,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:882,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:883,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:884,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:885,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:888,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:889,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:890,1
    - Dst: test
      Src: /src/hiredis/test.c:892,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:893,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/test.c:894,1
    - Dst: redisReaderGetReply
      Src: /src/hiredis/test.c:895,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:896,1
    - Dst: fabs
      Src: /src/hiredis/test.c:900,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:902,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:903,1
    - Dst: redisReaderFree
      Src: /src/hiredis/test.c:904,1
    CyclomaticComplexity: 110
    EdgeCount: 110
    ICount: 289
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (ret == REDIS_OK)
      pos:
        line_end: 632
        line_start: 632
        source_file: /src/hiredis/test.c
    - condition: (ret == REDIS_OK && reply == NULL)
      pos:
        line_end: 612
        line_start: 612
        source_file: /src/hiredis/test.c
    - condition: (ret == REDIS_ERR)
      pos:
        line_end: 623
        line_start: 623
        source_file: /src/hiredis/test.c
    - condition: (reply != NULL && ((redisReply*)reply)->type == REDIS_REPLY_ARRAY)
      pos:
        line_end: 491
        line_start: 491
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 905
      start: 452
    functionDepth: 1
    functionLinenumber: 452
    functionLinenumberEnd: 905
    functionName: test_reply_reader
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - freeReplyObject
    - redisReaderGetReply
    - memcmp
    - test
    - redisReaderFeed
    - signbit
    - redisReaderFree
    - strcmp
    - assert
    - redisReaderCreate
    - test_cond
    - snprintf
    - fabs
    - strcasecmp
    - isinf
    - isnan
    - strlen
    linkageType: ''
    returnType: void
    signature: void test_reply_reader(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test
      Src: /src/hiredis/test.c:911,1
    - Dst: redisFree
      Src: /src/hiredis/test.c:912,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:913,1
    - Dst: test
      Src: /src/hiredis/test.c:915,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:916,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:917,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 918
      start: 907
    functionDepth: 1
    functionLinenumber: 907
    functionLinenumberEnd: 918
    functionName: test_free_null
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - freeReplyObject
    - test_cond
    - redisFree
    - test
    linkageType: ''
    returnType: void
    signature: void test_free_null(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 920
    functionDepth: 0
    functionLinenumber: 920
    functionLinenumberEnd: 923
    functionName: hi_malloc_fail
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *hi_malloc_fail(size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - nmemb
    - size
    argTypes:
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 925
    functionDepth: 0
    functionLinenumber: 925
    functionLinenumberEnd: 929
    functionName: hi_calloc_fail
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *hi_calloc_fail(size_t nmemb, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - nmemb
    - size
    argTypes:
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 931
    functionDepth: 0
    functionLinenumber: 931
    functionLinenumberEnd: 936
    functionName: hi_calloc_insecure
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *hi_calloc_insecure(size_t nmemb, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ptr
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 942
      start: 938
    functionDepth: 0
    functionLinenumber: 938
    functionLinenumberEnd: 942
    functionName: hi_realloc_fail
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *hi_realloc_fail(void *ptr, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hiredisSetAllocators
      Src: /src/hiredis/test.c:956,1
    - Dst: test
      Src: /src/hiredis/test.c:958,1
    - Dst: redisConnect
      Src: /src/hiredis/test.c:959,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:960,1
    - Dst: test
      Src: /src/hiredis/test.c:962,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/test.c:963,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:964,1
    - Dst: test
      Src: /src/hiredis/test.c:967,1
    - Dst: hiredisSetAllocators
      Src: /src/hiredis/test.c:969,1
    - Dst: hi_calloc
      Src: /src/hiredis/test.c:970,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:971,1
    - Dst: hiredisResetAllocators
      Src: /src/hiredis/test.c:974,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 975
      start: 944
    functionDepth: 1
    functionLinenumber: 944
    functionLinenumberEnd: 975
    functionName: test_allocator_injection
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - test
    - hiredisResetAllocators
    - hi_calloc
    - test_cond
    - redisReaderCreate
    - redisConnect
    - hiredisSetAllocators
    linkageType: ''
    returnType: void
    signature: void test_allocator_injection(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getaddrinfo
      Src: /src/hiredis/test.c:983,1
    - Dst: test
      Src: /src/hiredis/test.c:986,1
    - Dst: redisConnect
      Src: /src/hiredis/test.c:988,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:989,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:991,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:992,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:993,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:994,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:995,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:996,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:997,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:998,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:999,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1000,1
    - Dst: redisFree
      Src: /src/hiredis/test.c:1001,1
    - Dst: printf
      Src: /src/hiredis/test.c:1003,1
    - Dst: freeaddrinfo
      Src: /src/hiredis/test.c:1004,1
    - Dst: test
      Src: /src/hiredis/test.c:1011,1
    - Dst: redisConnect
      Src: /src/hiredis/test.c:1012,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1013,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1014,1
    - Dst: redisFree
      Src: /src/hiredis/test.c:1015,1
    - Dst: test
      Src: /src/hiredis/test.c:1019,1
    - Dst: REDIS_OPTIONS_SET_TCP
      Src: /src/hiredis/test.c:1022,1
    - Dst: redisConnectWithOptions
      Src: /src/hiredis/test.c:1023,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1024,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1025,1
    - Dst: redisFree
      Src: /src/hiredis/test.c:1026,1
    - Dst: test
      Src: /src/hiredis/test.c:1028,1
    - Dst: redisConnectUnix
      Src: /src/hiredis/test.c:1029,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1030,1
    - Dst: redisFree
      Src: /src/hiredis/test.c:1031,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 978
    functionDepth: 1
    functionLinenumber: 978
    functionLinenumberEnd: 1033
    functionName: test_blocking_connection_errors
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - redisFree
    - test
    - REDIS_OPTIONS_SET_TCP
    - printf
    - strcmp
    - test_cond
    - getaddrinfo
    - redisConnectWithOptions
    - redisConnectUnix
    - freeaddrinfo
    - redisConnect
    linkageType: ''
    returnType: void
    signature: void test_blocking_connection_errors(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/hiredis/test.c:1040,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1053,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - privdata
    - r
    argTypes:
    - void*
    - void*
    assertStmts:
    - condition: (reply && reply->type == REDIS_REPLY_PUSH && reply->elements == 2)
      pos:
        line_end: 1039
        line_start: 1039
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 1054
      start: 1036
    functionDepth: 1
    functionLinenumber: 1036
    functionLinenumberEnd: 1054
    functionName: push_handler
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - assert
    - freeReplyObject
    linkageType: ''
    returnType: void
    signature: void push_handler(void *privdata, void *r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ac
    - reply
    argTypes:
    - redisAsyncContext*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1060
      start: 1057
    functionDepth: 0
    functionLinenumber: 1057
    functionLinenumberEnd: 1060
    functionName: push_handler_async
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void push_handler_async(redisAsyncContext *ac, void *reply)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: send_hello
      Src: /src/hiredis/test.c:1069,1
    - Dst: send_client_tracking
      Src: /src/hiredis/test.c:1070,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1074,1
    - Dst: assert
      Src: /src/hiredis/test.c:1075,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1076,1
    - Dst: test
      Src: /src/hiredis/test.c:1078,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1079,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1080,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1081,1
    - Dst: assert
      Src: /src/hiredis/test.c:1083,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1083,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1084,1
    - Dst: redisSetPushCallback
      Src: /src/hiredis/test.c:1086,1
    - Dst: test
      Src: /src/hiredis/test.c:1087,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1088,1
    - Dst: assert
      Src: /src/hiredis/test.c:1091,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1092,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1093,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1094,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1095,1
    - Dst: test
      Src: /src/hiredis/test.c:1097,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1098,1
    - Dst: assert
      Src: /src/hiredis/test.c:1099,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1100,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1101,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1102,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1103,1
    - Dst: test
      Src: /src/hiredis/test.c:1107,1
    - Dst: redisSetPushCallback
      Src: /src/hiredis/test.c:1108,1
    - Dst: assert
      Src: /src/hiredis/test.c:1109,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1109,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1110,1
    - Dst: assert
      Src: /src/hiredis/test.c:1111,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1111,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1115,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1116,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1118,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1119,1
    - Dst: test
      Src: /src/hiredis/test.c:1121,1
    - Dst: assert
      Src: /src/hiredis/test.c:1122,1
    - Dst: redisGetReply
      Src: /src/hiredis/test.c:1122,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1123,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1124,1
    - Dst: assert
      Src: /src/hiredis/test.c:1127,1
    - Dst: redisSetPushCallback
      Src: /src/hiredis/test.c:1128,1
    - Dst: send_client_tracking
      Src: /src/hiredis/test.c:1132,1
    - Dst: send_hello
      Src: /src/hiredis/test.c:1133,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 49
    argCount: 1
    argNames:
    - c
    argTypes:
    - redisContext*
    assertStmts:
    - condition: (reply != NULL)
      pos:
        line_end: 1074
        line_start: 1074
        source_file: /src/hiredis/test.c
    - condition: (reply != NULL)
      pos:
        line_end: 1090
        line_start: 1090
        source_file: /src/hiredis/test.c
    - condition: (reply != NULL)
      pos:
        line_end: 1098
        line_start: 1098
        source_file: /src/hiredis/test.c
    - condition: ((reply = redisCommand(c, "GET key:0")) != NULL)
      pos:
        line_end: 1108
        line_start: 1108
        source_file: /src/hiredis/test.c
    - condition: (redisGetReply(c, (void**)&reply) == REDIS_OK)
      pos:
        line_end: 1121
        line_start: 1121
        source_file: /src/hiredis/test.c
    - condition: ((reply = redisCommand(c, "GET key:0")) != NULL)
      pos:
        line_end: 1082
        line_start: 1082
        source_file: /src/hiredis/test.c
    - condition: ((reply = redisCommand(c, "SET key:0 invalid")) != NULL)
      pos:
        line_end: 1110
        line_start: 1110
        source_file: /src/hiredis/test.c
    - condition: (old != NULL)
      pos:
        line_end: 1126
        line_start: 1126
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 1134
      start: 1062
    functionDepth: 2
    functionLinenumber: 1062
    functionLinenumberEnd: 1134
    functionName: test_resp3_push_handler
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - freeReplyObject
    - test
    - assert
    - test_cond
    - redisCommand
    - send_client_tracking
    - send_hello
    - redisGetReply
    - redisSetPushCallback
    linkageType: ''
    returnType: void
    signature: void test_resp3_push_handler(redisContext *c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: REDIS_OPTIONS_SET_TCP
      Src: /src/hiredis/test.c:1138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - config
    argTypes:
    - struct config
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1140
      start: 1136
    functionDepth: 1
    functionLinenumber: 1136
    functionLinenumberEnd: 1140
    functionName: get_redis_tcp_options
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - REDIS_OPTIONS_SET_TCP
    linkageType: ''
    returnType: redisOptions
    signature: redisOptions get_redis_tcp_options(struct config config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test
      Src: /src/hiredis/test.c:1147,1
    - Dst: get_redis_tcp_options
      Src: /src/hiredis/test.c:1148,1
    - Dst: assert
      Src: /src/hiredis/test.c:1149,1
    - Dst: redisConnectWithOptions
      Src: /src/hiredis/test.c:1149,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1150,1
    - Dst: redisFree
      Src: /src/hiredis/test.c:1151,1
    - Dst: test
      Src: /src/hiredis/test.c:1153,1
    - Dst: get_redis_tcp_options
      Src: /src/hiredis/test.c:1154,1
    - Dst: assert
      Src: /src/hiredis/test.c:1155,1
    - Dst: redisAsyncConnectWithOptions
      Src: /src/hiredis/test.c:1155,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1156,1
    - Dst: redisAsyncFree
      Src: /src/hiredis/test.c:1157,1
    - Dst: test
      Src: /src/hiredis/test.c:1159,1
    - Dst: get_redis_tcp_options
      Src: /src/hiredis/test.c:1160,1
    - Dst: assert
      Src: /src/hiredis/test.c:1162,1
    - Dst: redisConnectWithOptions
      Src: /src/hiredis/test.c:1162,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1163,1
    - Dst: redisFree
      Src: /src/hiredis/test.c:1164,1
    - Dst: test
      Src: /src/hiredis/test.c:1166,1
    - Dst: get_redis_tcp_options
      Src: /src/hiredis/test.c:1167,1
    - Dst: assert
      Src: /src/hiredis/test.c:1169,1
    - Dst: redisConnectWithOptions
      Src: /src/hiredis/test.c:1169,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1170,1
    - Dst: redisFree
      Src: /src/hiredis/test.c:1171,1
    - Dst: test
      Src: /src/hiredis/test.c:1173,1
    - Dst: get_redis_tcp_options
      Src: /src/hiredis/test.c:1174,1
    - Dst: assert
      Src: /src/hiredis/test.c:1176,1
    - Dst: redisAsyncConnectWithOptions
      Src: /src/hiredis/test.c:1176,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1177,1
    - Dst: redisAsyncFree
      Src: /src/hiredis/test.c:1178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 1
    argNames:
    - config
    argTypes:
    - struct config
    assertStmts:
    - condition: ((ac = redisAsyncConnectWithOptions(&options)) != NULL)
      pos:
        line_end: 1154
        line_start: 1154
        source_file: /src/hiredis/test.c
    - condition: ((c = redisConnectWithOptions(&options)) != NULL)
      pos:
        line_end: 1148
        line_start: 1148
        source_file: /src/hiredis/test.c
    - condition: ((c = redisConnectWithOptions(&options)) != NULL)
      pos:
        line_end: 1168
        line_start: 1168
        source_file: /src/hiredis/test.c
    - condition: ((ac = redisAsyncConnectWithOptions(&options)) != NULL)
      pos:
        line_end: 1175
        line_start: 1175
        source_file: /src/hiredis/test.c
    - condition: ((c = redisConnectWithOptions(&options)) != NULL)
      pos:
        line_end: 1161
        line_start: 1161
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 1179
      start: 1142
    functionDepth: 2
    functionLinenumber: 1142
    functionLinenumberEnd: 1179
    functionName: test_resp3_push_options
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - redisFree
    - redisAsyncConnectWithOptions
    - test
    - assert
    - test_cond
    - redisConnectWithOptions
    - redisAsyncFree
    - get_redis_tcp_options
    linkageType: ''
    returnType: void
    signature: void test_resp3_push_options(struct config config)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1184
      start: 1181
    functionDepth: 0
    functionLinenumber: 1181
    functionLinenumberEnd: 1184
    functionName: free_privdata
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void free_privdata(void *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test
      Src: /src/hiredis/test.c:1191,1
    - Dst: get_redis_tcp_options
      Src: /src/hiredis/test.c:1192,1
    - Dst: REDIS_OPTIONS_SET_PRIVDATA
      Src: /src/hiredis/test.c:1193,1
    - Dst: assert
      Src: /src/hiredis/test.c:1194,1
    - Dst: redisConnectWithOptions
      Src: /src/hiredis/test.c:1194,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1195,1
    - Dst: test
      Src: /src/hiredis/test.c:1197,1
    - Dst: redisFree
      Src: /src/hiredis/test.c:1198,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - config
    argTypes:
    - struct config
    assertStmts:
    - condition: ((c = redisConnectWithOptions(&options)) != NULL)
      pos:
        line_end: 1193
        line_start: 1193
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 1200
      start: 1186
    functionDepth: 2
    functionLinenumber: 1186
    functionLinenumberEnd: 1200
    functionName: test_privdata_hooks
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - redisFree
    - test
    - REDIS_OPTIONS_SET_PRIVDATA
    - assert
    - test_cond
    - redisConnectWithOptions
    - get_redis_tcp_options
    linkageType: ''
    returnType: void
    signature: void test_privdata_hooks(struct config config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: do_connect
      Src: /src/hiredis/test.c:1207,1
    - Dst: test
      Src: /src/hiredis/test.c:1209,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1210,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1211,1
    - Dst: strcasecmp
      Src: /src/hiredis/test.c:1212,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1213,1
    - Dst: test
      Src: /src/hiredis/test.c:1215,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1216,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1217,1
    - Dst: strcasecmp
      Src: /src/hiredis/test.c:1218,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1219,1
    - Dst: test
      Src: /src/hiredis/test.c:1221,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1222,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1223,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1224,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1225,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1226,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1227,1
    - Dst: test
      Src: /src/hiredis/test.c:1229,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1230,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1231,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1232,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1233,1
    - Dst: memcmp
      Src: /src/hiredis/test.c:1234,1
    - Dst: test
      Src: /src/hiredis/test.c:1236,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1237,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1238,1
    - Dst: test
      Src: /src/hiredis/test.c:1240,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1241,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1242,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1243,1
    - Dst: test
      Src: /src/hiredis/test.c:1246,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1247,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1248,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1249,1
    - Dst: test
      Src: /src/hiredis/test.c:1251,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1252,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1252,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1253,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1253,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1254,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1255,1
    - Dst: memcmp
      Src: /src/hiredis/test.c:1257,1
    - Dst: memcmp
      Src: /src/hiredis/test.c:1258,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1259,1
    - Dst: test
      Src: /src/hiredis/test.c:1263,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1264,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1264,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1265,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1265,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1266,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1266,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1267,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1268,1
    - Dst: memcmp
      Src: /src/hiredis/test.c:1272,1
    - Dst: memcmp
      Src: /src/hiredis/test.c:1273,1
    - Dst: strcasecmp
      Src: /src/hiredis/test.c:1275,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1276,1
    - Dst: test
      Src: /src/hiredis/test.c:1278,1
    - Dst: redisCommandArgv
      Src: /src/hiredis/test.c:1281,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1282,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1283,1
    - Dst: test
      Src: /src/hiredis/test.c:1286,1
    - Dst: assert
      Src: /src/hiredis/test.c:1287,1
    - Dst: redisAppendCommand
      Src: /src/hiredis/test.c:1287,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1288,1
    - Dst: redisGetReply
      Src: /src/hiredis/test.c:1288,1
    - Dst: get_redis_version
      Src: /src/hiredis/test.c:1290,1
    - Dst: test_resp3_push_handler
      Src: /src/hiredis/test.c:1291,1
    - Dst: test_resp3_push_options
      Src: /src/hiredis/test.c:1292,1
    - Dst: test_privdata_hooks
      Src: /src/hiredis/test.c:1294,1
    - Dst: disconnect
      Src: /src/hiredis/test.c:1296,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 58
    argCount: 1
    argNames:
    - config
    argTypes:
    - struct config
    assertStmts:
    - condition: (redisAppendCommand(c, "PING") == REDIS_OK)
      pos:
        line_end: 1286
        line_start: 1286
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 1297
      start: 1202
    functionDepth: 3
    functionLinenumber: 1202
    functionLinenumberEnd: 1297
    functionName: test_blocking_connection
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - freeReplyObject
    - memcmp
    - test
    - disconnect
    - test_resp3_push_options
    - test_resp3_push_handler
    - strcmp
    - assert
    - test_cond
    - redisCommand
    - get_redis_version
    - strcasecmp
    - redisCommandArgv
    - redisAppendCommand
    - redisGetReply
    - do_connect
    - test_privdata_hooks
    linkageType: ''
    returnType: void
    signature: void test_blocking_connection(struct config config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1302,1
    - Dst: fprintf
      Src: /src/hiredis/test.c:1306,1
    - Dst: exit
      Src: /src/hiredis/test.c:1307,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1311,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - c
    argTypes:
    - redisContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1314
      start: 1300
    functionDepth: 1
    functionLinenumber: 1300
    functionLinenumberEnd: 1314
    functionName: detect_debug_sleep
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - fprintf
    - freeReplyObject
    - redisCommand
    - exit
    linkageType: ''
    returnType: int
    signature: int detect_debug_sleep(redisContext *c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: do_connect
      Src: /src/hiredis/test.c:1323,1
    - Dst: test
      Src: /src/hiredis/test.c:1324,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1325,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1326,1
    - Dst: redisSetTimeout
      Src: /src/hiredis/test.c:1327,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1328,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1329,1
    - Dst: memcmp
      Src: /src/hiredis/test.c:1329,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1330,1
    - Dst: disconnect
      Src: /src/hiredis/test.c:1331,1
    - Dst: do_connect
      Src: /src/hiredis/test.c:1333,1
    - Dst: test
      Src: /src/hiredis/test.c:1334,1
    - Dst: detect_debug_sleep
      Src: /src/hiredis/test.c:1335,1
    - Dst: redisAppendFormattedCommand
      Src: /src/hiredis/test.c:1336,1
    - Dst: strlen
      Src: /src/hiredis/test.c:1336,1
    - Dst: redisContext*::funcs::write
      Src: /src/hiredis/test.c:1339,1
    - Dst: assert
      Src: /src/hiredis/test.c:1340,1
    - Dst: sdslen
      Src: /src/hiredis/test.c:1340,1
    - Dst: sdsfree
      Src: /src/hiredis/test.c:1341,1
    - Dst: sdsempty
      Src: /src/hiredis/test.c:1342,1
    - Dst: redisSetTimeout
      Src: /src/hiredis/test.c:1344,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1345,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1347,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1348,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1350,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1351,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1353,1
    - Dst: millisleep
      Src: /src/hiredis/test.c:1356,1
    - Dst: test_skipped
      Src: /src/hiredis/test.c:1358,1
    - Dst: test
      Src: /src/hiredis/test.c:1361,1
    - Dst: do_reconnect
      Src: /src/hiredis/test.c:1362,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1363,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1364,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1364,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1365,1
    - Dst: test
      Src: /src/hiredis/test.c:1367,1
    - Dst: do_reconnect
      Src: /src/hiredis/test.c:1370,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1371,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1372,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1372,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1373,1
    - Dst: disconnect
      Src: /src/hiredis/test.c:1375,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 1
    argNames:
    - config
    argTypes:
    - struct config
    assertStmts:
    - condition: (s == (ssize_t)sdslen(c->obuf))
      pos:
        line_end: 1339
        line_start: 1339
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 1376
      start: 1316
    functionDepth: 3
    functionLinenumber: 1316
    functionLinenumberEnd: 1376
    functionName: test_blocking_connection_timeouts
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - redisContext*::funcs::write
    - assert
    - freeReplyObject
    - test
    - strcmp
    - test_cond
    - strlen
    - disconnect
    - test_skipped
    - millisleep
    - do_connect
    - redisSetTimeout
    - memcmp
    - sdsfree
    - sdsempty
    - sdslen
    - redisAppendFormattedCommand
    - redisCommand
    - do_reconnect
    - detect_debug_sleep
    linkageType: ''
    returnType: void
    signature: void test_blocking_connection_timeouts(struct config config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: do_connect
      Src: /src/hiredis/test.c:1385,1
    - Dst: get_redis_version
      Src: /src/hiredis/test.c:1386,1
    - Dst: test
      Src: /src/hiredis/test.c:1388,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1389,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1393,1
    - Dst: strcasecmp
      Src: /src/hiredis/test.c:1393,1
    - Dst: redisGetReply
      Src: /src/hiredis/test.c:1394,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1395,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1397,1
    - Dst: assert
      Src: /src/hiredis/test.c:1406,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1407,1
    - Dst: redisFree
      Src: /src/hiredis/test.c:1409,1
    - Dst: do_connect
      Src: /src/hiredis/test.c:1411,1
    - Dst: test
      Src: /src/hiredis/test.c:1412,1
    - Dst: assert
      Src: /src/hiredis/test.c:1414,1
    - Dst: redisSetTimeout
      Src: /src/hiredis/test.c:1414,1
    - Dst: redisGetReply
      Src: /src/hiredis/test.c:1415,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1417,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1419,1
    - Dst: redisFree
      Src: /src/hiredis/test.c:1421,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 1
    argNames:
    - config
    argTypes:
    - struct config
    assertStmts:
    - condition: (redisSetTimeout(c,tv) == REDIS_OK)
      pos:
        line_end: 1413
        line_start: 1413
        source_file: /src/hiredis/test.c
    - condition: "(c->err == REDIS_ERR_EOF &&\n        strcmp(c->errstr,\"Server closed
        the connection\") == 0)"
      pos:
        line_end: 1406
        line_start: 1405
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 1422
      start: 1378
    functionDepth: 3
    functionLinenumber: 1378
    functionLinenumberEnd: 1422
    functionName: test_blocking_io_errors
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - freeReplyObject
    - redisFree
    - test
    - strcmp
    - assert
    - test_cond
    - redisCommand
    - get_redis_version
    - strcasecmp
    - redisGetReply
    - do_connect
    - redisSetTimeout
    linkageType: ''
    returnType: void
    signature: void test_blocking_io_errors(struct config config)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: test
      Src: /src/hiredis/test.c:1427,1
    - Dst: redisConnectWithTimeout
      Src: /src/hiredis/test.c:1433,1
    - Dst: redisConnectUnixWithTimeout
      Src: /src/hiredis/test.c:1435,1
    - Dst: redisTestPanic
      Src: /src/hiredis/test.c:1437,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1440,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1440,1
    - Dst: redisFree
      Src: /src/hiredis/test.c:1441,1
    - Dst: test
      Src: /src/hiredis/test.c:1443,1
    - Dst: redisConnectWithTimeout
      Src: /src/hiredis/test.c:1449,1
    - Dst: redisConnectUnixWithTimeout
      Src: /src/hiredis/test.c:1451,1
    - Dst: redisTestPanic
      Src: /src/hiredis/test.c:1453,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1456,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1456,1
    - Dst: redisFree
      Src: /src/hiredis/test.c:1457,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 1
    argNames:
    - config
    argTypes:
    - struct config
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1458
      start: 1424
    functionDepth: 1
    functionLinenumber: 1424
    functionLinenumberEnd: 1458
    functionName: test_invalid_timeout_errors
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - redisFree
    - test
    - redisTestPanic
    - redisConnectWithTimeout
    - redisConnectUnixWithTimeout
    - strcmp
    - test_cond
    linkageType: ''
    returnType: void
    signature: void test_invalid_timeout_errors(struct config config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hi_malloc
      Src: /src/hiredis/test.c:1463,1
    - Dst: fprintf
      Src: /src/hiredis/test.c:1465,1
    - Dst: exit
      Src: /src/hiredis/test.c:1466,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1470
      start: 1462
    functionDepth: 0
    functionLinenumber: 1462
    functionLinenumberEnd: 1470
    functionName: hi_malloc_safe
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - fprintf
    - exit
    - hi_malloc
    linkageType: ''
    returnType: void
    signature: void *hi_malloc_safe(size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: do_connect
      Src: /src/hiredis/test.c:1473,1
    - Dst: test
      Src: /src/hiredis/test.c:1478,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1480,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1480,1
    - Dst: hi_malloc_safe
      Src: /src/hiredis/test.c:1483,1
    - Dst: usec
      Src: /src/hiredis/test.c:1484,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1486,1
    - Dst: assert
      Src: /src/hiredis/test.c:1487,1
    - Dst: usec
      Src: /src/hiredis/test.c:1489,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1490,1
    - Dst: hi_free
      Src: /src/hiredis/test.c:1491,1
    - Dst: printf
      Src: /src/hiredis/test.c:1492,1
    - Dst: hi_malloc_safe
      Src: /src/hiredis/test.c:1494,1
    - Dst: usec
      Src: /src/hiredis/test.c:1495,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1497,1
    - Dst: assert
      Src: /src/hiredis/test.c:1498,1
    - Dst: assert
      Src: /src/hiredis/test.c:1499,1
    - Dst: usec
      Src: /src/hiredis/test.c:1501,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1502,1
    - Dst: hi_free
      Src: /src/hiredis/test.c:1503,1
    - Dst: printf
      Src: /src/hiredis/test.c:1504,1
    - Dst: hi_malloc_safe
      Src: /src/hiredis/test.c:1506,1
    - Dst: usec
      Src: /src/hiredis/test.c:1507,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1509,1
    - Dst: assert
      Src: /src/hiredis/test.c:1510,1
    - Dst: usec
      Src: /src/hiredis/test.c:1512,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1513,1
    - Dst: hi_free
      Src: /src/hiredis/test.c:1514,1
    - Dst: printf
      Src: /src/hiredis/test.c:1515,1
    - Dst: hi_malloc_safe
      Src: /src/hiredis/test.c:1518,1
    - Dst: redisAppendCommand
      Src: /src/hiredis/test.c:1520,1
    - Dst: usec
      Src: /src/hiredis/test.c:1521,1
    - Dst: assert
      Src: /src/hiredis/test.c:1523,1
    - Dst: redisGetReply
      Src: /src/hiredis/test.c:1523,1
    - Dst: assert
      Src: /src/hiredis/test.c:1524,1
    - Dst: usec
      Src: /src/hiredis/test.c:1526,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1527,1
    - Dst: hi_free
      Src: /src/hiredis/test.c:1528,1
    - Dst: printf
      Src: /src/hiredis/test.c:1529,1
    - Dst: hi_malloc_safe
      Src: /src/hiredis/test.c:1531,1
    - Dst: redisAppendCommand
      Src: /src/hiredis/test.c:1533,1
    - Dst: usec
      Src: /src/hiredis/test.c:1534,1
    - Dst: assert
      Src: /src/hiredis/test.c:1536,1
    - Dst: redisGetReply
      Src: /src/hiredis/test.c:1536,1
    - Dst: assert
      Src: /src/hiredis/test.c:1537,1
    - Dst: assert
      Src: /src/hiredis/test.c:1538,1
    - Dst: usec
      Src: /src/hiredis/test.c:1540,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1541,1
    - Dst: hi_free
      Src: /src/hiredis/test.c:1542,1
    - Dst: printf
      Src: /src/hiredis/test.c:1543,1
    - Dst: hi_malloc_safe
      Src: /src/hiredis/test.c:1545,1
    - Dst: redisAppendCommand
      Src: /src/hiredis/test.c:1547,1
    - Dst: usec
      Src: /src/hiredis/test.c:1548,1
    - Dst: assert
      Src: /src/hiredis/test.c:1550,1
    - Dst: redisGetReply
      Src: /src/hiredis/test.c:1550,1
    - Dst: assert
      Src: /src/hiredis/test.c:1551,1
    - Dst: usec
      Src: /src/hiredis/test.c:1553,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1554,1
    - Dst: hi_free
      Src: /src/hiredis/test.c:1555,1
    - Dst: printf
      Src: /src/hiredis/test.c:1556,1
    - Dst: disconnect
      Src: /src/hiredis/test.c:1558,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 81
    argCount: 1
    argNames:
    - config
    argTypes:
    - struct config
    assertStmts:
    - condition: (replies[i] != NULL && replies[i]->elements == 500)
      pos:
        line_end: 1498
        line_start: 1498
        source_file: /src/hiredis/test.c
    - condition: (replies[i] != NULL && replies[i]->type == REDIS_REPLY_INTEGER)
      pos:
        line_end: 1509
        line_start: 1509
        source_file: /src/hiredis/test.c
    - condition: (redisGetReply(c, (void*)&replies[i]) == REDIS_OK)
      pos:
        line_end: 1535
        line_start: 1535
        source_file: /src/hiredis/test.c
    - condition: (replies[i] != NULL && replies[i]->type == REDIS_REPLY_STATUS)
      pos:
        line_end: 1523
        line_start: 1523
        source_file: /src/hiredis/test.c
    - condition: (redisGetReply(c, (void*)&replies[i]) == REDIS_OK)
      pos:
        line_end: 1549
        line_start: 1549
        source_file: /src/hiredis/test.c
    - condition: (replies[i] != NULL && replies[i]->type == REDIS_REPLY_STATUS)
      pos:
        line_end: 1486
        line_start: 1486
        source_file: /src/hiredis/test.c
    - condition: (replies[i] != NULL && replies[i]->type == REDIS_REPLY_INTEGER)
      pos:
        line_end: 1550
        line_start: 1550
        source_file: /src/hiredis/test.c
    - condition: (replies[i] != NULL && replies[i]->type == REDIS_REPLY_ARRAY)
      pos:
        line_end: 1536
        line_start: 1536
        source_file: /src/hiredis/test.c
    - condition: (replies[i] != NULL && replies[i]->type == REDIS_REPLY_ARRAY)
      pos:
        line_end: 1497
        line_start: 1497
        source_file: /src/hiredis/test.c
    - condition: (redisGetReply(c, (void*)&replies[i]) == REDIS_OK)
      pos:
        line_end: 1522
        line_start: 1522
        source_file: /src/hiredis/test.c
    - condition: (replies[i] != NULL && replies[i]->elements == 500)
      pos:
        line_end: 1537
        line_start: 1537
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 1559
      start: 1472
    functionDepth: 3
    functionLinenumber: 1472
    functionLinenumberEnd: 1559
    functionName: test_throughput
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - freeReplyObject
    - hi_free
    - test
    - printf
    - disconnect
    - usec
    - assert
    - redisCommand
    - redisAppendCommand
    - redisGetReply
    - do_connect
    - hi_malloc_safe
    linkageType: ''
    returnType: void
    signature: void test_throughput(struct config config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisAsyncDisconnect
      Src: /src/hiredis/test.c:1675,1
    - Dst: event_base_loopbreak
      Src: /src/hiredis/test.c:1676,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ac
    argTypes:
    - redisAsyncContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1677
      start: 1674
    functionDepth: 1
    functionLinenumber: 1674
    functionLinenumberEnd: 1677
    functionName: async_disconnect
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - event_base_loopbreak
    - redisAsyncDisconnect
    linkageType: ''
    returnType: void
    signature: void async_disconnect(redisAsyncContext *ac)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/test.c:1682,1
    - Dst: exit
      Src: /src/hiredis/test.c:1683,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - fd
    - event
    - arg
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1684
      start: 1680
    functionDepth: 0
    functionLinenumber: 1680
    functionLinenumberEnd: 1684
    functionName: timeout_cb
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - printf
    - exit
    linkageType: ''
    returnType: void
    signature: void timeout_cb(int fd, short event, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/test.c:1689,1
    - Dst: exit
      Src: /src/hiredis/test.c:1690,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ac
    - r
    - privdata
    argTypes:
    - redisAsyncContext*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1691
      start: 1687
    functionDepth: 0
    functionLinenumber: 1687
    functionLinenumberEnd: 1691
    functionName: unexpected_cb
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - printf
    - exit
    linkageType: ''
    returnType: void
    signature: void unexpected_cb(redisAsyncContext *ac, void *r, void *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisConnectWithOptions
      Src: /src/hiredis/test.c:1695,1
    - Dst: assert
      Src: /src/hiredis/test.c:1696,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:1697,1
    - Dst: assert
      Src: /src/hiredis/test.c:1698,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:1699,1
    - Dst: disconnect
      Src: /src/hiredis/test.c:1700,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - options
    - channel
    - msg
    argTypes:
    - redisOptions*
    - char*
    - char*
    assertStmts:
    - condition: (reply->type == REDIS_REPLY_INTEGER && reply->integer == 1)
      pos:
        line_end: 1697
        line_start: 1697
        source_file: /src/hiredis/test.c
    - condition: (c != NULL)
      pos:
        line_end: 1695
        line_start: 1695
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 1701
      start: 1694
    functionDepth: 2
    functionLinenumber: 1694
    functionLinenumberEnd: 1701
    functionName: publish_msg
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - freeReplyObject
    - disconnect
    - assert
    - redisCommand
    - redisConnectWithOptions
    linkageType: ''
    returnType: void
    signature: void publish_msg(redisOptions *options, const char* channel, const
      char* msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/hiredis/test.c:1707,1
    - Dst: async_disconnect
      Src: /src/hiredis/test.c:1709,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - ac
    - r
    - privdata
    argTypes:
    - redisAsyncContext*
    - void*
    - void*
    assertStmts:
    - condition: (reply != NULL && reply->type == REDIS_REPLY_INTEGER)
      pos:
        line_end: 1706
        line_start: 1706
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 1710
      start: 1704
    functionDepth: 2
    functionLinenumber: 1704
    functionLinenumberEnd: 1710
    functionName: integer_cb
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - assert
    - async_disconnect
    linkageType: ''
    returnType: void
    signature: void integer_cb(redisAsyncContext *ac, void *r, void *privdata)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/hiredis/test.c:1719,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1723,1
    - Dst: assert
      Src: /src/hiredis/test.c:1724,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1724,1
    - Dst: publish_msg
      Src: /src/hiredis/test.c:1726,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1727,1
    - Dst: assert
      Src: /src/hiredis/test.c:1728,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1728,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1729,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/test.c:1734,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/test.c:1739,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1741,1
    - Dst: assert
      Src: /src/hiredis/test.c:1742,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1742,1
    - Dst: printf
      Src: /src/hiredis/test.c:1745,1
    - Dst: exit
      Src: /src/hiredis/test.c:1746,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 3
    argNames:
    - ac
    - r
    - privdata
    argTypes:
    - redisAsyncContext*
    - void*
    - void*
    assertStmts:
    - condition: "(reply != NULL &&\n           reply->type == (state->resp3 ? REDIS_REPLY_PUSH
        : REDIS_REPLY_ARRAY) &&\n           reply->elements == 3)"
      pos:
        line_end: 1720
        line_start: 1718
        source_file: /src/hiredis/test.c
    - condition: "(strcmp(reply->element[1]->str,\"mychannel\") == 0 &&\n               reply->element[2]->str
        == NULL)"
      pos:
        line_end: 1724
        line_start: 1723
        source_file: /src/hiredis/test.c
    - condition: "(strcmp(reply->element[1]->str,\"mychannel\") == 0 &&\n               strcmp(reply->element[2]->str,\"Hello!\")
        == 0)"
      pos:
        line_end: 1728
        line_start: 1727
        source_file: /src/hiredis/test.c
    - condition: "(strcmp(reply->element[1]->str,\"mychannel\") == 0 &&\n               reply->element[2]->str
        == NULL)"
      pos:
        line_end: 1742
        line_start: 1741
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 1748
      start: 1715
    functionDepth: 3
    functionLinenumber: 1715
    functionLinenumberEnd: 1748
    functionName: subscribe_cb
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - printf
    - strcmp
    - assert
    - publish_msg
    - exit
    - redisAsyncCommand
    linkageType: ''
    returnType: void
    signature: void subscribe_cb(redisAsyncContext *ac, void *r, void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/hiredis/test.c:1754,1
    - Dst: async_disconnect
      Src: /src/hiredis/test.c:1756,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - ac
    - r
    - privdata
    argTypes:
    - redisAsyncContext*
    - void*
    - void*
    assertStmts:
    - condition: (reply != NULL && reply->type == REDIS_REPLY_ARRAY)
      pos:
        line_end: 1753
        line_start: 1753
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 1757
      start: 1751
    functionDepth: 2
    functionLinenumber: 1751
    functionLinenumberEnd: 1757
    functionName: array_cb
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - assert
    - async_disconnect
    linkageType: ''
    returnType: void
    signature: void array_cb(redisAsyncContext *ac, void *r, void *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/hiredis/test.c:1762,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ac
    - r
    - privdata
    argTypes:
    - redisAsyncContext*
    - void*
    - void*
    assertStmts:
    - condition: (r == NULL)
      pos:
        line_end: 1761
        line_start: 1761
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 1765
      start: 1760
    functionDepth: 0
    functionLinenumber: 1760
    functionLinenumberEnd: 1765
    functionName: null_cb
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: void null_cb(redisAsyncContext *ac, void *r, void *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test
      Src: /src/hiredis/test.c:1768,1
    - Dst: event_base_new
      Src: /src/hiredis/test.c:1770,1
    - Dst: evtimer_new
      Src: /src/hiredis/test.c:1771,1
    - Dst: assert
      Src: /src/hiredis/test.c:1772,1
    - Dst: evtimer_assign
      Src: /src/hiredis/test.c:1774,1
    - Dst: evtimer_add
      Src: /src/hiredis/test.c:1776,1
    - Dst: get_redis_tcp_options
      Src: /src/hiredis/test.c:1779,1
    - Dst: redisAsyncConnectWithOptions
      Src: /src/hiredis/test.c:1780,1
    - Dst: assert
      Src: /src/hiredis/test.c:1781,1
    - Dst: redisLibeventAttach
      Src: /src/hiredis/test.c:1782,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/test.c:1786,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/test.c:1789,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1792,1
    - Dst: event_base_dispatch
      Src: /src/hiredis/test.c:1792,1
    - Dst: event_free
      Src: /src/hiredis/test.c:1793,1
    - Dst: event_base_free
      Src: /src/hiredis/test.c:1794,1
    - Dst: assert
      Src: /src/hiredis/test.c:1797,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - config
    argTypes:
    - struct config
    assertStmts:
    - condition: (timeout != NULL)
      pos:
        line_end: 1771
        line_start: 1771
        source_file: /src/hiredis/test.c
    - condition: (ac != NULL && ac->err == 0)
      pos:
        line_end: 1780
        line_start: 1780
        source_file: /src/hiredis/test.c
    - condition: (state.checkpoint == 3)
      pos:
        line_end: 1796
        line_start: 1796
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 1798
      start: 1767
    functionDepth: 2
    functionLinenumber: 1767
    functionLinenumberEnd: 1798
    functionName: test_pubsub_handling
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - redisAsyncConnectWithOptions
    - test
    - redisLibeventAttach
    - event_free
    - event_base_free
    - evtimer_add
    - evtimer_new
    - assert
    - evtimer_assign
    - test_cond
    - event_base_new
    - get_redis_tcp_options
    - redisAsyncCommand
    - event_base_dispatch
    linkageType: ''
    returnType: void
    signature: void test_pubsub_handling(struct config config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/test.c:1803,1
    - Dst: exit
      Src: /src/hiredis/test.c:1804,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ac
    - r
    argTypes:
    - redisAsyncContext*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1805
      start: 1801
    functionDepth: 0
    functionLinenumber: 1801
    functionLinenumberEnd: 1805
    functionName: unexpected_push_cb
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - printf
    - exit
    linkageType: ''
    returnType: void
    signature: void unexpected_push_cb(redisAsyncContext *ac, void *r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test
      Src: /src/hiredis/test.c:1808,1
    - Dst: event_base_new
      Src: /src/hiredis/test.c:1810,1
    - Dst: evtimer_new
      Src: /src/hiredis/test.c:1811,1
    - Dst: assert
      Src: /src/hiredis/test.c:1812,1
    - Dst: evtimer_assign
      Src: /src/hiredis/test.c:1814,1
    - Dst: evtimer_add
      Src: /src/hiredis/test.c:1816,1
    - Dst: get_redis_tcp_options
      Src: /src/hiredis/test.c:1819,1
    - Dst: redisAsyncConnectWithOptions
      Src: /src/hiredis/test.c:1820,1
    - Dst: assert
      Src: /src/hiredis/test.c:1821,1
    - Dst: redisLibeventAttach
      Src: /src/hiredis/test.c:1822,1
    - Dst: redisAsyncSetPushCallback
      Src: /src/hiredis/test.c:1825,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/test.c:1828,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/test.c:1832,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/test.c:1835,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/test.c:1836,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/test.c:1837,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/test.c:1839,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1842,1
    - Dst: event_base_dispatch
      Src: /src/hiredis/test.c:1842,1
    - Dst: event_free
      Src: /src/hiredis/test.c:1843,1
    - Dst: event_base_free
      Src: /src/hiredis/test.c:1844,1
    - Dst: assert
      Src: /src/hiredis/test.c:1847,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 1
    argNames:
    - config
    argTypes:
    - struct config
    assertStmts:
    - condition: (ac != NULL && ac->err == 0)
      pos:
        line_end: 1820
        line_start: 1820
        source_file: /src/hiredis/test.c
    - condition: (state.checkpoint == 6)
      pos:
        line_end: 1846
        line_start: 1846
        source_file: /src/hiredis/test.c
    - condition: (timeout != NULL)
      pos:
        line_end: 1811
        line_start: 1811
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 1848
      start: 1807
    functionDepth: 2
    functionLinenumber: 1807
    functionLinenumberEnd: 1848
    functionName: test_pubsub_handling_resp3
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - redisAsyncConnectWithOptions
    - test
    - redisLibeventAttach
    - redisAsyncSetPushCallback
    - event_free
    - event_base_free
    - evtimer_add
    - evtimer_new
    - assert
    - evtimer_assign
    - test_cond
    - event_base_new
    - get_redis_tcp_options
    - redisAsyncCommand
    - event_base_dispatch
    linkageType: ''
    returnType: void
    signature: void test_pubsub_handling_resp3(struct config config)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_base_loopbreak
      Src: /src/hiredis/test.c:1862,1
    - Dst: assert
      Src: /src/hiredis/test.c:1866,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1869,1
    - Dst: assert
      Src: /src/hiredis/test.c:1870,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1870,1
    - Dst: publish_msg
      Src: /src/hiredis/test.c:1872,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1874,1
    - Dst: assert
      Src: /src/hiredis/test.c:1875,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1875,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1876,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/test.c:1880,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/test.c:1881,1
    - Dst: printf
      Src: /src/hiredis/test.c:1883,1
    - Dst: exit
      Src: /src/hiredis/test.c:1884,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - ac
    - r
    - privdata
    argTypes:
    - redisAsyncContext*
    - void*
    - void*
    assertStmts:
    - condition: "(strcmp(reply->element[1]->str,\"mychannel\") == 0 &&\n               reply->element[2]->str
        == NULL)"
      pos:
        line_end: 1870
        line_start: 1869
        source_file: /src/hiredis/test.c
    - condition: "(reply->type == (state->resp3 ? REDIS_REPLY_PUSH : REDIS_REPLY_ARRAY)
        &&\n           reply->elements == 3)"
      pos:
        line_end: 1866
        line_start: 1865
        source_file: /src/hiredis/test.c
    - condition: "(strcmp(reply->element[1]->str,\"mychannel\") == 0 &&\n               strcmp(reply->element[2]->str,\"Hello!\")
        == 0)"
      pos:
        line_end: 1875
        line_start: 1874
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 1886
      start: 1854
    functionDepth: 3
    functionLinenumber: 1854
    functionLinenumberEnd: 1886
    functionName: subscribe_with_timeout_cb
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - printf
    - strcmp
    - event_base_loopbreak
    - assert
    - publish_msg
    - exit
    - redisAsyncCommand
    linkageType: ''
    returnType: void
    signature: void subscribe_with_timeout_cb(redisAsyncContext *ac, void *r, void
      *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test
      Src: /src/hiredis/test.c:1889,1
    - Dst: event_base_new
      Src: /src/hiredis/test.c:1891,1
    - Dst: evtimer_new
      Src: /src/hiredis/test.c:1892,1
    - Dst: assert
      Src: /src/hiredis/test.c:1893,1
    - Dst: evtimer_assign
      Src: /src/hiredis/test.c:1895,1
    - Dst: evtimer_add
      Src: /src/hiredis/test.c:1897,1
    - Dst: get_redis_tcp_options
      Src: /src/hiredis/test.c:1900,1
    - Dst: redisAsyncConnectWithOptions
      Src: /src/hiredis/test.c:1901,1
    - Dst: assert
      Src: /src/hiredis/test.c:1902,1
    - Dst: redisLibeventAttach
      Src: /src/hiredis/test.c:1903,1
    - Dst: redisAsyncSetTimeout
      Src: /src/hiredis/test.c:1907,1
    - Dst: redisAsyncSetPushCallback
      Src: /src/hiredis/test.c:1910,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/test.c:1913,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/test.c:1917,1
    - Dst: assert
      Src: /src/hiredis/test.c:1920,1
    - Dst: event_base_dispatch
      Src: /src/hiredis/test.c:1920,1
    - Dst: event_free
      Src: /src/hiredis/test.c:1921,1
    - Dst: event_base_free
      Src: /src/hiredis/test.c:1922,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:1925,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - config
    argTypes:
    - struct config
    assertStmts:
    - condition: (timeout != NULL)
      pos:
        line_end: 1892
        line_start: 1892
        source_file: /src/hiredis/test.c
    - condition: (event_base_dispatch(base) == 0)
      pos:
        line_end: 1919
        line_start: 1919
        source_file: /src/hiredis/test.c
    - condition: (ac != NULL && ac->err == 0)
      pos:
        line_end: 1901
        line_start: 1901
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 1926
      start: 1888
    functionDepth: 2
    functionLinenumber: 1888
    functionLinenumberEnd: 1926
    functionName: test_command_timeout_during_pubsub
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - redisAsyncConnectWithOptions
    - test
    - redisLibeventAttach
    - redisAsyncSetPushCallback
    - event_free
    - event_base_free
    - evtimer_add
    - evtimer_new
    - assert
    - evtimer_assign
    - redisAsyncSetTimeout
    - test_cond
    - event_base_new
    - get_redis_tcp_options
    - redisAsyncCommand
    - event_base_dispatch
    linkageType: ''
    returnType: void
    signature: void test_command_timeout_during_pubsub(struct config config)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/hiredis/test.c:1933,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1936,1
    - Dst: assert
      Src: /src/hiredis/test.c:1937,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1937,1
    - Dst: publish_msg
      Src: /src/hiredis/test.c:1938,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1940,1
    - Dst: assert
      Src: /src/hiredis/test.c:1941,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1941,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1942,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/test.c:1946,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/test.c:1950,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/test.c:1955,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1956,1
    - Dst: assert
      Src: /src/hiredis/test.c:1957,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1957,1
    - Dst: printf
      Src: /src/hiredis/test.c:1960,1
    - Dst: exit
      Src: /src/hiredis/test.c:1961,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - ac
    - r
    - privdata
    argTypes:
    - redisAsyncContext*
    - void*
    - void*
    assertStmts:
    - condition: "(reply != NULL && reply->type == REDIS_REPLY_ARRAY &&\n           reply->elements
        == 3)"
      pos:
        line_end: 1933
        line_start: 1932
        source_file: /src/hiredis/test.c
    - condition: (strcmp(reply->element[1]->str,"A") == 0)
      pos:
        line_end: 1936
        line_start: 1936
        source_file: /src/hiredis/test.c
    - condition: "(strcmp(reply->element[1]->str,\"A\") == 0 &&\n               strcmp(reply->element[2]->str,\"Hello!\")
        == 0)"
      pos:
        line_end: 1941
        line_start: 1940
        source_file: /src/hiredis/test.c
    - condition: (strcmp(reply->element[1]->str,"A") == 0)
      pos:
        line_end: 1956
        line_start: 1956
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 1963
      start: 1929
    functionDepth: 3
    functionLinenumber: 1929
    functionLinenumberEnd: 1963
    functionName: subscribe_channel_a_cb
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - printf
    - strcmp
    - assert
    - publish_msg
    - exit
    - redisAsyncCommand
    linkageType: ''
    returnType: void
    signature: void subscribe_channel_a_cb(redisAsyncContext *ac, void *r, void *privdata)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/hiredis/test.c:1971,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1974,1
    - Dst: assert
      Src: /src/hiredis/test.c:1975,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1975,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1977,1
    - Dst: assert
      Src: /src/hiredis/test.c:1978,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:1978,1
    - Dst: printf
      Src: /src/hiredis/test.c:1981,1
    - Dst: exit
      Src: /src/hiredis/test.c:1982,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - ac
    - r
    - privdata
    argTypes:
    - redisAsyncContext*
    - void*
    - void*
    assertStmts:
    - condition: "(reply != NULL && reply->type == REDIS_REPLY_ARRAY &&\n           reply->elements
        == 3)"
      pos:
        line_end: 1971
        line_start: 1970
        source_file: /src/hiredis/test.c
    - condition: (strcmp(reply->element[1]->str,"B") == 0)
      pos:
        line_end: 1974
        line_start: 1974
        source_file: /src/hiredis/test.c
    - condition: (strcmp(reply->element[1]->str,"B") == 0)
      pos:
        line_end: 1977
        line_start: 1977
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 1984
      start: 1966
    functionDepth: 0
    functionLinenumber: 1966
    functionLinenumberEnd: 1984
    functionName: subscribe_channel_b_cb
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - assert
    - printf
    - exit
    - strcmp
    linkageType: ''
    returnType: void
    signature: void subscribe_channel_b_cb(redisAsyncContext *ac, void *r, void *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test
      Src: /src/hiredis/test.c:1994,1
    - Dst: event_base_new
      Src: /src/hiredis/test.c:1996,1
    - Dst: evtimer_new
      Src: /src/hiredis/test.c:1997,1
    - Dst: assert
      Src: /src/hiredis/test.c:1998,1
    - Dst: evtimer_assign
      Src: /src/hiredis/test.c:2000,1
    - Dst: evtimer_add
      Src: /src/hiredis/test.c:2002,1
    - Dst: get_redis_tcp_options
      Src: /src/hiredis/test.c:2005,1
    - Dst: redisAsyncConnectWithOptions
      Src: /src/hiredis/test.c:2006,1
    - Dst: assert
      Src: /src/hiredis/test.c:2007,1
    - Dst: redisLibeventAttach
      Src: /src/hiredis/test.c:2008,1
    - Dst: redisAsyncSetPushCallback
      Src: /src/hiredis/test.c:2011,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/test.c:2015,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/test.c:2016,1
    - Dst: assert
      Src: /src/hiredis/test.c:2019,1
    - Dst: event_base_dispatch
      Src: /src/hiredis/test.c:2019,1
    - Dst: event_free
      Src: /src/hiredis/test.c:2020,1
    - Dst: event_base_free
      Src: /src/hiredis/test.c:2021,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:2024,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - config
    argTypes:
    - struct config
    assertStmts:
    - condition: (timeout != NULL)
      pos:
        line_end: 1997
        line_start: 1997
        source_file: /src/hiredis/test.c
    - condition: (ac != NULL && ac->err == 0)
      pos:
        line_end: 2006
        line_start: 2006
        source_file: /src/hiredis/test.c
    - condition: (event_base_dispatch(base) == 0)
      pos:
        line_end: 2018
        line_start: 2018
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 2025
      start: 1993
    functionDepth: 2
    functionLinenumber: 1993
    functionLinenumberEnd: 2025
    functionName: test_pubsub_multiple_channels
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - redisAsyncConnectWithOptions
    - test
    - redisLibeventAttach
    - redisAsyncSetPushCallback
    - event_free
    - event_base_free
    - evtimer_add
    - evtimer_new
    - assert
    - evtimer_assign
    - test_cond
    - event_base_new
    - get_redis_tcp_options
    - redisAsyncCommand
    - event_base_dispatch
    linkageType: ''
    returnType: void
    signature: void test_pubsub_multiple_channels(struct config config)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: event_base_loopbreak
      Src: /src/hiredis/test.c:2034,1
    - Dst: assert
      Src: /src/hiredis/test.c:2038,1
    - Dst: redisConnectWithOptions
      Src: /src/hiredis/test.c:2043,1
    - Dst: assert
      Src: /src/hiredis/test.c:2044,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:2045,1
    - Dst: assert
      Src: /src/hiredis/test.c:2046,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:2047,1
    - Dst: redisFree
      Src: /src/hiredis/test.c:2048,1
    - Dst: assert
      Src: /src/hiredis/test.c:2051,1
    - Dst: strstr
      Src: /src/hiredis/test.c:2051,1
    - Dst: redisConnectWithOptions
      Src: /src/hiredis/test.c:2052,1
    - Dst: assert
      Src: /src/hiredis/test.c:2053,1
    - Dst: redisCommand
      Src: /src/hiredis/test.c:2054,1
    - Dst: assert
      Src: /src/hiredis/test.c:2055,1
    - Dst: freeReplyObject
      Src: /src/hiredis/test.c:2056,1
    - Dst: redisFree
      Src: /src/hiredis/test.c:2057,1
    - Dst: assert
      Src: /src/hiredis/test.c:2060,1
    - Dst: strstr
      Src: /src/hiredis/test.c:2060,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/test.c:2062,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 3
    argNames:
    - ac
    - r
    - privdata
    argTypes:
    - redisAsyncContext*
    - void*
    - void*
    assertStmts:
    - condition: (reply != NULL && reply->type == REDIS_REPLY_STATUS)
      pos:
        line_end: 2037
        line_start: 2037
        source_file: /src/hiredis/test.c
    - condition: (strstr(reply->str,"first") != NULL)
      pos:
        line_end: 2050
        line_start: 2050
        source_file: /src/hiredis/test.c
    - condition: (c != NULL)
      pos:
        line_end: 2052
        line_start: 2052
        source_file: /src/hiredis/test.c
    - condition: (c != NULL)
      pos:
        line_end: 2043
        line_start: 2043
        source_file: /src/hiredis/test.c
    - condition: (strstr(reply->str,"second") != NULL)
      pos:
        line_end: 2059
        line_start: 2059
        source_file: /src/hiredis/test.c
    - condition: (reply->type == REDIS_REPLY_STATUS)
      pos:
        line_end: 2054
        line_start: 2054
        source_file: /src/hiredis/test.c
    - condition: (reply->type == REDIS_REPLY_STATUS)
      pos:
        line_end: 2045
        line_start: 2045
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 2064
      start: 2028
    functionDepth: 1
    functionLinenumber: 2028
    functionLinenumberEnd: 2064
    functionName: monitor_cb
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - freeReplyObject
    - redisFree
    - event_base_loopbreak
    - assert
    - redisCommand
    - redisConnectWithOptions
    - strstr
    - redisAsyncCommand
    linkageType: ''
    returnType: void
    signature: void monitor_cb(redisAsyncContext *ac, void *r, void *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: test
      Src: /src/hiredis/test.c:2071,1
    - Dst: event_base_new
      Src: /src/hiredis/test.c:2073,1
    - Dst: evtimer_new
      Src: /src/hiredis/test.c:2074,1
    - Dst: assert
      Src: /src/hiredis/test.c:2075,1
    - Dst: evtimer_assign
      Src: /src/hiredis/test.c:2077,1
    - Dst: evtimer_add
      Src: /src/hiredis/test.c:2079,1
    - Dst: get_redis_tcp_options
      Src: /src/hiredis/test.c:2082,1
    - Dst: redisAsyncConnectWithOptions
      Src: /src/hiredis/test.c:2083,1
    - Dst: assert
      Src: /src/hiredis/test.c:2084,1
    - Dst: redisLibeventAttach
      Src: /src/hiredis/test.c:2085,1
    - Dst: redisAsyncSetPushCallback
      Src: /src/hiredis/test.c:2088,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/test.c:2092,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:2095,1
    - Dst: event_base_dispatch
      Src: /src/hiredis/test.c:2095,1
    - Dst: event_free
      Src: /src/hiredis/test.c:2096,1
    - Dst: event_base_free
      Src: /src/hiredis/test.c:2097,1
    - Dst: assert
      Src: /src/hiredis/test.c:2100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - config
    argTypes:
    - struct config
    assertStmts:
    - condition: (timeout != NULL)
      pos:
        line_end: 2074
        line_start: 2074
        source_file: /src/hiredis/test.c
    - condition: (ac != NULL && ac->err == 0)
      pos:
        line_end: 2083
        line_start: 2083
        source_file: /src/hiredis/test.c
    - condition: (state.checkpoint == 3)
      pos:
        line_end: 2099
        line_start: 2099
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 2101
      start: 2070
    functionDepth: 2
    functionLinenumber: 2070
    functionLinenumberEnd: 2101
    functionName: test_monitor
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - redisAsyncConnectWithOptions
    - test
    - redisLibeventAttach
    - redisAsyncSetPushCallback
    - event_free
    - event_base_free
    - evtimer_add
    - evtimer_new
    - assert
    - evtimer_assign
    - test_cond
    - event_base_new
    - get_redis_tcp_options
    - redisAsyncCommand
    - event_base_dispatch
    linkageType: ''
    returnType: void
    signature: void test_monitor(struct config config)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2138
      start: 2134
    functionDepth: 0
    functionLinenumber: 2134
    functionLinenumberEnd: 2138
    functionName: asCleanup
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void asCleanup(void* data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/hiredis/test.c:2144,1
    - Dst: assert
      Src: /src/hiredis/test.c:2145,1
    - Dst: strcpy
      Src: /src/hiredis/test.c:2147,1
    - Dst: redisAsyncDisconnect
      Src: /src/hiredis/test.c:2154,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/test.c:2158,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - c
    - status
    argTypes:
    - redisAsyncContext*
    - int
    assertStmts:
    - condition: (t == &astest)
      pos:
        line_end: 2143
        line_start: 2143
        source_file: /src/hiredis/test.c
    - condition: (t->connects == 0)
      pos:
        line_end: 2144
        line_start: 2144
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 2160
      start: 2142
    functionDepth: 1
    functionLinenumber: 2142
    functionLinenumberEnd: 2160
    functionName: connectCallback
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - assert
    - redisAsyncDisconnect
    - redisAsyncCommand
    - strcpy
    linkageType: ''
    returnType: void
    signature: void connectCallback(redisAsyncContext *c, int status)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/hiredis/test.c:2162,1
    - Dst: assert
      Src: /src/hiredis/test.c:2163,1
    - Dst: strcpy
      Src: /src/hiredis/test.c:2165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - c
    - status
    argTypes:
    - redisAsyncContext*
    - int
    assertStmts:
    - condition: (c->data == (void*)&astest)
      pos:
        line_end: 2161
        line_start: 2161
        source_file: /src/hiredis/test.c
    - condition: (astest.disconnects == 0)
      pos:
        line_end: 2162
        line_start: 2162
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 2169
      start: 2161
    functionDepth: 0
    functionLinenumber: 2161
    functionLinenumberEnd: 2169
    functionName: disconnectCallback
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - assert
    - strcpy
    linkageType: ''
    returnType: void
    signature: void disconnectCallback(const redisAsyncContext *c, int status)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/hiredis/test.c:2175,1
    - Dst: strcpy
      Src: /src/hiredis/test.c:2178,1
    - Dst: assert
      Src: /src/hiredis/test.c:2182,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:2182,1
    - Dst: redisAsyncFree
      Src: /src/hiredis/test.c:2184,1
    - Dst: assert
      Src: /src/hiredis/test.c:2189,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:2189,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/test.c:2192,1
    - Dst: assert
      Src: /src/hiredis/test.c:2193,1
    - Dst: redisAsyncFree
      Src: /src/hiredis/test.c:2195,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 3
    argNames:
    - ac
    - _reply
    - _privdata
    argTypes:
    - struct redisAsyncContext*
    - void*
    - void*
    assertStmts:
    - condition: (t == &astest)
      pos:
        line_end: 2174
        line_start: 2174
        source_file: /src/hiredis/test.c
    - condition: (reply != NULL && reply->type == REDIS_REPLY_STATUS && strcmp(reply->str,
        "PONG") == 0)
      pos:
        line_end: 2181
        line_start: 2181
        source_file: /src/hiredis/test.c
    - condition: (reply != NULL && reply->type == REDIS_REPLY_STATUS && strcmp(reply->str,
        "PONG") == 0)
      pos:
        line_end: 2188
        line_start: 2188
        source_file: /src/hiredis/test.c
    - condition: (status == REDIS_OK)
      pos:
        line_end: 2192
        line_start: 2192
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 2198
      start: 2171
    functionDepth: 1
    functionLinenumber: 2171
    functionLinenumberEnd: 2198
    functionName: commandCallback
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - strcmp
    - assert
    - strcpy
    - redisAsyncFree
    - redisAsyncCommand
    linkageType: ''
    returnType: void
    signature: void commandCallback(struct redisAsyncContext *ac, void* _reply, void*
      _privdata)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/hiredis/test.c:2203,1
    - Dst: REDIS_OPTIONS_SET_TCP
      Src: /src/hiredis/test.c:2211,1
    - Dst: REDIS_OPTIONS_SET_TCP
      Src: /src/hiredis/test.c:2215,1
    - Dst: redisConnectUnix
      Src: /src/hiredis/test.c:2222,1
    - Dst: disconnect
      Src: /src/hiredis/test.c:2224,1
    - Dst: printf
      Src: /src/hiredis/test.c:2225,1
    - Dst: redisAsyncConnectWithOptions
      Src: /src/hiredis/test.c:2229,1
    - Dst: assert
      Src: /src/hiredis/test.c:2230,1
    - Dst: redisPollAttach
      Src: /src/hiredis/test.c:2234,1
    - Dst: redisAsyncSetConnectCallbackNC
      Src: /src/hiredis/test.c:2235,1
    - Dst: redisAsyncSetDisconnectCallback
      Src: /src/hiredis/test.c:2236,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 2
    argNames:
    - config
    - testno
    argTypes:
    - struct config
    - astest_no
    assertStmts:
    - condition: (c)
      pos:
        line_end: 2229
        line_start: 2229
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 2238
      start: 2200
    functionDepth: 2
    functionLinenumber: 2200
    functionLinenumberEnd: 2238
    functionName: do_aconnect
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - redisAsyncConnectWithOptions
    - REDIS_OPTIONS_SET_TCP
    - printf
    - disconnect
    - redisAsyncSetDisconnectCallback
    - assert
    - redisAsyncSetConnectCallbackNC
    - memset
    - redisConnectUnix
    - redisPollAttach
    linkageType: ''
    returnType: redisAsyncContext
    signature: redisAsyncContext *do_aconnect(struct config config, astest_no testno)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/test.c:2241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2242
      start: 2240
    functionDepth: 0
    functionLinenumber: 2240
    functionLinenumberEnd: 2242
    functionName: as_printerr
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void as_printerr(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2249
      start: 2244
    functionDepth: 0
    functionLinenumber: 2244
    functionLinenumberEnd: 2249
    functionName: ASASSERT
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ASASSERT(e)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: test
      Src: /src/hiredis/test.c:2255,1
    - Dst: do_aconnect
      Src: /src/hiredis/test.c:2256,1
    - Dst: assert
      Src: /src/hiredis/test.c:2257,1
    - Dst: redisPollTick
      Src: /src/hiredis/test.c:2259,1
    - Dst: assert
      Src: /src/hiredis/test.c:2260,1
    - Dst: ASASSERT
      Src: /src/hiredis/test.c:2261,1
    - Dst: assert
      Src: /src/hiredis/test.c:2262,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:2263,1
    - Dst: test
      Src: /src/hiredis/test.c:2265,1
    - Dst: assert
      Src: /src/hiredis/test.c:2266,1
    - Dst: redisAsyncFree
      Src: /src/hiredis/test.c:2267,1
    - Dst: assert
      Src: /src/hiredis/test.c:2268,1
    - Dst: assert
      Src: /src/hiredis/test.c:2269,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:2270,1
    - Dst: test
      Src: /src/hiredis/test.c:2274,1
    - Dst: do_aconnect
      Src: /src/hiredis/test.c:2277,1
    - Dst: assert
      Src: /src/hiredis/test.c:2278,1
    - Dst: assert
      Src: /src/hiredis/test.c:2279,1
    - Dst: redisPollTick
      Src: /src/hiredis/test.c:2281,1
    - Dst: assert
      Src: /src/hiredis/test.c:2282,1
    - Dst: assert
      Src: /src/hiredis/test.c:2287,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:2288,1
    - Dst: test
      Src: /src/hiredis/test.c:2293,1
    - Dst: do_aconnect
      Src: /src/hiredis/test.c:2294,1
    - Dst: redisPollTick
      Src: /src/hiredis/test.c:2296,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/test.c:2297,1
    - Dst: assert
      Src: /src/hiredis/test.c:2298,1
    - Dst: redisPollTick
      Src: /src/hiredis/test.c:2300,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:2301,1
    - Dst: test
      Src: /src/hiredis/test.c:2307,1
    - Dst: do_aconnect
      Src: /src/hiredis/test.c:2309,1
    - Dst: redisPollTick
      Src: /src/hiredis/test.c:2311,1
    - Dst: millisleep
      Src: /src/hiredis/test.c:2313,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/test.c:2314,1
    - Dst: assert
      Src: /src/hiredis/test.c:2315,1
    - Dst: redisPollTick
      Src: /src/hiredis/test.c:2317,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:2318,1
    - Dst: test
      Src: /src/hiredis/test.c:2325,1
    - Dst: do_aconnect
      Src: /src/hiredis/test.c:2326,1
    - Dst: redisPollTick
      Src: /src/hiredis/test.c:2328,1
    - Dst: assert
      Src: /src/hiredis/test.c:2329,1
    - Dst: assert
      Src: /src/hiredis/test.c:2330,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:2331,1
    - Dst: test
      Src: /src/hiredis/test.c:2336,1
    - Dst: do_aconnect
      Src: /src/hiredis/test.c:2337,1
    - Dst: redisPollTick
      Src: /src/hiredis/test.c:2340,1
    - Dst: assert
      Src: /src/hiredis/test.c:2341,1
    - Dst: assert
      Src: /src/hiredis/test.c:2342,1
    - Dst: assert
      Src: /src/hiredis/test.c:2343,1
    - Dst: test_cond
      Src: /src/hiredis/test.c:2344,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 68
    argCount: 1
    argNames:
    - config
    argTypes:
    - struct config
    assertStmts:
    - condition: (astest.connects == 1)
      pos:
        line_end: 2259
        line_start: 2259
        source_file: /src/hiredis/test.c
    - condition: (astest.disconnects == 1)
      pos:
        line_end: 2342
        line_start: 2342
        source_file: /src/hiredis/test.c
    - condition: (c)
      pos:
        line_end: 2256
        line_start: 2256
        source_file: /src/hiredis/test.c
    - condition: (astest.ac != NULL)
      pos:
        line_end: 2265
        line_start: 2265
        source_file: /src/hiredis/test.c
    - condition: (astest.disconnects == 1)
      pos:
        line_end: 2267
        line_start: 2267
        source_file: /src/hiredis/test.c
    - condition: (astest.ac == NULL)
      pos:
        line_end: 2268
        line_start: 2268
        source_file: /src/hiredis/test.c
    - condition: (c)
      pos:
        line_end: 2277
        line_start: 2277
        source_file: /src/hiredis/test.c
    - condition: (astest.ac == NULL)
      pos:
        line_end: 2286
        line_start: 2286
        source_file: /src/hiredis/test.c
    - condition: (astest.connected == 0)
      pos:
        line_end: 2328
        line_start: 2328
        source_file: /src/hiredis/test.c
    - condition: (astest.disconnects == 0)
      pos:
        line_end: 2261
        line_start: 2261
        source_file: /src/hiredis/test.c
    - condition: (astest.connected == -1)
      pos:
        line_end: 2281
        line_start: 2281
        source_file: /src/hiredis/test.c
    - condition: (status == REDIS_OK)
      pos:
        line_end: 2297
        line_start: 2297
        source_file: /src/hiredis/test.c
    - condition: (c->err == 0)
      pos:
        line_end: 2278
        line_start: 2278
        source_file: /src/hiredis/test.c
    - condition: (status == REDIS_OK)
      pos:
        line_end: 2314
        line_start: 2314
        source_file: /src/hiredis/test.c
    - condition: (astest.connects == 1)
      pos:
        line_end: 2329
        line_start: 2329
        source_file: /src/hiredis/test.c
    - condition: (astest.connected == 0)
      pos:
        line_end: 2340
        line_start: 2340
        source_file: /src/hiredis/test.c
    - condition: (astest.connects == 1)
      pos:
        line_end: 2341
        line_start: 2341
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 2345
      start: 2250
    functionDepth: 3
    functionLinenumber: 2250
    functionLinenumberEnd: 2345
    functionName: test_async_polling
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - do_aconnect
    - test
    - ASASSERT
    - assert
    - test_cond
    - millisleep
    - redisAsyncFree
    - redisPollTick
    - redisAsyncCommand
    linkageType: ''
    returnType: void
    signature: void test_async_polling(struct config config)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/hiredis/test.c:2366,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:2369,1
    - Dst: atoi
      Src: /src/hiredis/test.c:2371,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:2372,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:2375,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:2377,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:2379,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:2382,1
    - Dst: atoi
      Src: /src/hiredis/test.c:2384,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:2385,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:2388,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:2391,1
    - Dst: strcmp
      Src: /src/hiredis/test.c:2394,1
    - Dst: fprintf
      Src: /src/hiredis/test.c:2399,1
    - Dst: exit
      Src: /src/hiredis/test.c:2400,1
    - Dst: signal
      Src: /src/hiredis/test.c:2407,1
    - Dst: access
      Src: /src/hiredis/test.c:2409,1
    - Dst: test_allocator_injection
      Src: /src/hiredis/test.c:2416,1
    - Dst: test_format_commands
      Src: /src/hiredis/test.c:2418,1
    - Dst: test_reply_reader
      Src: /src/hiredis/test.c:2419,1
    - Dst: test_blocking_connection_errors
      Src: /src/hiredis/test.c:2420,1
    - Dst: test_free_null
      Src: /src/hiredis/test.c:2421,1
    - Dst: printf
      Src: /src/hiredis/test.c:2423,1
    - Dst: test_blocking_connection
      Src: /src/hiredis/test.c:2425,1
    - Dst: test_blocking_connection_timeouts
      Src: /src/hiredis/test.c:2426,1
    - Dst: test_blocking_io_errors
      Src: /src/hiredis/test.c:2427,1
    - Dst: test_invalid_timeout_errors
      Src: /src/hiredis/test.c:2428,1
    - Dst: test_append_formatted_commands
      Src: /src/hiredis/test.c:2429,1
    - Dst: test_tcp_options
      Src: /src/hiredis/test.c:2430,1
    - Dst: test_throughput
      Src: /src/hiredis/test.c:2431,1
    - Dst: printf
      Src: /src/hiredis/test.c:2433,1
    - Dst: printf
      Src: /src/hiredis/test.c:2435,1
    - Dst: test_blocking_connection
      Src: /src/hiredis/test.c:2437,1
    - Dst: test_blocking_connection_timeouts
      Src: /src/hiredis/test.c:2438,1
    - Dst: test_blocking_io_errors
      Src: /src/hiredis/test.c:2439,1
    - Dst: test_invalid_timeout_errors
      Src: /src/hiredis/test.c:2440,1
    - Dst: test_unix_keepalive
      Src: /src/hiredis/test.c:2441,1
    - Dst: test_throughput
      Src: /src/hiredis/test.c:2442,1
    - Dst: test_skipped
      Src: /src/hiredis/test.c:2444,1
    - Dst: redisInitOpenSSL
      Src: /src/hiredis/test.c:2450,1
    - Dst: redisCreateSSLContext
      Src: /src/hiredis/test.c:2451,1
    - Dst: assert
      Src: /src/hiredis/test.c:2452,1
    - Dst: printf
      Src: /src/hiredis/test.c:2454,1
    - Dst: test_blocking_connection
      Src: /src/hiredis/test.c:2457,1
    - Dst: test_blocking_connection_timeouts
      Src: /src/hiredis/test.c:2458,1
    - Dst: test_blocking_io_errors
      Src: /src/hiredis/test.c:2459,1
    - Dst: test_invalid_timeout_errors
      Src: /src/hiredis/test.c:2460,1
    - Dst: test_append_formatted_commands
      Src: /src/hiredis/test.c:2461,1
    - Dst: test_throughput
      Src: /src/hiredis/test.c:2462,1
    - Dst: redisFreeSSLContext
      Src: /src/hiredis/test.c:2464,1
    - Dst: printf
      Src: /src/hiredis/test.c:2471,1
    - Dst: do_connect
      Src: /src/hiredis/test.c:2475,1
    - Dst: get_redis_version
      Src: /src/hiredis/test.c:2476,1
    - Dst: disconnect
      Src: /src/hiredis/test.c:2477,1
    - Dst: test_pubsub_handling
      Src: /src/hiredis/test.c:2479,1
    - Dst: test_pubsub_multiple_channels
      Src: /src/hiredis/test.c:2480,1
    - Dst: test_monitor
      Src: /src/hiredis/test.c:2481,1
    - Dst: test_pubsub_handling_resp3
      Src: /src/hiredis/test.c:2483,1
    - Dst: test_command_timeout_during_pubsub
      Src: /src/hiredis/test.c:2484,1
    - Dst: printf
      Src: /src/hiredis/test.c:2489,1
    - Dst: test_async_polling
      Src: /src/hiredis/test.c:2490,1
    - Dst: printf
      Src: /src/hiredis/test.c:2493,1
    - Dst: test_async_polling
      Src: /src/hiredis/test.c:2494,1
    - Dst: printf
      Src: /src/hiredis/test.c:2498,1
    - Dst: printf
      Src: /src/hiredis/test.c:2500,1
    - Dst: test_blocking_connection
      Src: /src/hiredis/test.c:2502,1
    - Dst: test_skipped
      Src: /src/hiredis/test.c:2504,1
    - Dst: printf
      Src: /src/hiredis/test.c:2509,1
    - Dst: printf
      Src: /src/hiredis/test.c:2511,1
    - Dst: printf
      Src: /src/hiredis/test.c:2516,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 146
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts:
    - condition: (_ssl_ctx != NULL)
      pos:
        line_end: 2451
        line_start: 2451
        source_file: /src/hiredis/test.c
    constantsTouched: []
    func_position:
      end: 2518
      start: 2348
    functionDepth: 4
    functionLinenumber: 2348
    functionLinenumberEnd: 2518
    functionName: main
    functionSourceFile: /src/hiredis/test.c
    functionUses: 0
    functionsReached:
    - printf
    - test_monitor
    - test_pubsub_handling
    - test_format_commands
    - assert
    - test_blocking_io_errors
    - test_pubsub_handling_resp3
    - test_throughput
    - test_tcp_options
    - strcmp
    - test_reply_reader
    - test_blocking_connection_timeouts
    - exit
    - test_blocking_connection
    - test_command_timeout_during_pubsub
    - atoi
    - signal
    - disconnect
    - test_skipped
    - test_free_null
    - test_invalid_timeout_errors
    - do_connect
    - access
    - test_unix_keepalive
    - test_allocator_injection
    - test_blocking_connection_errors
    - fprintf
    - redisInitOpenSSL
    - test_append_formatted_commands
    - redisCreateSSLContext
    - test_pubsub_multiple_channels
    - test_async_polling
    - get_redis_version
    - redisFreeSSLContext
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mallocFn
      Src: /src/hiredis/alloc.h:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 60
    functionName: hi_malloc
    functionSourceFile: /src/hiredis/alloc.h
    functionUses: 1
    functionsReached:
    - mallocFn
    linkageType: ''
    returnType: void
    signature: void *hi_malloc(size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: callocFn
      Src: /src/hiredis/alloc.h:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - nmemb
    - size
    argTypes:
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 68
    functionName: hi_calloc
    functionSourceFile: /src/hiredis/alloc.h
    functionUses: 1
    functionsReached:
    - callocFn
    linkageType: ''
    returnType: void
    signature: void *hi_calloc(size_t nmemb, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reallocFn
      Src: /src/hiredis/alloc.h:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 72
    functionName: hi_realloc
    functionSourceFile: /src/hiredis/alloc.h
    functionUses: 0
    functionsReached:
    - reallocFn
    linkageType: ''
    returnType: void
    signature: void *hi_realloc(void *ptr, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strdupFn
      Src: /src/hiredis/alloc.h:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 76
    functionName: hi_strdup
    functionSourceFile: /src/hiredis/alloc.h
    functionUses: 0
    functionsReached:
    - strdupFn
    linkageType: ''
    returnType: char
    signature: char *hi_strdup(const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: freeFn
      Src: /src/hiredis/alloc.h:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 80
    functionName: hi_free
    functionSourceFile: /src/hiredis/alloc.h
    functionUses: 3
    functionsReached:
    - freeFn
    linkageType: ''
    returnType: void
    signature: void hi_free(void *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - _r
    - ','
    - _p
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 122
    functionName: redisReaderSetPrivdata
    functionSourceFile: /src/hiredis/read.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: redisReaderSetPrivdata(_r, _p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 123
    functionName: redisReaderGetObject
    functionSourceFile: /src/hiredis/read.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: redisReaderGetObject(_r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - _r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 124
    functionName: redisReaderGetError
    functionSourceFile: /src/hiredis/read.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: redisReaderGetError(_r)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - type
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 57
    functionName: sdsHdrSize
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int sdsHdrSize(char type)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - string_size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 69
    functionName: sdsReqType
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char sdsReqType(size_t string_size)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: sdsReqType
      Src: /src/hiredis/sds.c:86,1
    - Dst: sdsHdrSize
      Src: /src/hiredis/sds.c:90,1
    - Dst: s_malloc
      Src: /src/hiredis/sds.c:94,1
    - Dst: memset
      Src: /src/hiredis/sds.c:97,1
    - Dst: SDS_HDR_VAR
      Src: /src/hiredis/sds.c:106,1
    - Dst: SDS_HDR_VAR
      Src: /src/hiredis/sds.c:113,1
    - Dst: SDS_HDR_VAR
      Src: /src/hiredis/sds.c:120,1
    - Dst: SDS_HDR_VAR
      Src: /src/hiredis/sds.c:127,1
    - Dst: memcpy
      Src: /src/hiredis/sds.c:135,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 50
    argCount: 2
    argNames:
    - init
    - initlen
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 138
    functionName: sdsnewlen
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - sdsHdrSize
    - SDS_HDR_VAR
    - s_malloc
    - memset
    - sdsReqType
    - memcpy
    linkageType: ''
    returnType: sds
    signature: sds sdsnewlen(const void *init, size_t initlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sdsnewlen
      Src: /src/hiredis/sds.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 142
    functionDepth: 2
    functionLinenumber: 142
    functionLinenumberEnd: 144
    functionName: sdsempty
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 1
    functionsReached:
    - sdsnewlen
    linkageType: ''
    returnType: sds
    signature: sds sdsempty(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/hiredis/sds.c:148,1
    - Dst: sdsnewlen
      Src: /src/hiredis/sds.c:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - init
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 147
    functionDepth: 2
    functionLinenumber: 147
    functionLinenumberEnd: 150
    functionName: sdsnew
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - strlen
    - sdsnewlen
    linkageType: ''
    returnType: sds
    signature: sds sdsnew(const char *init)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sdsnewlen
      Src: /src/hiredis/sds.c:154,1
    - Dst: sdslen
      Src: /src/hiredis/sds.c:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - sds
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 153
    functionDepth: 2
    functionLinenumber: 153
    functionLinenumberEnd: 155
    functionName: sdsdup
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - sdslen
    - sdsnewlen
    linkageType: ''
    returnType: sds
    signature: sds sdsdup(const sds s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: s_free
      Src: /src/hiredis/sds.c:160,1
    - Dst: sdsHdrSize
      Src: /src/hiredis/sds.c:160,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - s
    argTypes:
    - sds
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 161
    functionName: sdsfree
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 2
    functionsReached:
    - sdsHdrSize
    - s_free
    linkageType: ''
    returnType: void
    signature: void sdsfree(sds s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/hiredis/sds.c:178,1
    - Dst: sdssetlen
      Src: /src/hiredis/sds.c:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - sds
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 177
    functionDepth: 1
    functionLinenumber: 177
    functionLinenumberEnd: 180
    functionName: sdsupdatelen
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - strlen
    - sdssetlen
    linkageType: ''
    returnType: void
    signature: void sdsupdatelen(sds s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sdssetlen
      Src: /src/hiredis/sds.c:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - sds
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 189
    functionName: sdsclear
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - sdssetlen
    linkageType: ''
    returnType: void
    signature: void sdsclear(sds s)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: sdsavail
      Src: /src/hiredis/sds.c:199,1
    - Dst: sdslen
      Src: /src/hiredis/sds.c:207,1
    - Dst: sdsHdrSize
      Src: /src/hiredis/sds.c:208,1
    - Dst: sdsReqType
      Src: /src/hiredis/sds.c:216,1
    - Dst: sdsHdrSize
      Src: /src/hiredis/sds.c:223,1
    - Dst: s_realloc
      Src: /src/hiredis/sds.c:226,1
    - Dst: s_malloc
      Src: /src/hiredis/sds.c:232,1
    - Dst: memcpy
      Src: /src/hiredis/sds.c:234,1
    - Dst: s_free
      Src: /src/hiredis/sds.c:235,1
    - Dst: sdssetlen
      Src: /src/hiredis/sds.c:238,1
    - Dst: sdssetalloc
      Src: /src/hiredis/sds.c:240,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 2
    argNames:
    - s
    - addlen
    argTypes:
    - sds
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 242
    functionName: sdsMakeRoomFor
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - sdsHdrSize
    - sdsavail
    - sdssetalloc
    - s_malloc
    - sdslen
    - s_free
    - sdssetlen
    - sdsReqType
    - memcpy
    - s_realloc
    linkageType: ''
    returnType: sds
    signature: sds sdsMakeRoomFor(sds s, size_t addlen)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sdslen
      Src: /src/hiredis/sds.c:254,1
    - Dst: sdsHdrSize
      Src: /src/hiredis/sds.c:255,1
    - Dst: sdsReqType
      Src: /src/hiredis/sds.c:257,1
    - Dst: sdsHdrSize
      Src: /src/hiredis/sds.c:258,1
    - Dst: s_realloc
      Src: /src/hiredis/sds.c:260,1
    - Dst: s_malloc
      Src: /src/hiredis/sds.c:264,1
    - Dst: memcpy
      Src: /src/hiredis/sds.c:266,1
    - Dst: s_free
      Src: /src/hiredis/sds.c:267,1
    - Dst: sdssetlen
      Src: /src/hiredis/sds.c:270,1
    - Dst: sdssetalloc
      Src: /src/hiredis/sds.c:272,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 1
    argNames:
    - s
    argTypes:
    - sds
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 274
    functionName: sdsRemoveFreeSpace
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - sdsHdrSize
    - sdssetalloc
    - s_malloc
    - sdslen
    - s_free
    - sdssetlen
    - sdsReqType
    - memcpy
    - s_realloc
    linkageType: ''
    returnType: sds
    signature: sds sdsRemoveFreeSpace(sds s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sdsalloc
      Src: /src/hiredis/sds.c:284,1
    - Dst: sdsHdrSize
      Src: /src/hiredis/sds.c:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - sds
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 283
    functionDepth: 1
    functionLinenumber: 283
    functionLinenumberEnd: 286
    functionName: sdsAllocSize
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - sdsHdrSize
    - sdsalloc
    linkageType: ''
    returnType: size_t
    signature: size_t sdsAllocSize(sds s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sdsHdrSize
      Src: /src/hiredis/sds.c:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - sds
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 290
    functionDepth: 1
    functionLinenumber: 290
    functionLinenumberEnd: 292
    functionName: sdsAllocPtr
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - sdsHdrSize
    linkageType: ''
    returnType: void
    signature: void *sdsAllocPtr(sds s)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: SDS_TYPE_5_LEN
      Src: /src/hiredis/sds.c:323,1
    - Dst: assert
      Src: /src/hiredis/sds.c:324,1
    - Dst: SDS_HDR_VAR
      Src: /src/hiredis/sds.c:330,1
    - Dst: assert
      Src: /src/hiredis/sds.c:331,1
    - Dst: SDS_HDR_VAR
      Src: /src/hiredis/sds.c:336,1
    - Dst: assert
      Src: /src/hiredis/sds.c:337,1
    - Dst: SDS_HDR_VAR
      Src: /src/hiredis/sds.c:342,1
    - Dst: assert
      Src: /src/hiredis/sds.c:343,1
    - Dst: SDS_HDR_VAR
      Src: /src/hiredis/sds.c:348,1
    - Dst: assert
      Src: /src/hiredis/sds.c:349,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 36
    argCount: 2
    argNames:
    - s
    - incr
    argTypes:
    - sds
    - int
    assertStmts:
    - condition: ((incr > 0 && oldlen+incr < 32) || (incr < 0 && oldlen >= (unsigned
        int)(-incr)))
      pos:
        line_end: 323
        line_start: 323
        source_file: /src/hiredis/sds.c
    - condition: ((incr >= 0 && sh->alloc-sh->len >= incr) || (incr < 0 && sh->len
        >= (unsigned int)(-incr)))
      pos:
        line_end: 330
        line_start: 330
        source_file: /src/hiredis/sds.c
    - condition: ((incr >= 0 && sh->alloc-sh->len >= incr) || (incr < 0 && sh->len
        >= (unsigned int)(-incr)))
      pos:
        line_end: 336
        line_start: 336
        source_file: /src/hiredis/sds.c
    - condition: ((incr >= 0 && sh->alloc-sh->len >= (unsigned int)incr) || (incr
        < 0 && sh->len >= (unsigned int)(-incr)))
      pos:
        line_end: 342
        line_start: 342
        source_file: /src/hiredis/sds.c
    - condition: ((incr >= 0 && sh->alloc-sh->len >= (uint64_t)incr) || (incr < 0
        && sh->len >= (uint64_t)(-incr)))
      pos:
        line_end: 348
        line_start: 348
        source_file: /src/hiredis/sds.c
    constantsTouched: []
    func_position:
      end: 356
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 356
    functionName: sdsIncrLen
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - SDS_TYPE_5_LEN
    - assert
    - SDS_HDR_VAR
    linkageType: ''
    returnType: void
    signature: void sdsIncrLen(sds s, int incr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sdslen
      Src: /src/hiredis/sds.c:364,1
    - Dst: sdsMakeRoomFor
      Src: /src/hiredis/sds.c:367,1
    - Dst: memset
      Src: /src/hiredis/sds.c:371,1
    - Dst: sdssetlen
      Src: /src/hiredis/sds.c:372,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - sds
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 363
    functionDepth: 2
    functionLinenumber: 363
    functionLinenumberEnd: 374
    functionName: sdsgrowzero
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - sdslen
    - sdsMakeRoomFor
    - memset
    - sdssetlen
    linkageType: ''
    returnType: sds
    signature: sds sdsgrowzero(sds s, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sdslen
      Src: /src/hiredis/sds.c:382,1
    - Dst: sdsMakeRoomFor
      Src: /src/hiredis/sds.c:384,1
    - Dst: memcpy
      Src: /src/hiredis/sds.c:386,1
    - Dst: sdssetlen
      Src: /src/hiredis/sds.c:387,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - s
    - t
    - len
    argTypes:
    - sds
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 381
    functionDepth: 2
    functionLinenumber: 381
    functionLinenumberEnd: 390
    functionName: sdscatlen
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - sdslen
    - memcpy
    - sdsMakeRoomFor
    - sdssetlen
    linkageType: ''
    returnType: sds
    signature: sds sdscatlen(sds s, const void *t, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sdscatlen
      Src: /src/hiredis/sds.c:397,1
    - Dst: strlen
      Src: /src/hiredis/sds.c:397,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - t
    argTypes:
    - sds
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 396
    functionDepth: 3
    functionLinenumber: 396
    functionLinenumberEnd: 398
    functionName: sdscat
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - strlen
    - sdscatlen
    linkageType: ''
    returnType: sds
    signature: sds sdscat(sds s, const char *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sdscatlen
      Src: /src/hiredis/sds.c:405,1
    - Dst: sdslen
      Src: /src/hiredis/sds.c:405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - t
    argTypes:
    - sds
    - sds
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 404
    functionDepth: 3
    functionLinenumber: 404
    functionLinenumberEnd: 406
    functionName: sdscatsds
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - sdslen
    - sdscatlen
    linkageType: ''
    returnType: sds
    signature: sds sdscatsds(sds s, const sds t)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sdsalloc
      Src: /src/hiredis/sds.c:411,1
    - Dst: sdsMakeRoomFor
      Src: /src/hiredis/sds.c:412,1
    - Dst: sdslen
      Src: /src/hiredis/sds.c:412,1
    - Dst: memcpy
      Src: /src/hiredis/sds.c:415,1
    - Dst: sdssetlen
      Src: /src/hiredis/sds.c:417,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - s
    - t
    - len
    argTypes:
    - sds
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 410
    functionDepth: 2
    functionLinenumber: 410
    functionLinenumberEnd: 419
    functionName: sdscpylen
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - sdslen
    - sdssetlen
    - sdsalloc
    - memcpy
    - sdsMakeRoomFor
    linkageType: ''
    returnType: sds
    signature: sds sdscpylen(sds s, const char *t, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sdscpylen
      Src: /src/hiredis/sds.c:424,1
    - Dst: strlen
      Src: /src/hiredis/sds.c:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - t
    argTypes:
    - sds
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 423
    functionDepth: 3
    functionLinenumber: 423
    functionLinenumberEnd: 425
    functionName: sdscpy
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - strlen
    - sdscpylen
    linkageType: ''
    returnType: sds
    signature: sds sdscpy(sds s, const char *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - s
    - value
    argTypes:
    - char*
    - long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 434
    functionDepth: 0
    functionLinenumber: 434
    functionLinenumberEnd: 463
    functionName: sdsll2str
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int sdsll2str(char *s, long long value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - s
    - v
    argTypes:
    - char*
    - unsigned long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 492
    functionName: sdsull2str
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int sdsull2str(char *s, unsigned long long v)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sdsll2str
      Src: /src/hiredis/sds.c:500,1
    - Dst: sdsnewlen
      Src: /src/hiredis/sds.c:502,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 498
    functionDepth: 2
    functionLinenumber: 498
    functionLinenumberEnd: 503
    functionName: sdsfromlonglong
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - sdsnewlen
    - sdsll2str
    linkageType: ''
    returnType: sds
    signature: sds sdsfromlonglong(long long value)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/hiredis/sds.c:509,1
    - Dst: s_malloc
      Src: /src/hiredis/sds.c:514,1
    - Dst: va_copy
      Src: /src/hiredis/sds.c:524,1
    - Dst: vsnprintf
      Src: /src/hiredis/sds.c:525,1
    - Dst: va_end
      Src: /src/hiredis/sds.c:526,1
    - Dst: s_free
      Src: /src/hiredis/sds.c:528,1
    - Dst: s_malloc
      Src: /src/hiredis/sds.c:530,1
    - Dst: sdscat
      Src: /src/hiredis/sds.c:538,1
    - Dst: s_free
      Src: /src/hiredis/sds.c:539,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 3
    argNames:
    - s
    - fmt
    - ap
    argTypes:
    - sds
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 506
    functionDepth: 4
    functionLinenumber: 506
    functionLinenumberEnd: 541
    functionName: sdscatvprintf
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - s_malloc
    - vsnprintf
    - sdscat
    - va_copy
    - va_end
    - strlen
    - s_free
    linkageType: ''
    returnType: sds
    signature: sds sdscatvprintf(sds s, const char *fmt, va_list ap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/hiredis/sds.c:562,1
    - Dst: sdscatvprintf
      Src: /src/hiredis/sds.c:563,1
    - Dst: va_end
      Src: /src/hiredis/sds.c:564,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - s
    - fmt
    argTypes:
    - sds
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 559
    functionDepth: 5
    functionLinenumber: 559
    functionLinenumberEnd: 566
    functionName: sdscatprintf
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - va_start
    - sdscatvprintf
    - va_end
    linkageType: ''
    returnType: sds
    signature: sds sdscatprintf(sds s, const char *fmt, ...)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/hiredis/sds.c:589,1
    - Dst: sdslen
      Src: /src/hiredis/sds.c:590,1
    - Dst: sdsavail
      Src: /src/hiredis/sds.c:598,1
    - Dst: sdsMakeRoomFor
      Src: /src/hiredis/sds.c:599,1
    - Dst: va_arg
      Src: /src/hiredis/sds.c:610,1
    - Dst: strlen
      Src: /src/hiredis/sds.c:611,1
    - Dst: sdslen
      Src: /src/hiredis/sds.c:611,1
    - Dst: sdsavail
      Src: /src/hiredis/sds.c:612,1
    - Dst: sdsMakeRoomFor
      Src: /src/hiredis/sds.c:613,1
    - Dst: memcpy
      Src: /src/hiredis/sds.c:616,1
    - Dst: sdsinclen
      Src: /src/hiredis/sds.c:617,1
    - Dst: va_arg
      Src: /src/hiredis/sds.c:623,1
    - Dst: va_arg
      Src: /src/hiredis/sds.c:625,1
    - Dst: sdsll2str
      Src: /src/hiredis/sds.c:628,1
    - Dst: sdsavail
      Src: /src/hiredis/sds.c:629,1
    - Dst: sdsMakeRoomFor
      Src: /src/hiredis/sds.c:630,1
    - Dst: memcpy
      Src: /src/hiredis/sds.c:633,1
    - Dst: sdsinclen
      Src: /src/hiredis/sds.c:634,1
    - Dst: va_arg
      Src: /src/hiredis/sds.c:641,1
    - Dst: va_arg
      Src: /src/hiredis/sds.c:643,1
    - Dst: sdsull2str
      Src: /src/hiredis/sds.c:646,1
    - Dst: sdsavail
      Src: /src/hiredis/sds.c:647,1
    - Dst: sdsMakeRoomFor
      Src: /src/hiredis/sds.c:648,1
    - Dst: memcpy
      Src: /src/hiredis/sds.c:651,1
    - Dst: sdsinclen
      Src: /src/hiredis/sds.c:652,1
    - Dst: sdsinclen
      Src: /src/hiredis/sds.c:658,1
    - Dst: sdsinclen
      Src: /src/hiredis/sds.c:664,1
    - Dst: va_end
      Src: /src/hiredis/sds.c:669,1
    - Dst: va_end
      Src: /src/hiredis/sds.c:676,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 83
    argCount: 2
    argNames:
    - s
    - fmt
    argTypes:
    - sds
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 584
    functionDepth: 2
    functionLinenumber: 584
    functionLinenumberEnd: 678
    functionName: sdscatfmt
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - sdsavail
    - strlen
    - va_arg
    - sdslen
    - sdsull2str
    - sdsinclen
    - va_start
    - va_end
    - memcpy
    - sdsMakeRoomFor
    - sdsll2str
    linkageType: ''
    returnType: sds
    signature: sds sdscatfmt(sds s, char const *fmt, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sdslen
      Src: /src/hiredis/sds.c:699,1
    - Dst: strchr
      Src: /src/hiredis/sds.c:700,1
    - Dst: strchr
      Src: /src/hiredis/sds.c:701,1
    - Dst: memmove
      Src: /src/hiredis/sds.c:703,1
    - Dst: sdssetlen
      Src: /src/hiredis/sds.c:705,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - s
    - cset
    argTypes:
    - sds
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 694
    functionDepth: 1
    functionLinenumber: 694
    functionLinenumberEnd: 707
    functionName: sdstrim
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - strchr
    - sdslen
    - memmove
    - sdssetlen
    linkageType: ''
    returnType: sds
    signature: sds sdstrim(sds s, const char *cset)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: sdslen
      Src: /src/hiredis/sds.c:730,1
    - Dst: memmove
      Src: /src/hiredis/sds.c:753,1
    - Dst: sdssetlen
      Src: /src/hiredis/sds.c:755,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 3
    argNames:
    - s
    - start
    - end
    argTypes:
    - sds
    - ssize_t
    - ssize_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 729
    functionDepth: 1
    functionLinenumber: 729
    functionLinenumberEnd: 757
    functionName: sdsrange
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - sdslen
    - memmove
    - sdssetlen
    linkageType: ''
    returnType: int
    signature: int sdsrange(sds s, ssize_t start, ssize_t end)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sdslen
      Src: /src/hiredis/sds.c:761,1
    - Dst: tolower
      Src: /src/hiredis/sds.c:763,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - sds
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 760
    functionDepth: 1
    functionLinenumber: 760
    functionLinenumberEnd: 764
    functionName: sdstolower
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - sdslen
    - tolower
    linkageType: ''
    returnType: void
    signature: void sdstolower(sds s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sdslen
      Src: /src/hiredis/sds.c:768,1
    - Dst: toupper
      Src: /src/hiredis/sds.c:770,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - sds
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 767
    functionDepth: 1
    functionLinenumber: 767
    functionLinenumberEnd: 771
    functionName: sdstoupper
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - sdslen
    - toupper
    linkageType: ''
    returnType: void
    signature: void sdstoupper(sds s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sdslen
      Src: /src/hiredis/sds.c:788,1
    - Dst: sdslen
      Src: /src/hiredis/sds.c:789,1
    - Dst: memcmp
      Src: /src/hiredis/sds.c:791,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - sds
    - sds
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 794
      start: 784
    functionDepth: 1
    functionLinenumber: 784
    functionLinenumberEnd: 794
    functionName: sdscmp
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - sdslen
    - memcmp
    linkageType: ''
    returnType: int
    signature: int sdscmp(const sds s1, const sds s2)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: s_malloc
      Src: /src/hiredis/sds.c:818,1
    - Dst: s_realloc
      Src: /src/hiredis/sds.c:831,1
    - Dst: memcmp
      Src: /src/hiredis/sds.c:836,1
    - Dst: sdsnewlen
      Src: /src/hiredis/sds.c:837,1
    - Dst: sdsnewlen
      Src: /src/hiredis/sds.c:845,1
    - Dst: sdsfree
      Src: /src/hiredis/sds.c:854,1
    - Dst: s_free
      Src: /src/hiredis/sds.c:855,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 44
    argCount: 5
    argNames:
    - s
    - len
    - sep
    - seplen
    - count
    argTypes:
    - char*
    - int
    - char*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 812
    functionDepth: 2
    functionLinenumber: 812
    functionLinenumberEnd: 859
    functionName: sdssplitlen
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - memcmp
    - sdsfree
    - s_malloc
    - sdsnewlen
    - s_free
    - s_realloc
    linkageType: ''
    returnType: sds
    signature: sds *sdssplitlen(const char *s, int len, const char *sep, int seplen,
      int *count)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sdsfree
      Src: /src/hiredis/sds.c:865,1
    - Dst: s_free
      Src: /src/hiredis/sds.c:866,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - tokens
    - count
    argTypes:
    - sds*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 867
      start: 862
    functionDepth: 2
    functionLinenumber: 862
    functionLinenumberEnd: 867
    functionName: sdsfreesplitres
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - sdsfree
    - s_free
    linkageType: ''
    returnType: void
    signature: void sdsfreesplitres(sds *tokens, int count)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: sdscatlen
      Src: /src/hiredis/sds.c:876,1
    - Dst: sdscatprintf
      Src: /src/hiredis/sds.c:881,1
    - Dst: sdscatlen
      Src: /src/hiredis/sds.c:883,1
    - Dst: sdscatlen
      Src: /src/hiredis/sds.c:884,1
    - Dst: sdscatlen
      Src: /src/hiredis/sds.c:885,1
    - Dst: sdscatlen
      Src: /src/hiredis/sds.c:886,1
    - Dst: sdscatlen
      Src: /src/hiredis/sds.c:887,1
    - Dst: isprint
      Src: /src/hiredis/sds.c:889,1
    - Dst: sdscatprintf
      Src: /src/hiredis/sds.c:890,1
    - Dst: sdscatprintf
      Src: /src/hiredis/sds.c:892,1
    - Dst: sdscatlen
      Src: /src/hiredis/sds.c:897,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 3
    argNames:
    - s
    - p
    - len
    argTypes:
    - sds
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 898
      start: 875
    functionDepth: 6
    functionLinenumber: 875
    functionLinenumberEnd: 898
    functionName: sdscatrepr
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - isprint
    - sdscatprintf
    - sdscatlen
    linkageType: ''
    returnType: sds
    signature: sds sdscatrepr(sds s, const char *p, size_t len)
  - BBCount: 24
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 43
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 922
      start: 902
    functionDepth: 0
    functionLinenumber: 902
    functionLinenumberEnd: 922
    functionName: hex_digit_to_int
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int hex_digit_to_int(char c)
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/hiredis/sds.c:951,1
    - Dst: sdsempty
      Src: /src/hiredis/sds.c:958,1
    - Dst: isxdigit
      Src: /src/hiredis/sds.c:962,1
    - Dst: isxdigit
      Src: /src/hiredis/sds.c:963,1
    - Dst: hex_digit_to_int
      Src: /src/hiredis/sds.c:967,1
    - Dst: hex_digit_to_int
      Src: /src/hiredis/sds.c:968,1
    - Dst: sdscatlen
      Src: /src/hiredis/sds.c:969,1
    - Dst: sdscatlen
      Src: /src/hiredis/sds.c:983,1
    - Dst: isspace
      Src: /src/hiredis/sds.c:987,1
    - Dst: sdscatlen
      Src: /src/hiredis/sds.c:993,1
    - Dst: sdscatlen
      Src: /src/hiredis/sds.c:998,1
    - Dst: isspace
      Src: /src/hiredis/sds.c:1002,1
    - Dst: sdscatlen
      Src: /src/hiredis/sds.c:1008,1
    - Dst: sdscatlen
      Src: /src/hiredis/sds.c:1026,1
    - Dst: s_realloc
      Src: /src/hiredis/sds.c:1034,1
    - Dst: s_free
      Src: /src/hiredis/sds.c:1036,1
    - Dst: s_malloc
      Src: /src/hiredis/sds.c:1047,1
    - Dst: sdsfree
      Src: /src/hiredis/sds.c:1054,1
    - Dst: s_free
      Src: /src/hiredis/sds.c:1055,1
    - Dst: sdsfree
      Src: /src/hiredis/sds.c:1056,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 116
    argCount: 2
    argNames:
    - line
    - argc
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 943
    functionDepth: 3
    functionLinenumber: 943
    functionLinenumberEnd: 1059
    functionName: sdssplitargs
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - isxdigit
    - sdsfree
    - sdsempty
    - s_malloc
    - hex_digit_to_int
    - sdscatlen
    - isspace
    - s_free
    - s_realloc
    linkageType: ''
    returnType: sds
    signature: sds *sdssplitargs(const char *line, int *argc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sdslen
      Src: /src/hiredis/sds.c:1071,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 4
    argNames:
    - s
    - from
    - to
    - setlen
    argTypes:
    - sds
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1082
      start: 1070
    functionDepth: 1
    functionLinenumber: 1070
    functionLinenumberEnd: 1082
    functionName: sdsmapchars
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - sdslen
    linkageType: ''
    returnType: sds
    signature: sds sdsmapchars(sds s, const char *from, const char *to, size_t setlen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sdsempty
      Src: /src/hiredis/sds.c:1087,1
    - Dst: sdscat
      Src: /src/hiredis/sds.c:1091,1
    - Dst: sdscat
      Src: /src/hiredis/sds.c:1092,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - argv
    - argc
    - sep
    argTypes:
    - char**
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1095
      start: 1086
    functionDepth: 4
    functionLinenumber: 1086
    functionLinenumberEnd: 1095
    functionName: sdsjoin
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - sdscat
    - sdsempty
    linkageType: ''
    returnType: sds
    signature: sds sdsjoin(char **argv, int argc, char *sep)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sdsempty
      Src: /src/hiredis/sds.c:1099,1
    - Dst: sdscatsds
      Src: /src/hiredis/sds.c:1103,1
    - Dst: sdscatlen
      Src: /src/hiredis/sds.c:1104,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - argv
    - argc
    - sep
    - seplen
    argTypes:
    - sds*
    - int
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1098
    functionDepth: 4
    functionLinenumber: 1098
    functionLinenumberEnd: 1107
    functionName: sdsjoinsds
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - sdsempty
    - sdscatsds
    - sdscatlen
    linkageType: ''
    returnType: sds
    signature: sds sdsjoinsds(sds *argv, int argc, const char *sep, size_t seplen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: s_malloc
      Src: /src/hiredis/sds.c:1114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1114
      start: 1114
    functionDepth: 0
    functionLinenumber: 1114
    functionLinenumberEnd: 1114
    functionName: sds_malloc
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - s_malloc
    linkageType: ''
    returnType: void
    signature: void *sds_malloc(size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: s_realloc
      Src: /src/hiredis/sds.c:1115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1115
      start: 1115
    functionDepth: 0
    functionLinenumber: 1115
    functionLinenumberEnd: 1115
    functionName: sds_realloc
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - s_realloc
    linkageType: ''
    returnType: void
    signature: void *sds_realloc(void *ptr, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: s_free
      Src: /src/hiredis/sds.c:1116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1116
      start: 1116
    functionDepth: 0
    functionLinenumber: 1116
    functionLinenumberEnd: 1116
    functionName: sds_free
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - s_free
    linkageType: ''
    returnType: void
    signature: void sds_free(void *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1124
      start: 1123
    functionDepth: 0
    functionLinenumber: 1123
    functionLinenumberEnd: 1124
    functionName: UNUSED
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNUSED(x)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sdsnew
      Src: /src/hiredis/sds.c:1126,1
    - Dst: test_cond
      Src: /src/hiredis/sds.c:1128,1
    - Dst: sdslen
      Src: /src/hiredis/sds.c:1129,1
    - Dst: memcmp
      Src: /src/hiredis/sds.c:1129,1
    - Dst: sdsfree
      Src: /src/hiredis/sds.c:1131,1
    - Dst: sdsnewlen
      Src: /src/hiredis/sds.c:1132,1
    - Dst: test_cond
      Src: /src/hiredis/sds.c:1133,1
    - Dst: sdslen
      Src: /src/hiredis/sds.c:1134,1
    - Dst: memcmp
      Src: /src/hiredis/sds.c:1134,1
    - Dst: sdscat
      Src: /src/hiredis/sds.c:1136,1
    - Dst: test_cond
      Src: /src/hiredis/sds.c:1137,1
    - Dst: sdslen
      Src: /src/hiredis/sds.c:1138,1
    - Dst: memcmp
      Src: /src/hiredis/sds.c:1138,1
    - Dst: sdscpy
      Src: /src/hiredis/sds.c:1140,1
    - Dst: test_cond
      Src: /src/hiredis/sds.c:1141,1
    - Dst: sdslen
      Src: /src/hiredis/sds.c:1142,1
    - Dst: memcmp
      Src: /src/hiredis/sds.c:1142,1
    - Dst: sdscpy
      Src: /src/hiredis/sds.c:1144,1
    - Dst: test_cond
      Src: /src/hiredis/sds.c:1145,1
    - Dst: sdslen
      Src: /src/hiredis/sds.c:1146,1
    - Dst: memcmp
      Src: /src/hiredis/sds.c:1147,1
    - Dst: sdsfree
      Src: /src/hiredis/sds.c:1149,1
    - Dst: sdscatprintf
      Src: /src/hiredis/sds.c:1150,1
    - Dst: sdsempty
      Src: /src/hiredis/sds.c:1150,1
    - Dst: test_cond
      Src: /src/hiredis/sds.c:1151,1
    - Dst: sdslen
      Src: /src/hiredis/sds.c:1152,1
    - Dst: memcmp
      Src: /src/hiredis/sds.c:1152,1
    - Dst: sdsfree
      Src: /src/hiredis/sds.c:1154,1
    - Dst: sdsnew
      Src: /src/hiredis/sds.c:1155,1
    - Dst: sdscatfmt
      Src: /src/hiredis/sds.c:1156,1
    - Dst: test_cond
      Src: /src/hiredis/sds.c:1157,1
    - Dst: sdslen
      Src: /src/hiredis/sds.c:1158,1
    - Dst: memcmp
      Src: /src/hiredis/sds.c:1159,1
    - Dst: printf
      Src: /src/hiredis/sds.c:1161,1
    - Dst: sdsfree
      Src: /src/hiredis/sds.c:1163,1
    - Dst: sdsnew
      Src: /src/hiredis/sds.c:1164,1
    - Dst: sdscatfmt
      Src: /src/hiredis/sds.c:1165,1
    - Dst: test_cond
      Src: /src/hiredis/sds.c:1166,1
    - Dst: sdslen
      Src: /src/hiredis/sds.c:1167,1
    - Dst: memcmp
      Src: /src/hiredis/sds.c:1168,1
    - Dst: sdsfree
      Src: /src/hiredis/sds.c:1170,1
    - Dst: sdsnew
      Src: /src/hiredis/sds.c:1171,1
    - Dst: sdstrim
      Src: /src/hiredis/sds.c:1172,1
    - Dst: test_cond
      Src: /src/hiredis/sds.c:1173,1
    - Dst: sdslen
      Src: /src/hiredis/sds.c:1174,1
    - Dst: sdsfree
      Src: /src/hiredis/sds.c:1176,1
    - Dst: sdsnew
      Src: /src/hiredis/sds.c:1177,1
    - Dst: sdstrim
      Src: /src/hiredis/sds.c:1178,1
    - Dst: test_cond
      Src: /src/hiredis/sds.c:1179,1
    - Dst: sdslen
      Src: /src/hiredis/sds.c:1180,1
    - Dst: sdsfree
      Src: /src/hiredis/sds.c:1182,1
    - Dst: sdsnew
      Src: /src/hiredis/sds.c:1183,1
    - Dst: sdstrim
      Src: /src/hiredis/sds.c:1184,1
    - Dst: test_cond
      Src: /src/hiredis/sds.c:1185,1
    - Dst: sdslen
      Src: /src/hiredis/sds.c:1186,1
    - Dst: memcmp
      Src: /src/hiredis/sds.c:1186,1
    - Dst: sdsdup
      Src: /src/hiredis/sds.c:1188,1
    - Dst: sdsrange
      Src: /src/hiredis/sds.c:1189,1
    - Dst: test_cond
      Src: /src/hiredis/sds.c:1190,1
    - Dst: sdslen
      Src: /src/hiredis/sds.c:1191,1
    - Dst: memcmp
      Src: /src/hiredis/sds.c:1191,1
    - Dst: sdsfree
      Src: /src/hiredis/sds.c:1193,1
    - Dst: sdsdup
      Src: /src/hiredis/sds.c:1194,1
    - Dst: sdsrange
      Src: /src/hiredis/sds.c:1195,1
    - Dst: test_cond
      Src: /src/hiredis/sds.c:1196,1
    - Dst: sdslen
      Src: /src/hiredis/sds.c:1197,1
    - Dst: memcmp
      Src: /src/hiredis/sds.c:1197,1
    - Dst: sdsfree
      Src: /src/hiredis/sds.c:1199,1
    - Dst: sdsdup
      Src: /src/hiredis/sds.c:1200,1
    - Dst: sdsrange
      Src: /src/hiredis/sds.c:1201,1
    - Dst: test_cond
      Src: /src/hiredis/sds.c:1202,1
    - Dst: sdslen
      Src: /src/hiredis/sds.c:1203,1
    - Dst: memcmp
      Src: /src/hiredis/sds.c:1203,1
    - Dst: sdsfree
      Src: /src/hiredis/sds.c:1205,1
    - Dst: sdsdup
      Src: /src/hiredis/sds.c:1206,1
    - Dst: sdsrange
      Src: /src/hiredis/sds.c:1207,1
    - Dst: test_cond
      Src: /src/hiredis/sds.c:1208,1
    - Dst: sdslen
      Src: /src/hiredis/sds.c:1209,1
    - Dst: memcmp
      Src: /src/hiredis/sds.c:1209,1
    - Dst: sdsfree
      Src: /src/hiredis/sds.c:1211,1
    - Dst: sdsdup
      Src: /src/hiredis/sds.c:1212,1
    - Dst: sdsrange
      Src: /src/hiredis/sds.c:1213,1
    - Dst: test_cond
      Src: /src/hiredis/sds.c:1214,1
    - Dst: sdslen
      Src: /src/hiredis/sds.c:1215,1
    - Dst: memcmp
      Src: /src/hiredis/sds.c:1215,1
    - Dst: sdsfree
      Src: /src/hiredis/sds.c:1217,1
    - Dst: sdsdup
      Src: /src/hiredis/sds.c:1218,1
    - Dst: sdsrange
      Src: /src/hiredis/sds.c:1219,1
    - Dst: test_cond
      Src: /src/hiredis/sds.c:1220,1
    - Dst: sdslen
      Src: /src/hiredis/sds.c:1221,1
    - Dst: memcmp
      Src: /src/hiredis/sds.c:1221,1
    - Dst: sdsfree
      Src: /src/hiredis/sds.c:1223,1
    - Dst: sdsfree
      Src: /src/hiredis/sds.c:1224,1
    - Dst: sdsnew
      Src: /src/hiredis/sds.c:1225,1
    - Dst: sdsnew
      Src: /src/hiredis/sds.c:1226,1
    - Dst: test_cond
      Src: /src/hiredis/sds.c:1227,1
    - Dst: sdscmp
      Src: /src/hiredis/sds.c:1227,1
    - Dst: sdsfree
      Src: /src/hiredis/sds.c:1229,1
    - Dst: sdsfree
      Src: /src/hiredis/sds.c:1230,1
    - Dst: sdsnew
      Src: /src/hiredis/sds.c:1231,1
    - Dst: sdsnew
      Src: /src/hiredis/sds.c:1232,1
    - Dst: test_cond
      Src: /src/hiredis/sds.c:1233,1
    - Dst: sdscmp
      Src: /src/hiredis/sds.c:1233,1
    - Dst: sdsfree
      Src: /src/hiredis/sds.c:1235,1
    - Dst: sdsfree
      Src: /src/hiredis/sds.c:1236,1
    - Dst: sdsnew
      Src: /src/hiredis/sds.c:1237,1
    - Dst: sdsnew
      Src: /src/hiredis/sds.c:1238,1
    - Dst: test_cond
      Src: /src/hiredis/sds.c:1239,1
    - Dst: sdscmp
      Src: /src/hiredis/sds.c:1239,1
    - Dst: sdsfree
      Src: /src/hiredis/sds.c:1241,1
    - Dst: sdsfree
      Src: /src/hiredis/sds.c:1242,1
    - Dst: sdsnewlen
      Src: /src/hiredis/sds.c:1243,1
    - Dst: sdscatrepr
      Src: /src/hiredis/sds.c:1244,1
    - Dst: sdsempty
      Src: /src/hiredis/sds.c:1244,1
    - Dst: sdslen
      Src: /src/hiredis/sds.c:1244,1
    - Dst: test_cond
      Src: /src/hiredis/sds.c:1245,1
    - Dst: memcmp
      Src: /src/hiredis/sds.c:1246,1
    - Dst: sdsfree
      Src: /src/hiredis/sds.c:1253,1
    - Dst: sdsfree
      Src: /src/hiredis/sds.c:1254,1
    - Dst: sdsnew
      Src: /src/hiredis/sds.c:1255,1
    - Dst: test_cond
      Src: /src/hiredis/sds.c:1256,1
    - Dst: sdslen
      Src: /src/hiredis/sds.c:1256,1
    - Dst: sdsavail
      Src: /src/hiredis/sds.c:1256,1
    - Dst: sdslen
      Src: /src/hiredis/sds.c:1261,1
    - Dst: sdsMakeRoomFor
      Src: /src/hiredis/sds.c:1262,1
    - Dst: test_cond
      Src: /src/hiredis/sds.c:1265,1
    - Dst: sdslen
      Src: /src/hiredis/sds.c:1265,1
    - Dst: test_cond
      Src: /src/hiredis/sds.c:1267,1
    - Dst: sdsavail
      Src: /src/hiredis/sds.c:1267,1
    - Dst: sdsavail
      Src: /src/hiredis/sds.c:1268,1
    - Dst: sdsIncrLen
      Src: /src/hiredis/sds.c:1274,1
    - Dst: test_cond
      Src: /src/hiredis/sds.c:1276,1
    - Dst: memcmp
      Src: /src/hiredis/sds.c:1277,1
    - Dst: test_cond
      Src: /src/hiredis/sds.c:1278,1
    - Dst: sdslen
      Src: /src/hiredis/sds.c:1278,1
    - Dst: sdsfree
      Src: /src/hiredis/sds.c:1280,1
    - Dst: test_report
      Src: /src/hiredis/sds.c:1283,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 99
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1285
      start: 1124
    functionDepth: 7
    functionLinenumber: 1124
    functionLinenumberEnd: 1285
    functionName: sdsTest
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - printf
    - sdscat
    - sdsnew
    - sdsdup
    - test_cond
    - sdsIncrLen
    - sdsavail
    - sdscpy
    - sdsnewlen
    - sdscatrepr
    - sdsrange
    - sdstrim
    - memcmp
    - sdsfree
    - sdsempty
    - sdslen
    - sdscatprintf
    - test_report
    - sdscmp
    - sdscatfmt
    - sdsMakeRoomFor
    linkageType: ''
    returnType: int
    signature: int sdsTest(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sdsTest
      Src: /src/hiredis/sds.c:1290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1291
      start: 1289
    functionDepth: 8
    functionLinenumber: 1289
    functionLinenumberEnd: 1291
    functionName: main
    functionSourceFile: /src/hiredis/sds.c
    functionUses: 0
    functionsReached:
    - sdsTest
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 112
    functionName: redisIsPushReply
    functionSourceFile: /src/hiredis/hiredis.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: redisIsPushReply(r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - opts
    - ','
    - ip_
    - ','
    - port_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 231
    functionName: REDIS_OPTIONS_SET_TCP
    functionSourceFile: /src/hiredis/hiredis.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REDIS_OPTIONS_SET_TCP(opts, ip_, port_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - opts
    - ','
    - path
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 236
    functionName: REDIS_OPTIONS_SET_UNIX
    functionSourceFile: /src/hiredis/hiredis.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REDIS_OPTIONS_SET_UNIX(opts, path)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - opts
    - ','
    - data
    - ','
    - dtor
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 241
    functionName: REDIS_OPTIONS_SET_PRIVDATA
    functionSourceFile: /src/hiredis/hiredis.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REDIS_OPTIONS_SET_PRIVDATA(opts, data, dtor)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 53
    functionName: assert
    functionSourceFile: /src/hiredis/async.c
    functionUses: 35
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: assert(e)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dictGenHashFunction
      Src: /src/hiredis/async.c:61,1
    - Dst: sdslen
      Src: /src/hiredis/async.c:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 63
    functionName: callbackHash
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - dictGenHashFunction
    - sdslen
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int callbackHash(const void *key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hi_malloc
      Src: /src/hiredis/async.c:69,1
    - Dst: memcpy
      Src: /src/hiredis/async.c:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - privdata
    - src
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 75
    functionName: callbackValDup
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - memcpy
    - hi_malloc
    linkageType: ''
    returnType: void
    signature: void *callbackValDup(void *privdata, const void *src)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sdslen
      Src: /src/hiredis/async.c:81,1
    - Dst: sdslen
      Src: /src/hiredis/async.c:82,1
    - Dst: memcmp
      Src: /src/hiredis/async.c:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - privdata
    - key1
    - key2
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 85
    functionName: callbackKeyCompare
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - sdslen
    - memcmp
    linkageType: ''
    returnType: int
    signature: int callbackKeyCompare(void *privdata, const void *key1, const void
      *key2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sdsfree
      Src: /src/hiredis/async.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - privdata
    - key
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 2
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: callbackKeyDestructor
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - sdsfree
    linkageType: ''
    returnType: void
    signature: void callbackKeyDestructor(void *privdata, void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hi_free
      Src: /src/hiredis/async.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - privdata
    - val
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: callbackValDestructor
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - hi_free
    linkageType: ''
    returnType: void
    signature: void callbackValDestructor(void *privdata, void *val)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dictCreate
      Src: /src/hiredis/async.c:110,1
    - Dst: dictCreate
      Src: /src/hiredis/async.c:114,1
    - Dst: hi_realloc
      Src: /src/hiredis/async.c:118,1
    - Dst: dictRelease
      Src: /src/hiredis/async.c:156,1
    - Dst: dictRelease
      Src: /src/hiredis/async.c:157,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 44
    argCount: 1
    argNames:
    - c
    argTypes:
    - redisContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 159
    functionName: redisAsyncInitialize
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - hi_realloc
    - dictCreate
    - dictRelease
    linkageType: ''
    returnType: redisAsyncContext
    signature: redisAsyncContext *redisAsyncInitialize(redisContext *c)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ac
    argTypes:
    - redisAsyncContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 170
    functionName: __redisAsyncCopyError
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void __redisAsyncCopyError(redisAsyncContext *ac)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: redisConnectWithOptions
      Src: /src/hiredis/async.c:183,1
    - Dst: redisAsyncInitialize
      Src: /src/hiredis/async.c:188,1
    - Dst: redisFree
      Src: /src/hiredis/async.c:190,1
    - Dst: redisAsyncSetPushCallback
      Src: /src/hiredis/async.c:195,1
    - Dst: __redisAsyncCopyError
      Src: /src/hiredis/async.c:197,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - options
    argTypes:
    - redisOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 172
    functionDepth: 2
    functionLinenumber: 172
    functionLinenumberEnd: 199
    functionName: redisAsyncConnectWithOptions
    functionSourceFile: /src/hiredis/async.c
    functionUses: 7
    functionsReached:
    - redisFree
    - redisAsyncSetPushCallback
    - __redisAsyncCopyError
    - redisConnectWithOptions
    - redisAsyncInitialize
    linkageType: ''
    returnType: redisAsyncContext
    signature: redisAsyncContext *redisAsyncConnectWithOptions(const redisOptions
      *options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: REDIS_OPTIONS_SET_TCP
      Src: /src/hiredis/async.c:203,1
    - Dst: redisAsyncConnectWithOptions
      Src: /src/hiredis/async.c:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ip
    - port
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 201
    functionDepth: 3
    functionLinenumber: 201
    functionLinenumberEnd: 205
    functionName: redisAsyncConnect
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - redisAsyncConnectWithOptions
    - REDIS_OPTIONS_SET_TCP
    linkageType: ''
    returnType: redisAsyncContext
    signature: redisAsyncContext *redisAsyncConnect(const char *ip, int port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: REDIS_OPTIONS_SET_TCP
      Src: /src/hiredis/async.c:210,1
    - Dst: redisAsyncConnectWithOptions
      Src: /src/hiredis/async.c:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ip
    - port
    - source_addr
    argTypes:
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 207
    functionDepth: 3
    functionLinenumber: 207
    functionLinenumberEnd: 213
    functionName: redisAsyncConnectBind
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - redisAsyncConnectWithOptions
    - REDIS_OPTIONS_SET_TCP
    linkageType: ''
    returnType: redisAsyncContext
    signature: "redisAsyncContext *redisAsyncConnectBind(const char *ip, int port,\n
      \                                        const char *source_addr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: REDIS_OPTIONS_SET_TCP
      Src: /src/hiredis/async.c:218,1
    - Dst: redisAsyncConnectWithOptions
      Src: /src/hiredis/async.c:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ip
    - port
    - source_addr
    argTypes:
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 215
    functionDepth: 3
    functionLinenumber: 215
    functionLinenumberEnd: 222
    functionName: redisAsyncConnectBindWithReuse
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - redisAsyncConnectWithOptions
    - REDIS_OPTIONS_SET_TCP
    linkageType: ''
    returnType: redisAsyncContext
    signature: "redisAsyncContext *redisAsyncConnectBindWithReuse(const char *ip,
      int port,\n                                                  const char *source_addr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: REDIS_OPTIONS_SET_UNIX
      Src: /src/hiredis/async.c:226,1
    - Dst: redisAsyncConnectWithOptions
      Src: /src/hiredis/async.c:227,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 224
    functionDepth: 3
    functionLinenumber: 224
    functionLinenumberEnd: 228
    functionName: redisAsyncConnectUnix
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - redisAsyncConnectWithOptions
    - REDIS_OPTIONS_SET_UNIX
    linkageType: ''
    returnType: redisAsyncContext
    signature: redisAsyncContext *redisAsyncConnectUnix(const char *path)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _EL_ADD_WRITE
      Src: /src/hiredis/async.c:247,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - ac
    - fn
    - fn_nc
    argTypes:
    - redisAsyncContext*
    - redisConnectCallback*
    - redisConnectCallbackNC*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 230
    functionDepth: 1
    functionLinenumber: 230
    functionLinenumberEnd: 250
    functionName: redisAsyncSetConnectCallbackImpl
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - _EL_ADD_WRITE
    linkageType: ''
    returnType: int
    signature: "int redisAsyncSetConnectCallbackImpl(redisAsyncContext *ac, redisConnectCallback
      *fn,\n                                 redisConnectCallbackNC *fn_nc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisAsyncSetConnectCallbackImpl
      Src: /src/hiredis/async.c:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ac
    - fn
    argTypes:
    - redisAsyncContext*
    - redisConnectCallback*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 252
    functionDepth: 2
    functionLinenumber: 252
    functionLinenumberEnd: 254
    functionName: redisAsyncSetConnectCallback
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - redisAsyncSetConnectCallbackImpl
    linkageType: ''
    returnType: int
    signature: int redisAsyncSetConnectCallback(redisAsyncContext *ac, redisConnectCallback
      *fn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisAsyncSetConnectCallbackImpl
      Src: /src/hiredis/async.c:257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ac
    - fn
    argTypes:
    - redisAsyncContext*
    - redisConnectCallbackNC*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 256
    functionDepth: 2
    functionLinenumber: 256
    functionLinenumberEnd: 258
    functionName: redisAsyncSetConnectCallbackNC
    functionSourceFile: /src/hiredis/async.c
    functionUses: 1
    functionsReached:
    - redisAsyncSetConnectCallbackImpl
    linkageType: ''
    returnType: int
    signature: int redisAsyncSetConnectCallbackNC(redisAsyncContext *ac, redisConnectCallbackNC
      *fn)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ac
    - fn
    argTypes:
    - redisAsyncContext*
    - redisDisconnectCallback*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 266
    functionName: redisAsyncSetDisconnectCallback
    functionSourceFile: /src/hiredis/async.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int redisAsyncSetDisconnectCallback(redisAsyncContext *ac, redisDisconnectCallback
      *fn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: hi_malloc
      Src: /src/hiredis/async.c:273,1
    - Dst: memcpy
      Src: /src/hiredis/async.c:278,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - list
    - source
    argTypes:
    - redisCallbackList*
    - redisCallback*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 289
    functionName: __redisPushCallback
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - memcpy
    - hi_malloc
    linkageType: ''
    returnType: int
    signature: int __redisPushCallback(redisCallbackList *list, redisCallback *source)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/hiredis/async.c:300,1
    - Dst: hi_free
      Src: /src/hiredis/async.c:301,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - list
    - target
    argTypes:
    - redisCallbackList*
    - redisCallback*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 305
    functionName: __redisShiftCallback
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - hi_free
    - memcpy
    linkageType: ''
    returnType: int
    signature: int __redisShiftCallback(redisCallbackList *list, redisCallback *target)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: redisCallback*::fn
      Src: /src/hiredis/async.c:311,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ac
    - cb
    - reply
    argTypes:
    - redisAsyncContext*
    - redisCallback*
    - redisReply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 314
    functionName: __redisRunCallback
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - redisCallback*::fn
    linkageType: ''
    returnType: void
    signature: void __redisRunCallback(redisAsyncContext *ac, redisCallback *cb, redisReply
      *reply)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: redisAsyncContext*::push_cb
      Src: /src/hiredis/async.c:319,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ac
    - reply
    argTypes:
    - redisAsyncContext*
    - redisReply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 322
    functionName: __redisRunPushCallback
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - redisAsyncContext*::push_cb
    linkageType: ''
    returnType: void
    signature: void __redisRunPushCallback(redisAsyncContext *ac, redisReply *reply)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: redisAsyncContext*::onConnect
      Src: /src/hiredis/async.c:332,1
    - Dst: redisAsyncContext*::onConnectNC
      Src: /src/hiredis/async.c:334,1
    - Dst: redisAsyncContext*::onConnect
      Src: /src/hiredis/async.c:340,1
    - Dst: redisAsyncContext*::onConnectNC
      Src: /src/hiredis/async.c:342,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - ac
    - status
    argTypes:
    - redisAsyncContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 345
    functionName: __redisRunConnectCallback
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - redisAsyncContext*::onConnectNC
    - redisAsyncContext*::onConnect
    linkageType: ''
    returnType: void
    signature: void __redisRunConnectCallback(redisAsyncContext *ac, int status)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: redisAsyncContext*::onDisconnect
      Src: /src/hiredis/async.c:352,1
    - Dst: redisAsyncContext*::onDisconnect
      Src: /src/hiredis/async.c:356,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ac
    - status
    argTypes:
    - redisAsyncContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 359
    functionName: __redisRunDisconnectCallback
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - redisAsyncContext*::onDisconnect
    linkageType: ''
    returnType: void
    signature: void __redisRunDisconnectCallback(redisAsyncContext *ac, int status)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: __redisShiftCallback
      Src: /src/hiredis/async.c:369,1
    - Dst: __redisRunCallback
      Src: /src/hiredis/async.c:370,1
    - Dst: __redisShiftCallback
      Src: /src/hiredis/async.c:371,1
    - Dst: __redisRunCallback
      Src: /src/hiredis/async.c:372,1
    - Dst: dictInitIterator
      Src: /src/hiredis/async.c:376,1
    - Dst: dictNext
      Src: /src/hiredis/async.c:377,1
    - Dst: __redisRunCallback
      Src: /src/hiredis/async.c:378,1
    - Dst: dictGetEntryVal
      Src: /src/hiredis/async.c:378,1
    - Dst: dictRelease
      Src: /src/hiredis/async.c:380,1
    - Dst: dictInitIterator
      Src: /src/hiredis/async.c:384,1
    - Dst: dictNext
      Src: /src/hiredis/async.c:385,1
    - Dst: __redisRunCallback
      Src: /src/hiredis/async.c:386,1
    - Dst: dictGetEntryVal
      Src: /src/hiredis/async.c:386,1
    - Dst: dictRelease
      Src: /src/hiredis/async.c:388,1
    - Dst: _EL_CLEANUP
      Src: /src/hiredis/async.c:392,1
    - Dst: __redisRunDisconnectCallback
      Src: /src/hiredis/async.c:400,1
    - Dst: redisAsyncContext*::dataCleanup
      Src: /src/hiredis/async.c:404,1
    - Dst: redisFree
      Src: /src/hiredis/async.c:408,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 1
    argNames:
    - ac
    argTypes:
    - redisAsyncContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 362
    functionDepth: 1
    functionLinenumber: 362
    functionLinenumberEnd: 409
    functionName: __redisAsyncFree
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - redisFree
    - dictInitIterator
    - __redisRunCallback
    - dictNext
    - redisAsyncContext*::dataCleanup
    - __redisShiftCallback
    - __redisRunDisconnectCallback
    - dictRelease
    - dictGetEntryVal
    - _EL_CLEANUP
    linkageType: ''
    returnType: void
    signature: void __redisAsyncFree(redisAsyncContext *ac)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: __redisAsyncFree
      Src: /src/hiredis/async.c:423,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ac
    argTypes:
    - redisAsyncContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 415
    functionDepth: 2
    functionLinenumber: 415
    functionLinenumberEnd: 424
    functionName: redisAsyncFree
    functionSourceFile: /src/hiredis/async.c
    functionUses: 4
    functionsReached:
    - __redisAsyncFree
    linkageType: ''
    returnType: void
    signature: void redisAsyncFree(redisAsyncContext *ac)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: __redisAsyncCopyError
      Src: /src/hiredis/async.c:431,1
    - Dst: __redisShiftCallback
      Src: /src/hiredis/async.c:435,1
    - Dst: assert
      Src: /src/hiredis/async.c:436,1
    - Dst: _EL_CLEANUP
      Src: /src/hiredis/async.c:445,1
    - Dst: __redisAsyncFree
      Src: /src/hiredis/async.c:450,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - ac
    argTypes:
    - redisAsyncContext*
    assertStmts:
    - condition: (ret == REDIS_ERR)
      pos:
        line_end: 435
        line_start: 435
        source_file: /src/hiredis/async.c
    constantsTouched: []
    func_position:
      end: 452
      start: 427
    functionDepth: 2
    functionLinenumber: 427
    functionLinenumberEnd: 452
    functionName: __redisAsyncDisconnect
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - assert
    - __redisShiftCallback
    - __redisAsyncFree
    - __redisAsyncCopyError
    - _EL_CLEANUP
    linkageType: ''
    returnType: void
    signature: void __redisAsyncDisconnect(redisAsyncContext *ac)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __redisAsyncDisconnect
      Src: /src/hiredis/async.c:467,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ac
    argTypes:
    - redisAsyncContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 460
    functionDepth: 3
    functionLinenumber: 460
    functionLinenumberEnd: 468
    functionName: redisAsyncDisconnect
    functionSourceFile: /src/hiredis/async.c
    functionUses: 3
    functionsReached:
    - __redisAsyncDisconnect
    linkageType: ''
    returnType: void
    signature: void redisAsyncDisconnect(redisAsyncContext *ac)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/hiredis/async.c:484,1
    - Dst: tolower
      Src: /src/hiredis/async.c:486,1
    - Dst: sdsnewlen
      Src: /src/hiredis/async.c:495,1
    - Dst: dictFind
      Src: /src/hiredis/async.c:498,1
    - Dst: dictGetEntryVal
      Src: /src/hiredis/async.c:499,1
    - Dst: memcpy
      Src: /src/hiredis/async.c:500,1
    - Dst: strcasecmp
      Src: /src/hiredis/async.c:505,1
    - Dst: assert
      Src: /src/hiredis/async.c:506,1
    - Dst: strcasecmp
      Src: /src/hiredis/async.c:509,1
    - Dst: dictDelete
      Src: /src/hiredis/async.c:513,1
    - Dst: assert
      Src: /src/hiredis/async.c:517,1
    - Dst: dictSize
      Src: /src/hiredis/async.c:522,1
    - Dst: dictSize
      Src: /src/hiredis/async.c:523,1
    - Dst: __redisShiftCallback
      Src: /src/hiredis/async.c:529,1
    - Dst: __redisPushCallback
      Src: /src/hiredis/async.c:530,1
    - Dst: sdsfree
      Src: /src/hiredis/async.c:534,1
    - Dst: __redisShiftCallback
      Src: /src/hiredis/async.c:537,1
    - Dst: __redisSetError
      Src: /src/hiredis/async.c:541,1
    - Dst: __redisAsyncCopyError
      Src: /src/hiredis/async.c:542,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 45
    argCount: 3
    argNames:
    - ac
    - reply
    - dstcb
    argTypes:
    - redisAsyncContext*
    - redisReply*
    - redisCallback*
    assertStmts:
    - condition: (cb != NULL)
      pos:
        line_end: 505
        line_start: 505
        source_file: /src/hiredis/async.c
    - condition: (reply->element[2]->type == REDIS_REPLY_INTEGER)
      pos:
        line_end: 516
        line_start: 516
        source_file: /src/hiredis/async.c
    - condition: (reply->element[0]->type == REDIS_REPLY_STRING)
      pos:
        line_end: 483
        line_start: 483
        source_file: /src/hiredis/async.c
    constantsTouched: []
    func_position:
      end: 544
      start: 470
    functionDepth: 2
    functionLinenumber: 470
    functionLinenumberEnd: 544
    functionName: __redisGetSubscribeCallback
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - __redisPushCallback
    - sdsfree
    - dictDelete
    - dictSize
    - __redisSetError
    - tolower
    - dictFind
    - assert
    - __redisShiftCallback
    - sdsnewlen
    - strcasecmp
    - memcpy
    - __redisAsyncCopyError
    - dictGetEntryVal
    linkageType: ''
    returnType: int
    signature: int __redisGetSubscribeCallback(redisAsyncContext *ac, redisReply *reply,
      redisCallback *dstcb)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 546
    functionDepth: 0
    functionLinenumber: 546
    functionLinenumberEnd: 548
    functionName: redisIsSpontaneousPushReply
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: redisIsSpontaneousPushReply(r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tolower
      Src: /src/hiredis/async.c:561,1
    - Dst: strncasecmp
      Src: /src/hiredis/async.c:565,1
    - Dst: strncasecmp
      Src: /src/hiredis/async.c:566,1
    - Dst: strncasecmp
      Src: /src/hiredis/async.c:567,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 1
    argNames:
    - reply
    argTypes:
    - redisReply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 549
    functionDepth: 0
    functionLinenumber: 549
    functionLinenumberEnd: 568
    functionName: redisIsSubscribeReply
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - strncasecmp
    - tolower
    linkageType: ''
    returnType: int
    signature: int redisIsSubscribeReply(redisReply *reply)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: redisGetReply
      Src: /src/hiredis/async.c:575,1
    - Dst: sdslen
      Src: /src/hiredis/async.c:579,1
    - Dst: __redisAsyncDisconnect
      Src: /src/hiredis/async.c:581,1
    - Dst: redisIsPushReply
      Src: /src/hiredis/async.c:590,1
    - Dst: redisIsSpontaneousPushReply
      Src: /src/hiredis/async.c:596,1
    - Dst: __redisRunPushCallback
      Src: /src/hiredis/async.c:597,1
    - Dst: redisContext*::reader::fn::freeObject
      Src: /src/hiredis/async.c:598,1
    - Dst: __redisShiftCallback
      Src: /src/hiredis/async.c:605,1
    - Dst: snprintf
      Src: /src/hiredis/async.c:623,1
    - Dst: redisContext*::reader::fn::freeObject
      Src: /src/hiredis/async.c:624,1
    - Dst: __redisAsyncDisconnect
      Src: /src/hiredis/async.c:625,1
    - Dst: assert
      Src: /src/hiredis/async.c:629,1
    - Dst: __redisGetSubscribeCallback
      Src: /src/hiredis/async.c:631,1
    - Dst: __redisRunCallback
      Src: /src/hiredis/async.c:635,1
    - Dst: redisContext*::reader::fn::freeObject
      Src: /src/hiredis/async.c:637,1
    - Dst: __redisAsyncFree
      Src: /src/hiredis/async.c:642,1
    - Dst: redisContext*::reader::fn::freeObject
      Src: /src/hiredis/async.c:650,1
    - Dst: __redisPushCallback
      Src: /src/hiredis/async.c:655,1
    - Dst: __redisAsyncDisconnect
      Src: /src/hiredis/async.c:661,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 46
    argCount: 1
    argNames:
    - ac
    argTypes:
    - redisAsyncContext*
    assertStmts:
    - condition: (c->flags & REDIS_SUBSCRIBED)
      pos:
        line_end: 628
        line_start: 628
        source_file: /src/hiredis/async.c
    constantsTouched: []
    func_position:
      end: 662
      start: 570
    functionDepth: 3
    functionLinenumber: 570
    functionLinenumberEnd: 662
    functionName: redisProcessCallbacks
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - __redisPushCallback
    - __redisRunCallback
    - sdslen
    - __redisGetSubscribeCallback
    - redisIsPushReply
    - __redisRunPushCallback
    - redisContext*::reader::fn::freeObject
    - assert
    - snprintf
    - redisIsSpontaneousPushReply
    - __redisShiftCallback
    - __redisAsyncFree
    - redisGetReply
    - __redisAsyncDisconnect
    linkageType: ''
    returnType: void
    signature: void redisProcessCallbacks(redisAsyncContext *ac)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __redisRunConnectCallback
      Src: /src/hiredis/async.c:665,1
    - Dst: __redisAsyncDisconnect
      Src: /src/hiredis/async.c:666,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ac
    argTypes:
    - redisAsyncContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 664
    functionDepth: 3
    functionLinenumber: 664
    functionLinenumberEnd: 667
    functionName: __redisAsyncHandleConnectFailure
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - __redisAsyncDisconnect
    - __redisRunConnectCallback
    linkageType: ''
    returnType: void
    signature: void __redisAsyncHandleConnectFailure(redisAsyncContext *ac)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: redisCheckConnectDone
      Src: /src/hiredis/async.c:676,1
    - Dst: redisCheckSocketError
      Src: /src/hiredis/async.c:678,1
    - Dst: __redisAsyncCopyError
      Src: /src/hiredis/async.c:679,1
    - Dst: __redisAsyncHandleConnectFailure
      Src: /src/hiredis/async.c:680,1
    - Dst: redisSetTcpNoDelay
      Src: /src/hiredis/async.c:685,1
    - Dst: __redisAsyncHandleConnectFailure
      Src: /src/hiredis/async.c:686,1
    - Dst: __redisRunConnectCallback
      Src: /src/hiredis/async.c:695,1
    - Dst: redisAsyncDisconnect
      Src: /src/hiredis/async.c:697,1
    - Dst: redisAsyncFree
      Src: /src/hiredis/async.c:700,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - ac
    argTypes:
    - redisAsyncContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 672
    functionDepth: 4
    functionLinenumber: 672
    functionLinenumberEnd: 707
    functionName: __redisAsyncHandleConnect
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - redisCheckSocketError
    - __redisAsyncHandleConnectFailure
    - redisCheckConnectDone
    - redisSetTcpNoDelay
    - __redisRunConnectCallback
    - redisAsyncDisconnect
    - redisAsyncFree
    - __redisAsyncCopyError
    linkageType: ''
    returnType: int
    signature: int __redisAsyncHandleConnect(redisAsyncContext *ac)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: redisBufferRead
      Src: /src/hiredis/async.c:712,1
    - Dst: __redisAsyncDisconnect
      Src: /src/hiredis/async.c:713,1
    - Dst: _EL_ADD_READ
      Src: /src/hiredis/async.c:716,1
    - Dst: redisProcessCallbacks
      Src: /src/hiredis/async.c:717,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ac
    argTypes:
    - redisAsyncContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 709
    functionDepth: 4
    functionLinenumber: 709
    functionLinenumberEnd: 719
    functionName: redisAsyncRead
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - redisBufferRead
    - redisProcessCallbacks
    - _EL_ADD_READ
    - __redisAsyncDisconnect
    linkageType: ''
    returnType: void
    signature: void redisAsyncRead(redisAsyncContext *ac)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/hiredis/async.c:727,1
    - Dst: __redisAsyncHandleConnect
      Src: /src/hiredis/async.c:731,1
    - Dst: redisContext*::funcs::async_read
      Src: /src/hiredis/async.c:738,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ac
    argTypes:
    - redisAsyncContext*
    assertStmts:
    - condition: (!(c->flags & REDIS_IN_CALLBACK))
      pos:
        line_end: 726
        line_start: 726
        source_file: /src/hiredis/async.c
    constantsTouched: []
    func_position:
      end: 739
      start: 724
    functionDepth: 5
    functionLinenumber: 724
    functionLinenumberEnd: 739
    functionName: redisAsyncHandleRead
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - assert
    - __redisAsyncHandleConnect
    - redisContext*::funcs::async_read
    linkageType: ''
    returnType: void
    signature: void redisAsyncHandleRead(redisAsyncContext *ac)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: redisBufferWrite
      Src: /src/hiredis/async.c:745,1
    - Dst: __redisAsyncDisconnect
      Src: /src/hiredis/async.c:746,1
    - Dst: _EL_ADD_WRITE
      Src: /src/hiredis/async.c:750,1
    - Dst: _EL_DEL_WRITE
      Src: /src/hiredis/async.c:752,1
    - Dst: _EL_ADD_READ
      Src: /src/hiredis/async.c:755,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ac
    argTypes:
    - redisAsyncContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 741
    functionDepth: 3
    functionLinenumber: 741
    functionLinenumberEnd: 757
    functionName: redisAsyncWrite
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - _EL_ADD_WRITE
    - redisBufferWrite
    - _EL_DEL_WRITE
    - _EL_ADD_READ
    - __redisAsyncDisconnect
    linkageType: ''
    returnType: void
    signature: void redisAsyncWrite(redisAsyncContext *ac)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/hiredis/async.c:762,1
    - Dst: __redisAsyncHandleConnect
      Src: /src/hiredis/async.c:766,1
    - Dst: redisContext*::funcs::async_write
      Src: /src/hiredis/async.c:773,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - ac
    argTypes:
    - redisAsyncContext*
    assertStmts:
    - condition: (!(c->flags & REDIS_IN_CALLBACK))
      pos:
        line_end: 761
        line_start: 761
        source_file: /src/hiredis/async.c
    constantsTouched: []
    func_position:
      end: 774
      start: 759
    functionDepth: 5
    functionLinenumber: 759
    functionLinenumberEnd: 774
    functionName: redisAsyncHandleWrite
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - assert
    - redisContext*::funcs::async_write
    - __redisAsyncHandleConnect
    linkageType: ''
    returnType: void
    signature: void redisAsyncHandleWrite(redisAsyncContext *ac)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/hiredis/async.c:780,1
    - Dst: __redisSetError
      Src: /src/hiredis/async.c:796,1
    - Dst: __redisAsyncCopyError
      Src: /src/hiredis/async.c:797,1
    - Dst: __redisRunConnectCallback
      Src: /src/hiredis/async.c:801,1
    - Dst: __redisShiftCallback
      Src: /src/hiredis/async.c:804,1
    - Dst: __redisRunCallback
      Src: /src/hiredis/async.c:805,1
    - Dst: __redisAsyncDisconnect
      Src: /src/hiredis/async.c:812,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 1
    argNames:
    - ac
    argTypes:
    - redisAsyncContext*
    assertStmts:
    - condition: (!(c->flags & REDIS_IN_CALLBACK))
      pos:
        line_end: 779
        line_start: 779
        source_file: /src/hiredis/async.c
    constantsTouched: []
    func_position:
      end: 813
      start: 776
    functionDepth: 3
    functionLinenumber: 776
    functionLinenumberEnd: 813
    functionName: redisAsyncHandleTimeout
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - __redisRunCallback
    - __redisSetError
    - __redisRunConnectCallback
    - assert
    - __redisShiftCallback
    - __redisAsyncCopyError
    - __redisAsyncDisconnect
    linkageType: ''
    returnType: void
    signature: void redisAsyncHandleTimeout(redisAsyncContext *ac)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/hiredis/async.c:820,1
    - Dst: strtol
      Src: /src/hiredis/async.c:824,1
    - Dst: strchr
      Src: /src/hiredis/async.c:825,1
    - Dst: assert
      Src: /src/hiredis/async.c:826,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - start
    - str
    - len
    argTypes:
    - char*
    - char**
    - size_t*
    assertStmts:
    - condition: (p)
      pos:
        line_end: 825
        line_start: 825
        source_file: /src/hiredis/async.c
    constantsTouched: []
    func_position:
      end: 829
      start: 817
    functionDepth: 0
    functionLinenumber: 817
    functionLinenumberEnd: 829
    functionName: nextArgument
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - strchr
    - assert
    - strtol
    linkageType: ''
    returnType: char
    signature: char *nextArgument(const char *start, const char **str, size_t *len)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: nextArgument
      Src: /src/hiredis/async.c:858,1
    - Dst: assert
      Src: /src/hiredis/async.c:859,1
    - Dst: tolower
      Src: /src/hiredis/async.c:861,1
    - Dst: strncasecmp
      Src: /src/hiredis/async.c:865,1
    - Dst: nextArgument
      Src: /src/hiredis/async.c:869,1
    - Dst: sdsnewlen
      Src: /src/hiredis/async.c:870,1
    - Dst: dictFind
      Src: /src/hiredis/async.c:879,1
    - Dst: dictGetEntryVal
      Src: /src/hiredis/async.c:882,1
    - Dst: dictReplace
      Src: /src/hiredis/async.c:886,1
    - Dst: sdsfree
      Src: /src/hiredis/async.c:888,1
    - Dst: strncasecmp
      Src: /src/hiredis/async.c:890,1
    - Dst: nextArgument
      Src: /src/hiredis/async.c:903,1
    - Dst: sdsnewlen
      Src: /src/hiredis/async.c:904,1
    - Dst: dictFind
      Src: /src/hiredis/async.c:908,1
    - Dst: dictGetEntryVal
      Src: /src/hiredis/async.c:910,1
    - Dst: sdsfree
      Src: /src/hiredis/async.c:920,1
    - Dst: dictInitIterator
      Src: /src/hiredis/async.c:926,1
    - Dst: dictNext
      Src: /src/hiredis/async.c:927,1
    - Dst: dictGetEntryVal
      Src: /src/hiredis/async.c:928,1
    - Dst: strncasecmp
      Src: /src/hiredis/async.c:943,1
    - Dst: __redisPushCallback
      Src: /src/hiredis/async.c:946,1
    - Dst: __redisPushCallback
      Src: /src/hiredis/async.c:950,1
    - Dst: __redisPushCallback
      Src: /src/hiredis/async.c:953,1
    - Dst: __redisAppendCommand
      Src: /src/hiredis/async.c:958,1
    - Dst: _EL_ADD_WRITE
      Src: /src/hiredis/async.c:961,1
    - Dst: __redisSetError
      Src: /src/hiredis/async.c:965,1
    - Dst: __redisAsyncCopyError
      Src: /src/hiredis/async.c:966,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 93
    argCount: 5
    argNames:
    - ac
    - fn
    - privdata
    - cmd
    - len
    argTypes:
    - redisAsyncContext*
    - redisCallbackFn*
    - void*
    - char*
    - size_t
    assertStmts:
    - condition: (p != NULL)
      pos:
        line_end: 858
        line_start: 858
        source_file: /src/hiredis/async.c
    constantsTouched: []
    func_position:
      end: 968
      start: 834
    functionDepth: 2
    functionLinenumber: 834
    functionLinenumberEnd: 968
    functionName: __redisAsyncCommand
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - __redisAppendCommand
    - dictReplace
    - sdsfree
    - dictInitIterator
    - __redisPushCallback
    - _EL_ADD_WRITE
    - __redisSetError
    - tolower
    - dictFind
    - dictNext
    - assert
    - nextArgument
    - __redisAsyncCopyError
    - sdsnewlen
    - strncasecmp
    - dictGetEntryVal
    linkageType: ''
    returnType: int
    signature: int __redisAsyncCommand(redisAsyncContext *ac, redisCallbackFn *fn,
      void *privdata, const char *cmd, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: redisvFormatCommand
      Src: /src/hiredis/async.c:974,1
    - Dst: __redisAsyncCommand
      Src: /src/hiredis/async.c:980,1
    - Dst: hi_free
      Src: /src/hiredis/async.c:981,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 5
    argNames:
    - ac
    - fn
    - privdata
    - format
    - ap
    argTypes:
    - redisAsyncContext*
    - redisCallbackFn*
    - void*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 970
    functionDepth: 3
    functionLinenumber: 970
    functionLinenumberEnd: 983
    functionName: redisvAsyncCommand
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - redisvFormatCommand
    - hi_free
    - __redisAsyncCommand
    linkageType: ''
    returnType: int
    signature: int redisvAsyncCommand(redisAsyncContext *ac, redisCallbackFn *fn,
      void *privdata, const char *format, va_list ap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/hiredis/async.c:988,1
    - Dst: redisvAsyncCommand
      Src: /src/hiredis/async.c:989,1
    - Dst: va_end
      Src: /src/hiredis/async.c:990,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - ac
    - fn
    - privdata
    - format
    argTypes:
    - redisAsyncContext*
    - redisCallbackFn*
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 992
      start: 985
    functionDepth: 4
    functionLinenumber: 985
    functionLinenumberEnd: 992
    functionName: redisAsyncCommand
    functionSourceFile: /src/hiredis/async.c
    functionUses: 13
    functionsReached:
    - va_start
    - va_end
    - redisvAsyncCommand
    linkageType: ''
    returnType: int
    signature: int redisAsyncCommand(redisAsyncContext *ac, redisCallbackFn *fn, void
      *privdata, const char *format, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: redisFormatSdsCommandArgv
      Src: /src/hiredis/async.c:998,1
    - Dst: __redisAsyncCommand
      Src: /src/hiredis/async.c:1001,1
    - Dst: sdsfree
      Src: /src/hiredis/async.c:1002,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 6
    argNames:
    - ac
    - fn
    - privdata
    - argc
    - argv
    - argvlen
    argTypes:
    - redisAsyncContext*
    - redisCallbackFn*
    - void*
    - int
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 994
    functionDepth: 3
    functionLinenumber: 994
    functionLinenumberEnd: 1004
    functionName: redisAsyncCommandArgv
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - sdsfree
    - redisFormatSdsCommandArgv
    - __redisAsyncCommand
    linkageType: ''
    returnType: int
    signature: int redisAsyncCommandArgv(redisAsyncContext *ac, redisCallbackFn *fn,
      void *privdata, int argc, const char **argv, const size_t *argvlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __redisAsyncCommand
      Src: /src/hiredis/async.c:1007,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - ac
    - fn
    - privdata
    - cmd
    - len
    argTypes:
    - redisAsyncContext*
    - redisCallbackFn*
    - void*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 1006
    functionDepth: 3
    functionLinenumber: 1006
    functionLinenumberEnd: 1009
    functionName: redisAsyncFormattedCommand
    functionSourceFile: /src/hiredis/async.c
    functionUses: 0
    functionsReached:
    - __redisAsyncCommand
    linkageType: ''
    returnType: int
    signature: int redisAsyncFormattedCommand(redisAsyncContext *ac, redisCallbackFn
      *fn, void *privdata, const char *cmd, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ac
    - fn
    argTypes:
    - redisAsyncContext*
    - redisAsyncPushFn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 1011
    functionDepth: 0
    functionLinenumber: 1011
    functionLinenumberEnd: 1015
    functionName: redisAsyncSetPushCallback
    functionSourceFile: /src/hiredis/async.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: redisAsyncPushFn
    signature: redisAsyncPushFn *redisAsyncSetPushCallback(redisAsyncContext *ac,
      redisAsyncPushFn *fn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hi_calloc
      Src: /src/hiredis/async.c:1019,1
    - Dst: __redisSetError
      Src: /src/hiredis/async.c:1021,1
    - Dst: __redisAsyncCopyError
      Src: /src/hiredis/async.c:1022,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - ac
    - tv
    argTypes:
    - redisAsyncContext*
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1034
      start: 1017
    functionDepth: 1
    functionLinenumber: 1017
    functionLinenumberEnd: 1034
    functionName: redisAsyncSetTimeout
    functionSourceFile: /src/hiredis/async.c
    functionUses: 1
    functionsReached:
    - __redisAsyncCopyError
    - __redisSetError
    - hi_calloc
    linkageType: ''
    returnType: int
    signature: int redisAsyncSetTimeout(redisAsyncContext *ac, struct timeval tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - T
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 94
    functionName: SDS_HDR_VAR
    functionSourceFile: /src/hiredis/sds.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SDS_HDR_VAR(T,s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - T
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 95
    functionName: SDS_HDR
    functionSourceFile: /src/hiredis/sds.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SDS_HDR(T,s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - f
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 96
    functionName: SDS_TYPE_5_LEN
    functionSourceFile: /src/hiredis/sds.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SDS_TYPE_5_LEN(f)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SDS_TYPE_5_LEN
      Src: /src/hiredis/sds.h:101,1
    - Dst: SDS_HDR
      Src: /src/hiredis/sds.h:103,1
    - Dst: SDS_HDR
      Src: /src/hiredis/sds.h:105,1
    - Dst: SDS_HDR
      Src: /src/hiredis/sds.h:107,1
    - Dst: SDS_HDR
      Src: /src/hiredis/sds.h:109,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - s
    argTypes:
    - sds
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 112
    functionName: sdslen
    functionSourceFile: /src/hiredis/sds.h
    functionUses: 19
    functionsReached:
    - SDS_TYPE_5_LEN
    - SDS_HDR
    linkageType: ''
    returnType: size_t
    signature: size_t sdslen(const sds s)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SDS_HDR_VAR
      Src: /src/hiredis/sds.h:121,1
    - Dst: SDS_HDR_VAR
      Src: /src/hiredis/sds.h:125,1
    - Dst: SDS_HDR_VAR
      Src: /src/hiredis/sds.h:129,1
    - Dst: SDS_HDR_VAR
      Src: /src/hiredis/sds.h:133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 1
    argNames:
    - s
    argTypes:
    - sds
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 138
    functionName: sdsavail
    functionSourceFile: /src/hiredis/sds.h
    functionUses: 3
    functionsReached:
    - SDS_HDR_VAR
    linkageType: ''
    returnType: size_t
    signature: size_t sdsavail(const sds s)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SDS_HDR
      Src: /src/hiredis/sds.h:150,1
    - Dst: SDS_HDR
      Src: /src/hiredis/sds.h:153,1
    - Dst: SDS_HDR
      Src: /src/hiredis/sds.h:156,1
    - Dst: SDS_HDR
      Src: /src/hiredis/sds.h:159,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - s
    - newlen
    argTypes:
    - sds
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 162
    functionName: sdssetlen
    functionSourceFile: /src/hiredis/sds.h
    functionUses: 9
    functionsReached:
    - SDS_HDR
    linkageType: ''
    returnType: void
    signature: void sdssetlen(sds s, size_t newlen)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SDS_TYPE_5_LEN
      Src: /src/hiredis/sds.h:170,1
    - Dst: SDS_HDR
      Src: /src/hiredis/sds.h:175,1
    - Dst: SDS_HDR
      Src: /src/hiredis/sds.h:178,1
    - Dst: SDS_HDR
      Src: /src/hiredis/sds.h:181,1
    - Dst: SDS_HDR
      Src: /src/hiredis/sds.h:184,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - s
    - inc
    argTypes:
    - sds
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 187
    functionName: sdsinclen
    functionSourceFile: /src/hiredis/sds.h
    functionUses: 1
    functionsReached:
    - SDS_TYPE_5_LEN
    - SDS_HDR
    linkageType: ''
    returnType: void
    signature: void sdsinclen(sds s, size_t inc)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SDS_TYPE_5_LEN
      Src: /src/hiredis/sds.h:194,1
    - Dst: SDS_HDR
      Src: /src/hiredis/sds.h:196,1
    - Dst: SDS_HDR
      Src: /src/hiredis/sds.h:198,1
    - Dst: SDS_HDR
      Src: /src/hiredis/sds.h:200,1
    - Dst: SDS_HDR
      Src: /src/hiredis/sds.h:202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - s
    argTypes:
    - sds
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 205
    functionName: sdsalloc
    functionSourceFile: /src/hiredis/sds.h
    functionUses: 2
    functionsReached:
    - SDS_TYPE_5_LEN
    - SDS_HDR
    linkageType: ''
    returnType: size_t
    signature: size_t sdsalloc(const sds s)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SDS_HDR
      Src: /src/hiredis/sds.h:214,1
    - Dst: SDS_HDR
      Src: /src/hiredis/sds.h:217,1
    - Dst: SDS_HDR
      Src: /src/hiredis/sds.h:220,1
    - Dst: SDS_HDR
      Src: /src/hiredis/sds.h:223,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - s
    - newlen
    argTypes:
    - sds
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 226
    functionName: sdssetalloc
    functionSourceFile: /src/hiredis/sds.h
    functionUses: 2
    functionsReached:
    - SDS_HDR
    linkageType: ''
    returnType: void
    signature: void sdssetalloc(sds s, size_t newlen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: redisReader*::fn::freeObject
      Src: /src/hiredis/read.c:78,1
    - Dst: sdsfree
      Src: /src/hiredis/read.c:83,1
    - Dst: strlen
      Src: /src/hiredis/read.c:92,1
    - Dst: memcpy
      Src: /src/hiredis/read.c:94,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - r
    - type
    - str
    argTypes:
    - redisReader*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 74
    functionDepth: 2
    functionLinenumber: 74
    functionLinenumberEnd: 96
    functionName: __redisReaderSetError
    functionSourceFile: /src/hiredis/read.c
    functionUses: 0
    functionsReached:
    - strlen
    - sdsfree
    - memcpy
    - redisReader*::fn::freeObject
    linkageType: ''
    returnType: void
    signature: void __redisReaderSetError(redisReader *r, int type, const char *str)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/hiredis/read.c:104,1
    - Dst: snprintf
      Src: /src/hiredis/read.c:106,1
    - Dst: snprintf
      Src: /src/hiredis/read.c:107,1
    - Dst: snprintf
      Src: /src/hiredis/read.c:108,1
    - Dst: snprintf
      Src: /src/hiredis/read.c:109,1
    - Dst: snprintf
      Src: /src/hiredis/read.c:110,1
    - Dst: isprint
      Src: /src/hiredis/read.c:112,1
    - Dst: snprintf
      Src: /src/hiredis/read.c:113,1
    - Dst: snprintf
      Src: /src/hiredis/read.c:115,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 3
    argNames:
    - buf
    - size
    - byte
    argTypes:
    - char*
    - size_t
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 120
    functionName: chrtos
    functionSourceFile: /src/hiredis/read.c
    functionUses: 0
    functionsReached:
    - snprintf
    - isprint
    linkageType: ''
    returnType: size_t
    signature: size_t chrtos(char *buf, size_t size, char byte)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: chrtos
      Src: /src/hiredis/read.c:125,1
    - Dst: snprintf
      Src: /src/hiredis/read.c:126,1
    - Dst: __redisReaderSetError
      Src: /src/hiredis/read.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - r
    - byte
    argTypes:
    - redisReader*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 122
    functionDepth: 3
    functionLinenumber: 122
    functionLinenumberEnd: 129
    functionName: __redisReaderSetErrorProtocolByte
    functionSourceFile: /src/hiredis/read.c
    functionUses: 0
    functionsReached:
    - snprintf
    - __redisReaderSetError
    - chrtos
    linkageType: ''
    returnType: void
    signature: void __redisReaderSetErrorProtocolByte(redisReader *r, char byte)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __redisReaderSetError
      Src: /src/hiredis/read.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - r
    argTypes:
    - redisReader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 131
    functionDepth: 3
    functionLinenumber: 131
    functionLinenumberEnd: 133
    functionName: __redisReaderSetErrorOOM
    functionSourceFile: /src/hiredis/read.c
    functionUses: 0
    functionsReached:
    - __redisReaderSetError
    linkageType: ''
    returnType: void
    signature: void __redisReaderSetErrorOOM(redisReader *r)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - r
    - bytes
    argTypes:
    - redisReader*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 143
    functionName: readBytes
    functionSourceFile: /src/hiredis/read.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *readBytes(redisReader *r, unsigned int bytes)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memchr
      Src: /src/hiredis/read.c:157,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - s
    - len
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 169
    functionName: seekNewline
    functionSourceFile: /src/hiredis/read.c
    functionUses: 0
    functionsReached:
    - memchr
    linkageType: ''
    returnType: char
    signature: char *seekNewline(char *s, size_t len)
  - BBCount: 16
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 50
    argCount: 3
    argNames:
    - s
    - slen
    - value
    argTypes:
    - char*
    - size_t
    - long long*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 244
    functionName: string2ll
    functionSourceFile: /src/hiredis/read.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int string2ll(const char *s, size_t slen, long long *value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: seekNewline
      Src: /src/hiredis/read.c:251,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - r
    - _len
    argTypes:
    - redisReader*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 259
    functionName: readLine
    functionSourceFile: /src/hiredis/read.c
    functionUses: 0
    functionsReached:
    - seekNewline
    linkageType: ''
    returnType: char
    signature: char *readLine(redisReader *r, int *_len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/hiredis/read.c:272,1
    - Dst: assert
      Src: /src/hiredis/read.c:281,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - r
    argTypes:
    - redisReader*
    assertStmts:
    - condition: "(prv->type == REDIS_REPLY_ARRAY ||\n               prv->type ==
        REDIS_REPLY_MAP ||\n               prv->type == REDIS_REPLY_ATTR ||\n               prv->type
        == REDIS_REPLY_SET ||\n               prv->type == REDIS_REPLY_PUSH)"
      pos:
        line_end: 275
        line_start: 271
        source_file: /src/hiredis/read.c
    - condition: (cur->idx < prv->elements)
      pos:
        line_end: 280
        line_start: 280
        source_file: /src/hiredis/read.c
    constantsTouched: []
    func_position:
      end: 288
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 288
    functionName: moveToNextTask
    functionSourceFile: /src/hiredis/read.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: void moveToNextTask(redisReader *r)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: readLine
      Src: /src/hiredis/read.c:296,1
    - Dst: string2ll
      Src: /src/hiredis/read.c:300,1
    - Dst: __redisReaderSetError
      Src: /src/hiredis/read.c:301,1
    - Dst: redisReader*::fn::createInteger
      Src: /src/hiredis/read.c:307,1
    - Dst: __redisReaderSetError
      Src: /src/hiredis/read.c:316,1
    - Dst: memcpy
      Src: /src/hiredis/read.c:325,1
    - Dst: strcasecmp
      Src: /src/hiredis/read.c:329,1
    - Dst: strcasecmp
      Src: /src/hiredis/read.c:331,1
    - Dst: strcasecmp
      Src: /src/hiredis/read.c:333,1
    - Dst: strcasecmp
      Src: /src/hiredis/read.c:334,1
    - Dst: ffc_parse_options_default
      Src: /src/hiredis/read.c:340,1
    - Dst: ffc_from_chars_double_options
      Src: /src/hiredis/read.c:342,1
    - Dst: isfinite
      Src: /src/hiredis/read.c:344,1
    - Dst: __redisReaderSetError
      Src: /src/hiredis/read.c:345,1
    - Dst: redisReader*::fn::createDouble
      Src: /src/hiredis/read.c:352,1
    - Dst: strcasecmp
      Src: /src/hiredis/read.c:359,1
    - Dst: strcasecmp
      Src: /src/hiredis/read.c:361,1
    - Dst: strcasecmp
      Src: /src/hiredis/read.c:363,1
    - Dst: strcasecmp
      Src: /src/hiredis/read.c:364,1
    - Dst: strtod
      Src: /src/hiredis/read.c:367,1
    - Dst: isfinite
      Src: /src/hiredis/read.c:372,1
    - Dst: __redisReaderSetError
      Src: /src/hiredis/read.c:373,1
    - Dst: redisReader*::fn::createDouble
      Src: /src/hiredis/read.c:380,1
    - Dst: __redisReaderSetError
      Src: /src/hiredis/read.c:387,1
    - Dst: redisReader*::fn::createNil
      Src: /src/hiredis/read.c:393,1
    - Dst: strchr
      Src: /src/hiredis/read.c:399,1
    - Dst: __redisReaderSetError
      Src: /src/hiredis/read.c:400,1
    - Dst: redisReader*::fn::createBool
      Src: /src/hiredis/read.c:407,1
    - Dst: __redisReaderSetError
      Src: /src/hiredis/read.c:417,1
    - Dst: redisReader*::fn::createString
      Src: /src/hiredis/read.c:423,1
    - Dst: __redisReaderSetError
      Src: /src/hiredis/read.c:430,1
    - Dst: redisReader*::fn::createString
      Src: /src/hiredis/read.c:436,1
    - Dst: __redisReaderSetErrorOOM
      Src: /src/hiredis/read.c:442,1
    - Dst: moveToNextTask
      Src: /src/hiredis/read.c:448,1
    CyclomaticComplexity: 59
    EdgeCount: 59
    ICount: 113
    argCount: 1
    argNames:
    - r
    argTypes:
    - redisReader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 290
    functionDepth: 4
    functionLinenumber: 290
    functionLinenumberEnd: 453
    functionName: processLineItem
    functionSourceFile: /src/hiredis/read.c
    functionUses: 0
    functionsReached:
    - strchr
    - redisReader*::fn::createInteger
    - redisReader*::fn::createBool
    - redisReader*::fn::createNil
    - __redisReaderSetError
    - readLine
    - redisReader*::fn::createString
    - moveToNextTask
    - isfinite
    - string2ll
    - redisReader*::fn::createDouble
    - ffc_parse_options_default
    - strtod
    - strcasecmp
    - __redisReaderSetErrorOOM
    - ffc_from_chars_double_options
    - memcpy
    linkageType: ''
    returnType: int
    signature: int processLineItem(redisReader *r)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: seekNewline
      Src: /src/hiredis/read.c:464,1
    - Dst: string2ll
      Src: /src/hiredis/read.c:469,1
    - Dst: __redisReaderSetError
      Src: /src/hiredis/read.c:470,1
    - Dst: __redisReaderSetError
      Src: /src/hiredis/read.c:476,1
    - Dst: redisReader*::fn::createNil
      Src: /src/hiredis/read.c:484,1
    - Dst: __redisReaderSetError
      Src: /src/hiredis/read.c:495,1
    - Dst: redisReader*::fn::createString
      Src: /src/hiredis/read.c:501,1
    - Dst: __redisReaderSetErrorOOM
      Src: /src/hiredis/read.c:511,1
    - Dst: moveToNextTask
      Src: /src/hiredis/read.c:519,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 45
    argCount: 1
    argNames:
    - r
    argTypes:
    - redisReader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 455
    functionDepth: 4
    functionLinenumber: 455
    functionLinenumberEnd: 525
    functionName: processBulkItem
    functionSourceFile: /src/hiredis/read.c
    functionUses: 0
    functionsReached:
    - redisReader*::fn::createString
    - redisReader*::fn::createNil
    - __redisReaderSetError
    - string2ll
    - seekNewline
    - __redisReaderSetErrorOOM
    - moveToNextTask
    linkageType: ''
    returnType: int
    signature: int processBulkItem(redisReader *r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hi_realloc
      Src: /src/hiredis/read.c:533,1
    - Dst: hi_calloc
      Src: /src/hiredis/read.c:541,1
    - Dst: __redisReaderSetErrorOOM
      Src: /src/hiredis/read.c:548,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - r
    argTypes:
    - redisReader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 527
    functionDepth: 4
    functionLinenumber: 527
    functionLinenumberEnd: 550
    functionName: redisReaderGrow
    functionSourceFile: /src/hiredis/read.c
    functionUses: 0
    functionsReached:
    - hi_realloc
    - __redisReaderSetErrorOOM
    - hi_calloc
    linkageType: ''
    returnType: int
    signature: int redisReaderGrow(redisReader *r)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: redisReaderGrow
      Src: /src/hiredis/read.c:561,1
    - Dst: readLine
      Src: /src/hiredis/read.c:565,1
    - Dst: string2ll
      Src: /src/hiredis/read.c:566,1
    - Dst: __redisReaderSetError
      Src: /src/hiredis/read.c:567,1
    - Dst: __redisReaderSetError
      Src: /src/hiredis/read.c:577,1
    - Dst: redisReader*::fn::createNil
      Src: /src/hiredis/read.c:584,1
    - Dst: __redisReaderSetErrorOOM
      Src: /src/hiredis/read.c:589,1
    - Dst: moveToNextTask
      Src: /src/hiredis/read.c:593,1
    - Dst: redisReader*::fn::createArray
      Src: /src/hiredis/read.c:598,1
    - Dst: __redisReaderSetErrorOOM
      Src: /src/hiredis/read.c:603,1
    - Dst: moveToNextTask
      Src: /src/hiredis/read.c:619,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 53
    argCount: 1
    argNames:
    - r
    argTypes:
    - redisReader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 553
    functionDepth: 5
    functionLinenumber: 553
    functionLinenumberEnd: 629
    functionName: processAggregateItem
    functionSourceFile: /src/hiredis/read.c
    functionUses: 0
    functionsReached:
    - redisReader*::fn::createNil
    - redisReaderGrow
    - readLine
    - __redisReaderSetError
    - redisReader*::fn::createArray
    - string2ll
    - __redisReaderSetErrorOOM
    - moveToNextTask
    linkageType: ''
    returnType: int
    signature: int processAggregateItem(redisReader *r)
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: readBytes
      Src: /src/hiredis/read.c:637,1
    - Dst: __redisReaderSetErrorProtocolByte
      Src: /src/hiredis/read.c:682,1
    - Dst: processLineItem
      Src: /src/hiredis/read.c:700,1
    - Dst: processBulkItem
      Src: /src/hiredis/read.c:703,1
    - Dst: processAggregateItem
      Src: /src/hiredis/read.c:709,1
    - Dst: assert
      Src: /src/hiredis/read.c:711,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 76
    argCount: 1
    argNames:
    - r
    argTypes:
    - redisReader*
    assertStmts:
    - condition: (NULL)
      pos:
        line_end: 710
        line_start: 710
        source_file: /src/hiredis/read.c
    constantsTouched: []
    func_position:
      end: 714
      start: 631
    functionDepth: 6
    functionLinenumber: 631
    functionLinenumberEnd: 714
    functionName: processItem
    functionSourceFile: /src/hiredis/read.c
    functionUses: 0
    functionsReached:
    - processBulkItem
    - __redisReaderSetErrorProtocolByte
    - processLineItem
    - readBytes
    - processAggregateItem
    - assert
    linkageType: ''
    returnType: int
    signature: int processItem(redisReader *r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: hi_calloc
      Src: /src/hiredis/read.c:719,1
    - Dst: sdsempty
      Src: /src/hiredis/read.c:723,1
    - Dst: hi_calloc
      Src: /src/hiredis/read.c:727,1
    - Dst: hi_calloc
      Src: /src/hiredis/read.c:732,1
    - Dst: redisReaderFree
      Src: /src/hiredis/read.c:744,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 1
    argNames:
    - fn
    argTypes:
    - redisReplyObjectFunctions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 716
    functionDepth: 3
    functionLinenumber: 716
    functionLinenumberEnd: 746
    functionName: redisReaderCreateWithFunctions
    functionSourceFile: /src/hiredis/read.c
    functionUses: 0
    functionsReached:
    - sdsempty
    - redisReaderFree
    - hi_calloc
    linkageType: ''
    returnType: redisReader
    signature: redisReader *redisReaderCreateWithFunctions(redisReplyObjectFunctions
      *fn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: redisReader*::fn::freeObject
      Src: /src/hiredis/read.c:753,1
    - Dst: hi_free
      Src: /src/hiredis/read.c:758,1
    - Dst: hi_free
      Src: /src/hiredis/read.c:761,1
    - Dst: sdsfree
      Src: /src/hiredis/read.c:764,1
    - Dst: hi_free
      Src: /src/hiredis/read.c:765,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 1
    argNames:
    - r
    argTypes:
    - redisReader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 748
    functionDepth: 2
    functionLinenumber: 748
    functionLinenumberEnd: 766
    functionName: redisReaderFree
    functionSourceFile: /src/hiredis/read.c
    functionUses: 2
    functionsReached:
    - hi_free
    - sdsfree
    - redisReader*::fn::freeObject
    linkageType: ''
    returnType: void
    signature: void redisReaderFree(redisReader *r)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sdsavail
      Src: /src/hiredis/read.c:778,1
    - Dst: sdsfree
      Src: /src/hiredis/read.c:779,1
    - Dst: sdsempty
      Src: /src/hiredis/read.c:780,1
    - Dst: sdscatlen
      Src: /src/hiredis/read.c:786,1
    - Dst: sdslen
      Src: /src/hiredis/read.c:790,1
    - Dst: __redisReaderSetErrorOOM
      Src: /src/hiredis/read.c:795,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 3
    argNames:
    - r
    - buf
    - len
    argTypes:
    - redisReader*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 768
    functionDepth: 4
    functionLinenumber: 768
    functionLinenumberEnd: 797
    functionName: redisReaderFeed
    functionSourceFile: /src/hiredis/read.c
    functionUses: 1
    functionsReached:
    - sdsavail
    - sdsfree
    - sdsempty
    - sdslen
    - sdscatlen
    - __redisReaderSetErrorOOM
    linkageType: ''
    returnType: int
    signature: int redisReaderFeed(redisReader *r, const char *buf, size_t len)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: processItem
      Src: /src/hiredis/read.c:825,1
    - Dst: sdsrange
      Src: /src/hiredis/read.c:835,1
    - Dst: sdslen
      Src: /src/hiredis/read.c:837,1
    - Dst: redisReader*::fn::freeObject
      Src: /src/hiredis/read.c:845,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 37
    argCount: 2
    argNames:
    - r
    - reply
    argTypes:
    - redisReader*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 850
      start: 799
    functionDepth: 7
    functionLinenumber: 799
    functionLinenumberEnd: 850
    functionName: redisReaderGetReply
    functionSourceFile: /src/hiredis/read.c
    functionUses: 1
    functionsReached:
    - sdsrange
    - processItem
    - redisReader*::fn::freeObject
    - sdslen
    linkageType: ''
    returnType: int
    signature: int redisReaderGetReply(redisReader *r, void **reply)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - unsigned char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 60
    functionName: dictGenHashFunction
    functionSourceFile: /src/hiredis/dict.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int dictGenHashFunction(const unsigned char *buf, int len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ht
    argTypes:
    - dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 71
    functionName: _dictReset
    functionSourceFile: /src/hiredis/dict.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void _dictReset(dict *ht)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hi_malloc
      Src: /src/hiredis/dict.c:75,1
    - Dst: _dictInit
      Src: /src/hiredis/dict.c:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - type
    - privDataPtr
    argTypes:
    - dictType*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 81
    functionName: dictCreate
    functionSourceFile: /src/hiredis/dict.c
    functionUses: 1
    functionsReached:
    - _dictInit
    - hi_malloc
    linkageType: ''
    returnType: dict
    signature: dict *dictCreate(dictType *type, void *privDataPtr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _dictReset
      Src: /src/hiredis/dict.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ht
    - type
    - privDataPtr
    argTypes:
    - dict*
    - dictType*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 89
    functionName: _dictInit
    functionSourceFile: /src/hiredis/dict.c
    functionUses: 1
    functionsReached:
    - _dictReset
    linkageType: ''
    returnType: int
    signature: int _dictInit(dict *ht, dictType *type, void *privDataPtr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: _dictNextPower
      Src: /src/hiredis/dict.c:94,1
    - Dst: _dictInit
      Src: /src/hiredis/dict.c:101,1
    - Dst: hi_calloc
      Src: /src/hiredis/dict.c:104,1
    - Dst: dictHashKey
      Src: /src/hiredis/dict.c:124,1
    - Dst: assert
      Src: /src/hiredis/dict.c:132,1
    - Dst: hi_free
      Src: /src/hiredis/dict.c:133,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 2
    argNames:
    - ht
    - size
    argTypes:
    - dict*
    - unsigned long
    assertStmts:
    - condition: (ht->used == 0)
      pos:
        line_end: 131
        line_start: 131
        source_file: /src/hiredis/dict.c
    constantsTouched: []
    func_position:
      end: 138
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 138
    functionName: dictExpand
    functionSourceFile: /src/hiredis/dict.c
    functionUses: 0
    functionsReached:
    - _dictNextPower
    - hi_free
    - dictHashKey
    - hi_calloc
    - _dictInit
    - assert
    linkageType: ''
    returnType: int
    signature: int dictExpand(dict *ht, unsigned long size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _dictKeyIndex
      Src: /src/hiredis/dict.c:147,1
    - Dst: hi_malloc
      Src: /src/hiredis/dict.c:151,1
    - Dst: dictSetHashKey
      Src: /src/hiredis/dict.c:159,1
    - Dst: dictSetHashVal
      Src: /src/hiredis/dict.c:160,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - ht
    - key
    - val
    argTypes:
    - dict*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 163
    functionName: dictAdd
    functionSourceFile: /src/hiredis/dict.c
    functionUses: 0
    functionsReached:
    - dictSetHashKey
    - dictSetHashVal
    - hi_malloc
    - _dictKeyIndex
    linkageType: ''
    returnType: int
    signature: int dictAdd(dict *ht, void *key, void *val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dictAdd
      Src: /src/hiredis/dict.c:174,1
    - Dst: dictFind
      Src: /src/hiredis/dict.c:177,1
    - Dst: dictSetHashVal
      Src: /src/hiredis/dict.c:188,1
    - Dst: dictFreeEntryVal
      Src: /src/hiredis/dict.c:189,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - ht
    - key
    - val
    argTypes:
    - dict*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 169
    functionDepth: 2
    functionLinenumber: 169
    functionLinenumberEnd: 191
    functionName: dictReplace
    functionSourceFile: /src/hiredis/dict.c
    functionUses: 1
    functionsReached:
    - dictAdd
    - dictSetHashVal
    - dictFind
    - dictFreeEntryVal
    linkageType: ''
    returnType: int
    signature: int dictReplace(dict *ht, void *key, void *val)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dictHashKey
      Src: /src/hiredis/dict.c:200,1
    - Dst: dictCompareHashKeys
      Src: /src/hiredis/dict.c:205,1
    - Dst: dictFreeEntryKey
      Src: /src/hiredis/dict.c:212,1
    - Dst: dictFreeEntryVal
      Src: /src/hiredis/dict.c:213,1
    - Dst: hi_free
      Src: /src/hiredis/dict.c:214,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - ht
    - key
    argTypes:
    - dict*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 222
    functionName: dictDelete
    functionSourceFile: /src/hiredis/dict.c
    functionUses: 1
    functionsReached:
    - hi_free
    - dictHashKey
    - dictFreeEntryKey
    - dictFreeEntryVal
    - dictCompareHashKeys
    linkageType: ''
    returnType: int
    signature: int dictDelete(dict *ht, const void *key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dictFreeEntryKey
      Src: /src/hiredis/dict.c:235,1
    - Dst: dictFreeEntryVal
      Src: /src/hiredis/dict.c:236,1
    - Dst: hi_free
      Src: /src/hiredis/dict.c:237,1
    - Dst: hi_free
      Src: /src/hiredis/dict.c:243,1
    - Dst: _dictReset
      Src: /src/hiredis/dict.c:245,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - ht
    argTypes:
    - dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 225
    functionDepth: 1
    functionLinenumber: 225
    functionLinenumberEnd: 247
    functionName: _dictClear
    functionSourceFile: /src/hiredis/dict.c
    functionUses: 0
    functionsReached:
    - hi_free
    - dictFreeEntryVal
    - _dictReset
    - dictFreeEntryKey
    linkageType: ''
    returnType: int
    signature: int _dictClear(dict *ht)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _dictClear
      Src: /src/hiredis/dict.c:251,1
    - Dst: hi_free
      Src: /src/hiredis/dict.c:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ht
    argTypes:
    - dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 250
    functionDepth: 2
    functionLinenumber: 250
    functionLinenumberEnd: 253
    functionName: dictRelease
    functionSourceFile: /src/hiredis/dict.c
    functionUses: 2
    functionsReached:
    - _dictClear
    - hi_free
    linkageType: ''
    returnType: void
    signature: void dictRelease(dict *ht)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dictHashKey
      Src: /src/hiredis/dict.c:260,1
    - Dst: dictCompareHashKeys
      Src: /src/hiredis/dict.c:263,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ht
    - key
    argTypes:
    - dict*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 268
    functionName: dictFind
    functionSourceFile: /src/hiredis/dict.c
    functionUses: 3
    functionsReached:
    - dictCompareHashKeys
    - dictHashKey
    linkageType: ''
    returnType: dictEntry
    signature: dictEntry *dictFind(dict *ht, const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - iter
    - ht
    argTypes:
    - dictIterator*
    - dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 275
    functionName: dictInitIterator
    functionSourceFile: /src/hiredis/dict.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dictInitIterator(dictIterator *iter, dict *ht)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - iter
    argTypes:
    - dictIterator*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 277
    functionDepth: 0
    functionLinenumber: 277
    functionLinenumberEnd: 295
    functionName: dictNext
    functionSourceFile: /src/hiredis/dict.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: dictEntry
    signature: dictEntry *dictNext(dictIterator *iter)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dictExpand
      Src: /src/hiredis/dict.c:304,1
    - Dst: dictExpand
      Src: /src/hiredis/dict.c:306,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ht
    argTypes:
    - dict*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 300
    functionDepth: 3
    functionLinenumber: 300
    functionLinenumberEnd: 308
    functionName: _dictExpandIfNeeded
    functionSourceFile: /src/hiredis/dict.c
    functionUses: 0
    functionsReached:
    - dictExpand
    linkageType: ''
    returnType: int
    signature: int _dictExpandIfNeeded(dict *ht)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - size
    argTypes:
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 320
    functionName: _dictNextPower
    functionSourceFile: /src/hiredis/dict.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long _dictNextPower(unsigned long size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _dictExpandIfNeeded
      Src: /src/hiredis/dict.c:330,1
    - Dst: dictHashKey
      Src: /src/hiredis/dict.c:333,1
    - Dst: dictCompareHashKeys
      Src: /src/hiredis/dict.c:337,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - ht
    - key
    argTypes:
    - dict*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 325
    functionDepth: 4
    functionLinenumber: 325
    functionLinenumberEnd: 342
    functionName: _dictKeyIndex
    functionSourceFile: /src/hiredis/dict.c
    functionUses: 1
    functionsReached:
    - _dictExpandIfNeeded
    - dictCompareHashKeys
    - dictHashKey
    linkageType: ''
    returnType: int
    signature: int _dictKeyIndex(dict *ht, const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 130
    functionName: FFC_VERSION_STRINGIFY_
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FFC_VERSION_STRINGIFY_(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 131
    functionName: FFC_VERSION_STRINGIFY
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FFC_VERSION_STRINGIFY(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 332
    functionDepth: 0
    functionLinenumber: 332
    functionLinenumberEnd: 333
    functionName: ffc_debug
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ffc_debug(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 335
    functionName: ffc_debug
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ffc_debug(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/hiredis/ffc.h:341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - d
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 343
    functionName: ffc_get_double_bits
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_get_double_bits(double d)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/hiredis/ffc.h:348,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - d
    argTypes:
    - float
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 350
    functionName: ffc_get_float_bits
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_get_float_bits(float d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ik
    argTypes:
    - ffc_int_kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 386
    functionName: ffc_int_kind_is_signed
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_int_kind_is_signed(ffc_int_kind ik)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ffc_get_double_bits
      Src: /src/hiredis/ffc.h:393,1
    - Dst: ffc_get_float_bits
      Src: /src/hiredis/ffc.h:395,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - value
    - vk
    argTypes:
    - ffc_value
    - ffc_value_kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 389
    functionDepth: 1
    functionLinenumber: 389
    functionLinenumberEnd: 398
    functionName: ffc_get_value_bits
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_get_float_bits
    - ffc_get_double_bits
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_get_value_bits(ffc_value value, ffc_value_kind vk)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - ik
    argTypes:
    - ffc_int_kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 400
    functionDepth: 0
    functionLinenumber: 400
    functionLinenumberEnd: 409
    functionName: ffc_int_value_max
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_int_value_max(ffc_int_kind ik)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - ptr
    - ','
    - value_kind
    - ','
    - value
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 411
    functionDepth: 0
    functionLinenumber: 411
    functionLinenumberEnd: 413
    functionName: ffc_set_value
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ffc_set_value(ptr, value_kind, value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ptr
    - ','
    - value_kind
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 414
    functionDepth: 0
    functionLinenumber: 414
    functionLinenumberEnd: 416
    functionName: ffc_read_value
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ffc_read_value(ptr, value_kind)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - vk
    argTypes:
    - ffc_value_kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 428
    functionName: ffc_get_value_size
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_get_value_size(ffc_value_kind vk)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_clzll
      Src: /src/hiredis/ffc.h:553,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 1
    argNames:
    - x
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 550
    functionDepth: 0
    functionLinenumber: 550
    functionLinenumberEnd: 565
    functionName: ffc_count_leading_zeroes
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - __builtin_clzll
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_count_leading_zeroes(uint64_t x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 568
    functionDepth: 0
    functionLinenumber: 568
    functionLinenumberEnd: 593
    functionName: ffc_mul_u64
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_mul_u64(uint64_t a, uint64_t b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - x
    - y
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 596
    functionDepth: 0
    functionLinenumber: 596
    functionLinenumberEnd: 598
    functionName: ffc_emulu
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_emulu(uint32_t x, uint32_t y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_emulu
      Src: /src/hiredis/ffc.h:602,1
    - Dst: ffc_emulu
      Src: /src/hiredis/ffc.h:603,1
    - Dst: ffc_emulu
      Src: /src/hiredis/ffc.h:604,1
    - Dst: ffc_emulu
      Src: /src/hiredis/ffc.h:607,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ab
    - cd
    - hi
    argTypes:
    - uint64_t
    - uint64_t
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 600
    functionDepth: 1
    functionLinenumber: 600
    functionLinenumberEnd: 610
    functionName: ffc_umul128_generic
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_emulu
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_umul128_generic(uint64_t ab, uint64_t cd, uint64_t
      *hi)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __umulh
      Src: /src/hiredis/ffc.h:619,1
    - Dst: _umul128
      Src: /src/hiredis/ffc.h:623,1
    - Dst: ffc_umul128_generic
      Src: /src/hiredis/ffc.h:629,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 613
    functionDepth: 2
    functionLinenumber: 613
    functionLinenumberEnd: 632
    functionName: ffc_full_multiplication
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_umul128_generic
    - _umul128
    - __umulh
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_full_multiplication(uint64_t a, uint64_t b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - value_kind
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 672
    functionDepth: 0
    functionLinenumber: 672
    functionLinenumberEnd: 673
    functionName: ffc_const
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ffc_const(value_kind, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 696
    functionDepth: 0
    functionLinenumber: 696
    functionLinenumberEnd: 698
    functionName: ffc_is_space
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_is_space(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 723
      start: 720
    functionDepth: 0
    functionLinenumber: 720
    functionLinenumberEnd: 723
    functionName: ffc_char_to_digit
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_char_to_digit(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - base
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 730
    functionDepth: 0
    functionLinenumber: 730
    functionLinenumberEnd: 732
    functionName: ffc_max_digits_u64
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_max_digits_u64(int base)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 737
      start: 734
    functionDepth: 0
    functionLinenumber: 734
    functionLinenumberEnd: 737
    functionName: ffc_is_integer
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_is_integer(char c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - base
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 754
    functionDepth: 0
    functionLinenumber: 754
    functionLinenumberEnd: 756
    functionName: ffc_min_safe_u64_of_base
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_min_safe_u64_of_base(int base)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/hiredis/ffc.h:769,1
    - Dst: memcpy
      Src: /src/hiredis/ffc.h:770,1
    - Dst: memcpy
      Src: /src/hiredis/ffc.h:775,1
    - Dst: memcpy
      Src: /src/hiredis/ffc.h:776,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 3
    argNames:
    - actual_mixedcase
    - expected_lowercase
    - char_width
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 785
      start: 758
    functionDepth: 0
    functionLinenumber: 758
    functionLinenumberEnd: 785
    functionName: ffc_strncasecmp3
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_strncasecmp3(char const *actual_mixedcase, char const
      *expected_lowercase, size_t char_width)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/hiredis/ffc.h:794,1
    - Dst: memcpy
      Src: /src/hiredis/ffc.h:795,1
    - Dst: memcpy
      Src: /src/hiredis/ffc.h:801,1
    - Dst: memcpy
      Src: /src/hiredis/ffc.h:802,1
    - Dst: memcpy
      Src: /src/hiredis/ffc.h:810,1
    - Dst: memcpy
      Src: /src/hiredis/ffc.h:811,1
    - Dst: memcpy
      Src: /src/hiredis/ffc.h:816,1
    - Dst: memcpy
      Src: /src/hiredis/ffc.h:817,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 36
    argCount: 3
    argNames:
    - actual_mixedcase
    - expected_lowercase
    - char_width
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 787
    functionDepth: 0
    functionLinenumber: 787
    functionLinenumberEnd: 825
    functionName: ffc_strncasecmp5
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_strncasecmp5(char *actual_mixedcase, char const *expected_lowercase,
      size_t char_width)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 833
    functionDepth: 0
    functionLinenumber: 833
    functionLinenumberEnd: 897
    functionName: ffc_rounds_to_nearest
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_rounds_to_nearest(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:904,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:905,1
    - Dst: memcpy
      Src: /src/hiredis/ffc.h:906,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:909,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:910,1
    - Dst: memcpy
      Src: /src/hiredis/ffc.h:911,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - negative
    - am
    - value
    - vk
    argTypes:
    - bool
    - ffc_adjusted_mantissa
    - ffc_value*
    - ffc_value_kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 899
    functionDepth: 1
    functionLinenumber: 899
    functionLinenumberEnd: 913
    functionName: ffc_am_to_float
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - memcpy
    - ffc_const
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_am_to_float(bool negative, ffc_adjusted_mantissa am,
      ffc_value* value, ffc_value_kind vk)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 971
    functionDepth: 0
    functionLinenumber: 971
    functionLinenumberEnd: 973
    functionName: FFC_ASSERT
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FFC_ASSERT(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 976
    functionDepth: 0
    functionLinenumber: 976
    functionLinenumberEnd: 978
    functionName: FFC_DEBUG_ASSERT
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FFC_DEBUG_ASSERT(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 989
    functionDepth: 0
    functionLinenumber: 989
    functionLinenumberEnd: 995
    functionName: ffc_byteswap
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_byteswap(uint64_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1001
      start: 997
    functionDepth: 0
    functionLinenumber: 997
    functionLinenumberEnd: 1001
    functionName: ffc_byteswap_32
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_byteswap_32(uint32_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/hiredis/ffc.h:1006,1
    - Dst: ffc_byteswap
      Src: /src/hiredis/ffc.h:1009,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - chars
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1012
      start: 1003
    functionDepth: 1
    functionLinenumber: 1003
    functionLinenumberEnd: 1012
    functionName: ffc_read8_to_u64
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_byteswap
    - memcpy
    linkageType: ''
    returnType: ffc_inline
    signature: ffc_inline ffc_read8_to_u64(char const *chars)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/hiredis/ffc.h:1018,1
    - Dst: ffc_byteswap_32
      Src: /src/hiredis/ffc.h:1020,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - chars
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1023
      start: 1015
    functionDepth: 1
    functionLinenumber: 1015
    functionLinenumberEnd: 1023
    functionName: ffc_read4_to_u32
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_byteswap_32
    - memcpy
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_read4_to_u32(char const *chars)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_packus_epi16
      Src: /src/hiredis/ffc.h:1030,1
    - Dst: _mm_cvtsi128_si64
      Src: /src/hiredis/ffc.h:1032,1
    - Dst: _mm_storel_epi64
      Src: /src/hiredis/ffc.h:1036,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - data
    argTypes:
    - __m128i
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1040
      start: 1027
    functionDepth: 0
    functionLinenumber: 1027
    functionLinenumberEnd: 1040
    functionName: ffc_simd_read8_to_u64_simdreg
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - _mm_cvtsi128_si64
    - _mm_storel_epi64
    - _mm_packus_epi16
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_simd_read8_to_u64_simdreg(__m128i const data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _mm_loadu_si128
      Src: /src/hiredis/ffc.h:1046,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - chars
    argTypes:
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 1042
    functionDepth: 0
    functionLinenumber: 1042
    functionLinenumberEnd: 1048
    functionName: ffc_simd_read8_to_u64
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - _mm_loadu_si128
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_simd_read8_to_u64(uint16_t const *chars)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vmovn_u16
      Src: /src/hiredis/ffc.h:1055,1
    - Dst: vget_lane_u64
      Src: /src/hiredis/ffc.h:1056,1
    - Dst: vreinterpret_u64_u8
      Src: /src/hiredis/ffc.h:1056,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - uint16x8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1058
      start: 1052
    functionDepth: 0
    functionLinenumber: 1052
    functionLinenumberEnd: 1058
    functionName: ffc_simd_read8_to_u64_simdreg
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - vreinterpret_u64_u8
    - vmovn_u16
    - vget_lane_u64
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_simd_read8_to_u64_simdreg(uint16x8_t const data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - chars
    argTypes:
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1065
      start: 1060
    functionDepth: 0
    functionLinenumber: 1060
    functionLinenumberEnd: 1065
    functionName: ffc_simd_read8_to_u64
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_simd_read8_to_u64(uint16_t const *chars)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1079
      start: 1070
    functionDepth: 0
    functionLinenumber: 1070
    functionLinenumberEnd: 1079
    functionName: ffc_parse_eight_digits_unrolled_swar
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_parse_eight_digits_unrolled_swar(uint64_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_parse_eight_digits_unrolled_swar
      Src: /src/hiredis/ffc.h:1084,1
    - Dst: ffc_read8_to_u64
      Src: /src/hiredis/ffc.h:1084,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - chars
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1085
      start: 1082
    functionDepth: 2
    functionLinenumber: 1082
    functionLinenumberEnd: 1085
    functionName: ffc_parse_eight_digits_unrolled
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_parse_eight_digits_unrolled_swar
    - ffc_read8_to_u64
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_parse_eight_digits_unrolled(char const *chars)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1092
      start: 1088
    functionDepth: 0
    functionLinenumber: 1088
    functionLinenumberEnd: 1092
    functionName: ffc_is_made_of_eight_digits_fast
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_is_made_of_eight_digits_fast(uint64_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1097
      start: 1094
    functionDepth: 0
    functionLinenumber: 1094
    functionLinenumberEnd: 1097
    functionName: ffc_is_made_of_four_digits_fast
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_is_made_of_four_digits_fast(uint32_t val)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1104
      start: 1099
    functionDepth: 0
    functionLinenumber: 1099
    functionLinenumberEnd: 1104
    functionName: ffc_parse_four_digits_unrolled
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_parse_four_digits_unrolled(uint32_t val)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _mm_loadu_si128
      Src: /src/hiredis/ffc.h:1116,1
    - Dst: _mm_add_epi16
      Src: /src/hiredis/ffc.h:1120,1
    - Dst: _mm_set1_epi16
      Src: /src/hiredis/ffc.h:1120,1
    - Dst: _mm_cmpgt_epi16
      Src: /src/hiredis/ffc.h:1121,1
    - Dst: _mm_set1_epi16
      Src: /src/hiredis/ffc.h:1121,1
    - Dst: _mm_movemask_epi8
      Src: /src/hiredis/ffc.h:1123,1
    - Dst: ffc_parse_eight_digits_unrolled_swar
      Src: /src/hiredis/ffc.h:1124,1
    - Dst: ffc_simd_read8_to_u64_simdreg
      Src: /src/hiredis/ffc.h:1124,1
    - Dst: vld1q_u16
      Src: /src/hiredis/ffc.h:1131,1
    - Dst: vsubq_u16
      Src: /src/hiredis/ffc.h:1135,1
    - Dst: vmovq_n_u16
      Src: /src/hiredis/ffc.h:1135,1
    - Dst: vcltq_u16
      Src: /src/hiredis/ffc.h:1136,1
    - Dst: vmovq_n_u16
      Src: /src/hiredis/ffc.h:1136,1
    - Dst: vminvq_u16
      Src: /src/hiredis/ffc.h:1138,1
    - Dst: ffc_parse_eight_digits_unrolled_swar
      Src: /src/hiredis/ffc.h:1139,1
    - Dst: ffc_simd_read8_to_u64_simdreg
      Src: /src/hiredis/ffc.h:1139,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - chars
    - i
    argTypes:
    - uint16_t*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1149
      start: 1111
    functionDepth: 1
    functionLinenumber: 1111
    functionLinenumberEnd: 1149
    functionName: ffc_simd_parse_if_eight_digits_unrolled_simd
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - vld1q_u16
    - vcltq_u16
    - _mm_loadu_si128
    - vsubq_u16
    - _mm_movemask_epi8
    - ffc_simd_read8_to_u64_simdreg
    - vmovq_n_u16
    - _mm_set1_epi16
    - ffc_parse_eight_digits_unrolled_swar
    - vminvq_u16
    - _mm_add_epi16
    - _mm_cmpgt_epi16
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_simd_parse_if_eight_digits_unrolled_simd(uint16_t
      const *chars, uint64_t* i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - acc
    - d
    argTypes:
    - uint64_t
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1165
      start: 1158
    functionDepth: 0
    functionLinenumber: 1158
    functionLinenumberEnd: 1165
    functionName: ffc_digit_acc10
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_digit_acc10(uint64_t acc, uint64_t d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - acc
    - ','
    - d_expr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1167
      start: 1166
    functionDepth: 0
    functionLinenumber: 1166
    functionLinenumberEnd: 1167
    functionName: FFC_DIGIT_ACC10
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FFC_DIGIT_ACC10(acc, d_expr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - acc
    - ','
    - d_expr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1169
      start: 1168
    functionDepth: 0
    functionLinenumber: 1168
    functionLinenumberEnd: 1169
    functionName: FFC_DIGIT_ACC10
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FFC_DIGIT_ACC10(acc, d_expr)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ffc_read8_to_u64
      Src: /src/hiredis/ffc.h:1182,1
    - Dst: ffc_is_made_of_eight_digits_fast
      Src: /src/hiredis/ffc.h:1183,1
    - Dst: ffc_read8_to_u64
      Src: /src/hiredis/ffc.h:1184,1
    - Dst: ffc_is_made_of_eight_digits_fast
      Src: /src/hiredis/ffc.h:1185,1
    - Dst: ffc_parse_eight_digits_unrolled_swar
      Src: /src/hiredis/ffc.h:1186,1
    - Dst: ffc_parse_eight_digits_unrolled_swar
      Src: /src/hiredis/ffc.h:1190,1
    - Dst: ffc_parse_eight_digits_unrolled_swar
      Src: /src/hiredis/ffc.h:1191,1
    - Dst: ffc_read8_to_u64
      Src: /src/hiredis/ffc.h:1196,1
    - Dst: ffc_is_made_of_eight_digits_fast
      Src: /src/hiredis/ffc.h:1197,1
    - Dst: ffc_parse_eight_digits_unrolled_swar
      Src: /src/hiredis/ffc.h:1198,1
    - Dst: ffc_read8_to_u64
      Src: /src/hiredis/ffc.h:1205,1
    - Dst: ffc_is_made_of_eight_digits_fast
      Src: /src/hiredis/ffc.h:1206,1
    - Dst: ffc_parse_eight_digits_unrolled_swar
      Src: /src/hiredis/ffc.h:1207,1
    - Dst: ffc_read4_to_u32
      Src: /src/hiredis/ffc.h:1214,1
    - Dst: ffc_is_made_of_four_digits_fast
      Src: /src/hiredis/ffc.h:1215,1
    - Dst: ffc_parse_four_digits_unrolled
      Src: /src/hiredis/ffc.h:1216,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 32
    argCount: 3
    argNames:
    - p
    - pend
    - i
    argTypes:
    - char**
    - char*
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1171
    functionDepth: 2
    functionLinenumber: 1171
    functionLinenumberEnd: 1220
    functionName: ffc_loop_parse_if_eight_digits
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_is_made_of_four_digits_fast
    - ffc_read4_to_u32
    - ffc_read8_to_u64
    - ffc_is_made_of_eight_digits_fast
    - ffc_parse_eight_digits_unrolled_swar
    - ffc_parse_four_digits_unrolled
    linkageType: ''
    returnType: ffc_internal
    signature: "ffc_internal ffc_loop_parse_if_eight_digits(char const **p, char const
      *const pend,\n                           uint64_t* i)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1231
      start: 1226
    functionDepth: 0
    functionLinenumber: 1226
    functionLinenumberEnd: 1231
    functionName: ffc_parse_options_default
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: ffc_parse_options
    signature: ffc_parse_options ffc_parse_options_default(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - p
    - outcome
    argTypes:
    - char*
    - ffc_parse_outcome
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1256
      start: 1249
    functionDepth: 0
    functionLinenumber: 1249
    functionLinenumberEnd: 1256
    functionName: ffc_report_parse_error
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_report_parse_error(char const *p, ffc_parse_outcome
      outcome)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: FFC_DEBUG_ASSERT
      Src: /src/hiredis/ffc.h:1270,1
    - Dst: ffc_report_parse_error
      Src: /src/hiredis/ffc.h:1280,1
    - Dst: ffc_is_integer
      Src: /src/hiredis/ffc.h:1283,1
    - Dst: ffc_report_parse_error
      Src: /src/hiredis/ffc.h:1284,1
    - Dst: ffc_is_integer
      Src: /src/hiredis/ffc.h:1288,1
    - Dst: ffc_report_parse_error
      Src: /src/hiredis/ffc.h:1289,1
    - Dst: ffc_is_integer
      Src: /src/hiredis/ffc.h:1302,1
    - Dst: ffc_is_integer
      Src: /src/hiredis/ffc.h:1304,1
    - Dst: FFC_DIGIT_ACC10
      Src: /src/hiredis/ffc.h:1305,1
    - Dst: ffc_is_integer
      Src: /src/hiredis/ffc.h:1306,1
    - Dst: FFC_DIGIT_ACC10
      Src: /src/hiredis/ffc.h:1307,1
    - Dst: ffc_is_integer
      Src: /src/hiredis/ffc.h:1308,1
    - Dst: FFC_DIGIT_ACC10
      Src: /src/hiredis/ffc.h:1309,1
    - Dst: ffc_is_integer
      Src: /src/hiredis/ffc.h:1310,1
    - Dst: FFC_DIGIT_ACC10
      Src: /src/hiredis/ffc.h:1311,1
    - Dst: ffc_is_integer
      Src: /src/hiredis/ffc.h:1312,1
    - Dst: FFC_DIGIT_ACC10
      Src: /src/hiredis/ffc.h:1313,1
    - Dst: ffc_report_parse_error
      Src: /src/hiredis/ffc.h:1331,1
    - Dst: ffc_report_parse_error
      Src: /src/hiredis/ffc.h:1335,1
    - Dst: ffc_loop_parse_if_eight_digits
      Src: /src/hiredis/ffc.h:1354,1
    - Dst: ffc_is_integer
      Src: /src/hiredis/ffc.h:1358,1
    - Dst: FFC_DIGIT_ACC10
      Src: /src/hiredis/ffc.h:1359,1
    - Dst: ffc_is_integer
      Src: /src/hiredis/ffc.h:1360,1
    - Dst: FFC_DIGIT_ACC10
      Src: /src/hiredis/ffc.h:1361,1
    - Dst: ffc_is_integer
      Src: /src/hiredis/ffc.h:1362,1
    - Dst: FFC_DIGIT_ACC10
      Src: /src/hiredis/ffc.h:1363,1
    - Dst: ffc_report_parse_error
      Src: /src/hiredis/ffc.h:1385,1
    - Dst: ffc_report_parse_error
      Src: /src/hiredis/ffc.h:1388,1
    - Dst: ffc_is_integer
      Src: /src/hiredis/ffc.h:1410,1
    - Dst: ffc_report_parse_error
      Src: /src/hiredis/ffc.h:1418,1
    - Dst: ffc_is_integer
      Src: /src/hiredis/ffc.h:1423,1
    - Dst: FFC_DIGIT_ACC10
      Src: /src/hiredis/ffc.h:1426,1
    - Dst: ffc_report_parse_error
      Src: /src/hiredis/ffc.h:1439,1
    - Dst: ffc_debug
      Src: /src/hiredis/ffc.h:1451,1
    CyclomaticComplexity: 76
    EdgeCount: 76
    ICount: 140
    argCount: 4
    argNames:
    - p
    - pend
    - options
    - basic_json_fmt
    argTypes:
    - char*
    - char*
    - ffc_parse_options
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1497
      start: 1258
    functionDepth: 3
    functionLinenumber: 1258
    functionLinenumberEnd: 1497
    functionName: ffc_parse_number_string
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - FFC_DEBUG_ASSERT
    - ffc_debug
    - ffc_report_parse_error
    - ffc_is_integer
    - FFC_DIGIT_ACC10
    - ffc_loop_parse_if_eight_digits
    linkageType: ''
    returnType: ffc_internal
    signature: "ffc_internal ffc_parse_number_string(\n    char const *p,\n    //
      CONTRACT: p < pend\n    char const *pend,\n    ffc_parse_options const options,\n
      \   // explicitly passed to encourage optimizer to specialize\n    bool const
      basic_json_fmt\n)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ffc_debug
      Src: /src/hiredis/ffc.h:1511,1
    - Dst: ffc_strncasecmp3
      Src: /src/hiredis/ffc.h:1524,1
    - Dst: ffc_set_value
      Src: /src/hiredis/ffc.h:1530,1
    - Dst: ffc_strncasecmp3
      Src: /src/hiredis/ffc.h:1546,1
    - Dst: ffc_strncasecmp5
      Src: /src/hiredis/ffc.h:1548,1
    - Dst: ffc_set_value
      Src: /src/hiredis/ffc.h:1553,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 35
    argCount: 5
    argNames:
    - first
    - last
    - value
    - vk
    - fmt
    argTypes:
    - char*
    - char*
    - ffc_value*
    - ffc_value_kind
    - ffc_format
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1559
      start: 1504
    functionDepth: 1
    functionLinenumber: 1504
    functionLinenumberEnd: 1559
    functionName: ffc_parse_infnan
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_debug
    - ffc_set_value
    - ffc_strncasecmp3
    - ffc_strncasecmp5
    linkageType: ''
    returnType: ffc_internal
    signature: "ffc_internal ffc_parse_infnan(\n    char *first, char *last,\n    ffc_value
      *value,\n    ffc_value_kind vk,\n    ffc_format fmt\n)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: ffc_debug
      Src: /src/hiredis/ffc.h:1570,1
    - Dst: ffc_is_space
      Src: /src/hiredis/ffc.h:1574,1
    - Dst: ffc_int_kind_is_signed
      Src: /src/hiredis/ffc.h:1591,1
    - Dst: ffc_loop_parse_if_eight_digits
      Src: /src/hiredis/ffc.h:1613,1
    - Dst: ffc_char_to_digit
      Src: /src/hiredis/ffc.h:1616,1
    - Dst: ffc_max_digits_u64
      Src: /src/hiredis/ffc.h:1641,1
    - Dst: ffc_debug
      Src: /src/hiredis/ffc.h:1642,1
    - Dst: ffc_min_safe_u64_of_base
      Src: /src/hiredis/ffc.h:1649,1
    - Dst: ffc_debug
      Src: /src/hiredis/ffc.h:1654,1
    - Dst: ffc_int_value_max
      Src: /src/hiredis/ffc.h:1661,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 88
    argCount: 6
    argNames:
    - p
    - pend
    - value
    - ik
    - options
    - base
    argTypes:
    - char*
    - char*
    - ffc_int_value*
    - ffc_int_kind
    - ffc_parse_options
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1689
      start: 1561
    functionDepth: 3
    functionLinenumber: 1561
    functionLinenumberEnd: 1689
    functionName: ffc_parse_int_string
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_debug
    - ffc_is_space
    - ffc_int_value_max
    - ffc_max_digits_u64
    - ffc_int_kind_is_signed
    - ffc_char_to_digit
    - ffc_min_safe_u64_of_base
    - ffc_loop_parse_if_eight_digits
    linkageType: ''
    returnType: ffc_internal
    signature: "ffc_internal ffc_parse_int_string(\n    char const *p,\n    char const
      *pend,\n    ffc_int_value *value,\n    ffc_int_kind ik,\n    ffc_parse_options
      options,\n    int const base\n  )"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_debug
      Src: /src/hiredis/ffc.h:1697,1
    - Dst: ffc_debug
      Src: /src/hiredis/ffc.h:1698,1
    - Dst: ffc_debug
      Src: /src/hiredis/ffc.h:1699,1
    - Dst: ffc_debug
      Src: /src/hiredis/ffc.h:1700,1
    - Dst: ffc_debug
      Src: /src/hiredis/ffc.h:1701,1
    - Dst: ffc_debug
      Src: /src/hiredis/ffc.h:1702,1
    - Dst: ffc_debug
      Src: /src/hiredis/ffc.h:1703,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - p
    argTypes:
    - ffc_parsed
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1704
      start: 1694
    functionDepth: 1
    functionLinenumber: 1694
    functionLinenumberEnd: 1704
    functionName: ffc_dump_parsed
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_debug
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_dump_parsed(ffc_parsed const p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1724
      start: 1719
    functionDepth: 0
    functionLinenumber: 1719
    functionLinenumberEnd: 1724
    functionName: FFC_TRY
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FFC_TRY(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FFC_DEBUG_ASSERT
      Src: /src/hiredis/ffc.h:1745,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - limb_span
    - index
    argTypes:
    - ffc_bigint_limb_span
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1747
      start: 1743
    functionDepth: 1
    functionLinenumber: 1743
    functionLinenumberEnd: 1747
    functionName: ffc_limb_span_index
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - FFC_DEBUG_ASSERT
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_limb_span_index(ffc_bigint_limb_span limb_span, size_t
      index)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - span
    - ','
    - index
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1749
      start: 1748
    functionDepth: 0
    functionLinenumber: 1748
    functionLinenumberEnd: 1749
    functionName: ffc_span_index
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ffc_span_index(span, index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/hiredis/ffc.h:1774,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sv
    - s
    argTypes:
    - ffc_sv*
    - ffc_bigint_limb_span
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1776
      start: 1769
    functionDepth: 0
    functionLinenumber: 1769
    functionLinenumberEnd: 1776
    functionName: ffc_sv_extend_unchecked
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_sv_extend_unchecked(ffc_sv* sv, ffc_bigint_limb_span
      s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ffc_sv_extend_unchecked
      Src: /src/hiredis/ffc.h:1782,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - sv
    - s
    argTypes:
    - ffc_sv*
    - ffc_bigint_limb_span
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1787
      start: 1779
    functionDepth: 1
    functionLinenumber: 1779
    functionLinenumberEnd: 1787
    functionName: ffc_sv_try_extend
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_sv_extend_unchecked
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_sv_try_extend(ffc_sv* sv, ffc_bigint_limb_span s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_sv_try_extend
      Src: /src/hiredis/ffc.h:1794,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - s
    argTypes:
    - ffc_bigint_limb_span
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1796
      start: 1790
    functionDepth: 2
    functionLinenumber: 1790
    functionLinenumberEnd: 1796
    functionName: ffc_sv_create
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_sv_try_extend
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_sv_create(ffc_bigint_limb_span s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FFC_DEBUG_ASSERT
      Src: /src/hiredis/ffc.h:1800,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sv
    - index
    argTypes:
    - ffc_sv
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1802
      start: 1798
    functionDepth: 1
    functionLinenumber: 1798
    functionLinenumberEnd: 1802
    functionName: ffc_sv_index
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - FFC_DEBUG_ASSERT
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_sv_index(ffc_sv sv, size_t index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FFC_DEBUG_ASSERT
      Src: /src/hiredis/ffc.h:1807,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sv
    - index
    argTypes:
    - ffc_sv
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1810
      start: 1805
    functionDepth: 1
    functionLinenumber: 1805
    functionLinenumberEnd: 1810
    functionName: ffc_sv_rindex
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - FFC_DEBUG_ASSERT
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_sv_rindex(ffc_sv sv, size_t index)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - sv
    - value
    argTypes:
    - ffc_sv*
    - ffc_bigint_limb
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1817
      start: 1813
    functionDepth: 0
    functionLinenumber: 1813
    functionLinenumberEnd: 1817
    functionName: ffc_sv_push_unchecked
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_sv_push_unchecked(ffc_sv* sv, ffc_bigint_limb value)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ffc_sv_push_unchecked
      Src: /src/hiredis/ffc.h:1823,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - sv
    - value
    argTypes:
    - ffc_sv*
    - ffc_bigint_limb
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1828
      start: 1820
    functionDepth: 1
    functionLinenumber: 1820
    functionLinenumberEnd: 1828
    functionName: ffc_sv_try_push
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_sv_push_unchecked
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_sv_try_push(ffc_sv* sv, ffc_bigint_limb value)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - sv
    - new_len
    argTypes:
    - ffc_sv*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1850
      start: 1832
    functionDepth: 0
    functionLinenumber: 1832
    functionLinenumberEnd: 1850
    functionName: ffc_sv_try_reserve
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_sv_try_reserve(ffc_sv* sv, size_t new_len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ffc_sv_rindex
      Src: /src/hiredis/ffc.h:1856,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - sv
    - index
    argTypes:
    - ffc_sv
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1862
      start: 1853
    functionDepth: 2
    functionLinenumber: 1853
    functionLinenumberEnd: 1862
    functionName: ffc_sv_exists_nonzero_after
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_sv_rindex
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_sv_exists_nonzero_after(ffc_sv sv, size_t index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_sv_rindex
      Src: /src/hiredis/ffc.h:1867,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - sv
    argTypes:
    - ffc_sv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1870
      start: 1865
    functionDepth: 2
    functionLinenumber: 1865
    functionLinenumberEnd: 1870
    functionName: ffc_sv_normalize
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_sv_rindex
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_sv_normalize(ffc_sv* sv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FFC_DEBUG_ASSERT
      Src: /src/hiredis/ffc.h:1874,1
    - Dst: ffc_count_leading_zeroes
      Src: /src/hiredis/ffc.h:1876,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - r0
    - truncated
    argTypes:
    - uint64_t
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1878
      start: 1872
    functionDepth: 1
    functionLinenumber: 1872
    functionLinenumberEnd: 1878
    functionName: ffc_uint64_hi64_1
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - FFC_DEBUG_ASSERT
    - ffc_count_leading_zeroes
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_uint64_hi64_1(uint64_t r0, bool* truncated)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FFC_DEBUG_ASSERT
      Src: /src/hiredis/ffc.h:1882,1
    - Dst: ffc_count_leading_zeroes
      Src: /src/hiredis/ffc.h:1883,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - r0
    - r1
    - truncated
    argTypes:
    - uint64_t
    - uint64_t
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1892
      start: 1880
    functionDepth: 1
    functionLinenumber: 1880
    functionLinenumberEnd: 1892
    functionName: ffc_uint64_hi64_2
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - FFC_DEBUG_ASSERT
    - ffc_count_leading_zeroes
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_uint64_hi64_2(uint64_t r0, uint64_t r1, bool* truncated)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_uint64_hi64_1
      Src: /src/hiredis/ffc.h:1896,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - r0
    - truncated
    argTypes:
    - uint32_t
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1897
      start: 1894
    functionDepth: 2
    functionLinenumber: 1894
    functionLinenumberEnd: 1897
    functionName: ffc_uint32_hi64_1
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_uint64_hi64_1
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_uint32_hi64_1(uint32_t r0, bool* truncated)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_uint64_hi64_1
      Src: /src/hiredis/ffc.h:1903,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - r0
    - r1
    - truncated
    argTypes:
    - uint32_t
    - uint32_t
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1904
      start: 1899
    functionDepth: 2
    functionLinenumber: 1899
    functionLinenumberEnd: 1904
    functionName: ffc_uint32_hi64_2
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_uint64_hi64_1
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_uint32_hi64_2(uint32_t r0, uint32_t r1, bool* truncated)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_uint64_hi64_2
      Src: /src/hiredis/ffc.h:1911,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - r0
    - r1
    - r2
    - truncated
    argTypes:
    - uint32_t
    - uint32_t
    - uint32_t
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1912
      start: 1906
    functionDepth: 2
    functionLinenumber: 1906
    functionLinenumberEnd: 1912
    functionName: ffc_uint32_hi64_3
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_uint64_hi64_2
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_uint32_hi64_3(uint32_t r0, uint32_t r1, uint32_t r2,
      bool* truncated)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __has_builtin
      Src: /src/hiredis/ffc.h:1923,1
    - Dst: __builtin_add_overflow
      Src: /src/hiredis/ffc.h:1924,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - x
    - y
    - overflow
    argTypes:
    - ffc_bigint_limb
    - ffc_bigint_limb
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1933
      start: 1918
    functionDepth: 0
    functionLinenumber: 1918
    functionLinenumberEnd: 1933
    functionName: ffc_bigint_scalar_add
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - __has_builtin
    - __builtin_add_overflow
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_bigint_scalar_add(ffc_bigint_limb x, ffc_bigint_limb
      y, bool* overflow)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_full_multiplication
      Src: /src/hiredis/ffc.h:1947,1
    - Dst: ffc_bigint_scalar_add
      Src: /src/hiredis/ffc.h:1949,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - x
    - y
    - carry
    argTypes:
    - ffc_bigint_limb
    - ffc_bigint_limb
    - ffc_bigint_limb*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1959
      start: 1936
    functionDepth: 3
    functionLinenumber: 1936
    functionLinenumberEnd: 1959
    functionName: ffc_bigint_scalar_mul
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_bigint_scalar_add
    - ffc_full_multiplication
    linkageType: ''
    returnType: ffc_inline
    signature: ffc_inline ffc_bigint_scalar_mul(ffc_bigint_limb x, ffc_bigint_limb
      y, ffc_bigint_limb* carry)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ffc_bigint_scalar_add
      Src: /src/hiredis/ffc.h:1969,1
    - Dst: FFC_TRY
      Src: /src/hiredis/ffc.h:1974,1
    - Dst: ffc_sv_try_push
      Src: /src/hiredis/ffc.h:1974,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - sv
    - y
    - start
    argTypes:
    - ffc_sv*
    - ffc_bigint_limb
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1977
      start: 1963
    functionDepth: 2
    functionLinenumber: 1963
    functionLinenumberEnd: 1977
    functionName: ffc_bigint_small_add_from
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_bigint_scalar_add
    - ffc_sv_try_push
    - FFC_TRY
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_bigint_small_add_from(ffc_sv* sv, ffc_bigint_limb
      y, size_t start)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_bigint_small_add_from
      Src: /src/hiredis/ffc.h:1982,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - sv
    - y
    argTypes:
    - ffc_sv*
    - ffc_bigint_limb
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1983
      start: 1980
    functionDepth: 3
    functionLinenumber: 1980
    functionLinenumberEnd: 1983
    functionName: ffc_bigint_small_add
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_bigint_small_add_from
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_bigint_small_add(ffc_sv* sv, ffc_bigint_limb y)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ffc_bigint_scalar_mul
      Src: /src/hiredis/ffc.h:1990,1
    - Dst: FFC_TRY
      Src: /src/hiredis/ffc.h:1993,1
    - Dst: ffc_sv_try_push
      Src: /src/hiredis/ffc.h:1993,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - sv
    - y
    argTypes:
    - ffc_sv*
    - ffc_bigint_limb
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1996
      start: 1986
    functionDepth: 4
    functionLinenumber: 1986
    functionLinenumberEnd: 1996
    functionName: ffc_bigint_small_mul
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_sv_try_push
    - ffc_bigint_scalar_mul
    - FFC_TRY
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_bigint_small_mul(ffc_sv* sv, ffc_bigint_limb y)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: FFC_TRY
      Src: /src/hiredis/ffc.h:2007,1
    - Dst: ffc_sv_try_reserve
      Src: /src/hiredis/ffc.h:2007,1
    - Dst: ffc_span_index
      Src: /src/hiredis/ffc.h:2013,1
    - Dst: ffc_bigint_scalar_add
      Src: /src/hiredis/ffc.h:2016,1
    - Dst: ffc_bigint_scalar_add
      Src: /src/hiredis/ffc.h:2018,1
    - Dst: FFC_TRY
      Src: /src/hiredis/ffc.h:2026,1
    - Dst: ffc_bigint_small_add_from
      Src: /src/hiredis/ffc.h:2026,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - x
    - y
    - start
    argTypes:
    - ffc_sv*
    - ffc_bigint_limb_span
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2029
      start: 2000
    functionDepth: 3
    functionLinenumber: 2000
    functionLinenumberEnd: 2029
    functionName: ffc_bigint_large_add_from
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_bigint_scalar_add
    - ffc_sv_try_reserve
    - ffc_span_index
    - ffc_bigint_small_add_from
    - FFC_TRY
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_bigint_large_add_from(ffc_sv* x, ffc_bigint_limb_span
      y, size_t start)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_bigint_large_add_from
      Src: /src/hiredis/ffc.h:2034,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - x
    - y
    argTypes:
    - ffc_sv*
    - ffc_bigint_limb_span
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2035
      start: 2032
    functionDepth: 4
    functionLinenumber: 2032
    functionLinenumberEnd: 2035
    functionName: ffc_sv_large_add_from_zero
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_bigint_large_add_from
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_sv_large_add_from_zero(ffc_sv* x, ffc_bigint_limb_span
      y)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ffc_sv_create
      Src: /src/hiredis/ffc.h:2045,1
    - Dst: ffc_span_index
      Src: /src/hiredis/ffc.h:2052,1
    - Dst: FFC_TRY
      Src: /src/hiredis/ffc.h:2053,1
    - Dst: ffc_bigint_small_mul
      Src: /src/hiredis/ffc.h:2053,1
    - Dst: ffc_span_index
      Src: /src/hiredis/ffc.h:2056,1
    - Dst: FFC_TRY
      Src: /src/hiredis/ffc.h:2061,1
    - Dst: ffc_sv_try_extend
      Src: /src/hiredis/ffc.h:2061,1
    - Dst: FFC_TRY
      Src: /src/hiredis/ffc.h:2062,1
    - Dst: ffc_bigint_small_mul
      Src: /src/hiredis/ffc.h:2062,1
    - Dst: FFC_TRY
      Src: /src/hiredis/ffc.h:2066,1
    - Dst: ffc_bigint_large_add_from
      Src: /src/hiredis/ffc.h:2066,1
    - Dst: ffc_sv_normalize
      Src: /src/hiredis/ffc.h:2071,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - x
    - y
    argTypes:
    - ffc_sv*
    - ffc_bigint_limb_span
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2073
      start: 2038
    functionDepth: 5
    functionLinenumber: 2038
    functionLinenumberEnd: 2073
    functionName: ffc_bigint_long_mul
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_sv_normalize
    - ffc_bigint_small_mul
    - ffc_sv_create
    - ffc_bigint_large_add_from
    - ffc_span_index
    - ffc_sv_try_extend
    - FFC_TRY
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_bigint_long_mul(ffc_sv* x, ffc_bigint_limb_span y)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FFC_TRY
      Src: /src/hiredis/ffc.h:2079,1
    - Dst: ffc_bigint_small_mul
      Src: /src/hiredis/ffc.h:2079,1
    - Dst: ffc_span_index
      Src: /src/hiredis/ffc.h:2079,1
    - Dst: FFC_TRY
      Src: /src/hiredis/ffc.h:2081,1
    - Dst: ffc_bigint_long_mul
      Src: /src/hiredis/ffc.h:2081,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - x
    - y
    argTypes:
    - ffc_sv*
    - ffc_bigint_limb_span
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2084
      start: 2076
    functionDepth: 6
    functionLinenumber: 2076
    functionLinenumberEnd: 2084
    functionName: ffc_bigint_large_mul
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_bigint_small_mul
    - ffc_span_index
    - ffc_bigint_long_mul
    - FFC_TRY
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_bigint_large_mul(ffc_sv* x, ffc_bigint_limb_span y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2144
      start: 2136
    functionDepth: 0
    functionLinenumber: 2136
    functionLinenumberEnd: 2144
    functionName: ffc_bigint_empty
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_inline
    signature: ffc_inline ffc_bigint_empty(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_sv_push_unchecked
      Src: /src/hiredis/ffc.h:2151,1
    - Dst: ffc_sv_push_unchecked
      Src: /src/hiredis/ffc.h:2153,1
    - Dst: ffc_sv_push_unchecked
      Src: /src/hiredis/ffc.h:2154,1
    - Dst: ffc_sv_normalize
      Src: /src/hiredis/ffc.h:2156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - value
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2161
      start: 2146
    functionDepth: 3
    functionLinenumber: 2146
    functionLinenumberEnd: 2161
    functionName: ffc_bigint_make
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_sv_normalize
    - ffc_sv_push_unchecked
    linkageType: ''
    returnType: ffc_inline
    signature: ffc_inline ffc_bigint_make(uint64_t value)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ffc_uint64_hi64_1
      Src: /src/hiredis/ffc.h:2173,1
    - Dst: ffc_sv_rindex
      Src: /src/hiredis/ffc.h:2173,1
    - Dst: ffc_uint64_hi64_2
      Src: /src/hiredis/ffc.h:2175,1
    - Dst: ffc_sv_rindex
      Src: /src/hiredis/ffc.h:2175,1
    - Dst: ffc_sv_rindex
      Src: /src/hiredis/ffc.h:2175,1
    - Dst: ffc_sv_exists_nonzero_after
      Src: /src/hiredis/ffc.h:2176,1
    - Dst: ffc_uint32_hi64_1
      Src: /src/hiredis/ffc.h:2184,1
    - Dst: ffc_sv_rindex
      Src: /src/hiredis/ffc.h:2184,1
    - Dst: ffc_uint32_hi64_2
      Src: /src/hiredis/ffc.h:2186,1
    - Dst: ffc_sv_rindex
      Src: /src/hiredis/ffc.h:2186,1
    - Dst: ffc_sv_rindex
      Src: /src/hiredis/ffc.h:2186,1
    - Dst: ffc_uint32_hi64_3
      Src: /src/hiredis/ffc.h:2188,1
    - Dst: ffc_sv_rindex
      Src: /src/hiredis/ffc.h:2189,1
    - Dst: ffc_sv_rindex
      Src: /src/hiredis/ffc.h:2190,1
    - Dst: ffc_sv_rindex
      Src: /src/hiredis/ffc.h:2191,1
    - Dst: ffc_sv_exists_nonzero_after
      Src: /src/hiredis/ffc.h:2194,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 2
    argNames:
    - me
    - truncated
    argTypes:
    - ffc_bigint
    - bool*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2198
      start: 2165
    functionDepth: 3
    functionLinenumber: 2165
    functionLinenumberEnd: 2198
    functionName: ffc_bigint_hi64
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_uint32_hi64_1
    - ffc_uint64_hi64_1
    - ffc_uint64_hi64_2
    - ffc_sv_rindex
    - ffc_uint32_hi64_2
    - ffc_sv_exists_nonzero_after
    - ffc_uint32_hi64_3
    linkageType: ''
    returnType: ffc_inline
    signature: ffc_inline ffc_bigint_hi64(ffc_bigint me, bool* truncated)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ffc_sv_index
      Src: /src/hiredis/ffc.h:2214,1
    - Dst: ffc_sv_index
      Src: /src/hiredis/ffc.h:2215,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - me
    - other
    argTypes:
    - ffc_bigint
    - ffc_bigint*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2224
      start: 2206
    functionDepth: 2
    functionLinenumber: 2206
    functionLinenumberEnd: 2224
    functionName: ffc_bigint_compare
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_sv_index
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_bigint_compare(ffc_bigint me, ffc_bigint const *other)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FFC_DEBUG_ASSERT
      Src: /src/hiredis/ffc.h:2235,1
    - Dst: FFC_DEBUG_ASSERT
      Src: /src/hiredis/ffc.h:2236,1
    - Dst: ffc_sv_index
      Src: /src/hiredis/ffc.h:2242,1
    - Dst: ffc_sv_try_push
      Src: /src/hiredis/ffc.h:2249,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - me
    - n
    argTypes:
    - ffc_bigint*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2252
      start: 2228
    functionDepth: 2
    functionLinenumber: 2228
    functionLinenumberEnd: 2252
    functionName: ffc_bigint_shl_bits
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - FFC_DEBUG_ASSERT
    - ffc_sv_index
    - ffc_sv_try_push
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_bigint_shl_bits(ffc_bigint* me, size_t n)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FFC_DEBUG_ASSERT
      Src: /src/hiredis/ffc.h:2257,1
    - Dst: memmove
      Src: /src/hiredis/ffc.h:2266,1
    - Dst: memset
      Src: /src/hiredis/ffc.h:2272,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - me
    - n
    argTypes:
    - ffc_bigint*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2278
      start: 2255
    functionDepth: 1
    functionLinenumber: 2255
    functionLinenumberEnd: 2278
    functionName: ffc_bigint_shl_limbs
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - FFC_DEBUG_ASSERT
    - memmove
    - memset
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_bigint_shl_limbs(ffc_bigint* me, size_t n)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FFC_TRY
      Src: /src/hiredis/ffc.h:2286,1
    - Dst: ffc_bigint_shl_bits
      Src: /src/hiredis/ffc.h:2286,1
    - Dst: FFC_TRY
      Src: /src/hiredis/ffc.h:2289,1
    - Dst: ffc_bigint_shl_limbs
      Src: /src/hiredis/ffc.h:2289,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - me
    - n
    argTypes:
    - ffc_bigint*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2292
      start: 2281
    functionDepth: 3
    functionLinenumber: 2281
    functionLinenumberEnd: 2292
    functionName: ffc_bigint_shl
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_bigint_shl_limbs
    - ffc_bigint_shl_bits
    - FFC_TRY
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_bigint_shl(ffc_bigint* me, size_t n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ffc_count_leading_zeroes
      Src: /src/hiredis/ffc.h:2301,1
    - Dst: ffc_sv_rindex
      Src: /src/hiredis/ffc.h:2301,1
    - Dst: ffc_sv_rindex
      Src: /src/hiredis/ffc.h:2304,1
    - Dst: ffc_count_leading_zeroes
      Src: /src/hiredis/ffc.h:2305,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - me
    argTypes:
    - ffc_bigint
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2308
      start: 2295
    functionDepth: 2
    functionLinenumber: 2295
    functionLinenumberEnd: 2308
    functionName: ffc_bigint_ctlz
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_sv_rindex
    - ffc_count_leading_zeroes
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_bigint_ctlz(ffc_bigint me)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_bigint_ctlz
      Src: /src/hiredis/ffc.h:2313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - me
    argTypes:
    - ffc_bigint
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2315
      start: 2311
    functionDepth: 3
    functionLinenumber: 2311
    functionLinenumberEnd: 2315
    functionName: ffc_bigint_bit_length
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_bigint_ctlz
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_bigint_bit_length(ffc_bigint me)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_bigint_small_mul
      Src: /src/hiredis/ffc.h:2318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - me
    - y
    argTypes:
    - ffc_bigint*
    - ffc_bigint_limb
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2318
      start: 2317
    functionDepth: 5
    functionLinenumber: 2317
    functionLinenumberEnd: 2318
    functionName: ffc_bigint_mul
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_bigint_small_mul
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_bigint_mul(ffc_bigint* me, ffc_bigint_limb y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_bigint_small_add
      Src: /src/hiredis/ffc.h:2321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - me
    - y
    argTypes:
    - ffc_bigint*
    - ffc_bigint_limb
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2321
      start: 2320
    functionDepth: 4
    functionLinenumber: 2320
    functionLinenumberEnd: 2321
    functionName: ffc_bigint_add
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_bigint_small_add
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_bigint_add(ffc_bigint* me, ffc_bigint_limb y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_bigint_shl
      Src: /src/hiredis/ffc.h:2325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - me
    - exp
    argTypes:
    - ffc_bigint*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2325
      start: 2324
    functionDepth: 4
    functionLinenumber: 2324
    functionLinenumberEnd: 2325
    functionName: ffc_bigint_pow2
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_bigint_shl
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_bigint_pow2(ffc_bigint* me, uint32_t exp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FFC_TRY
      Src: /src/hiredis/ffc.h:2338,1
    - Dst: ffc_bigint_large_mul
      Src: /src/hiredis/ffc.h:2338,1
    - Dst: FFC_TRY
      Src: /src/hiredis/ffc.h:2349,1
    - Dst: ffc_bigint_small_mul
      Src: /src/hiredis/ffc.h:2349,1
    - Dst: FFC_TRY
      Src: /src/hiredis/ffc.h:2353,1
    - Dst: ffc_bigint_small_mul
      Src: /src/hiredis/ffc.h:2354,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - me
    - exp
    argTypes:
    - ffc_bigint*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2359
      start: 2328
    functionDepth: 7
    functionLinenumber: 2328
    functionLinenumberEnd: 2359
    functionName: ffc_bigint_pow5
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_bigint_large_mul
    - ffc_bigint_small_mul
    - FFC_TRY
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_bigint_pow5(ffc_bigint* me, uint32_t exp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FFC_TRY
      Src: /src/hiredis/ffc.h:2364,1
    - Dst: ffc_bigint_pow5
      Src: /src/hiredis/ffc.h:2364,1
    - Dst: ffc_bigint_pow2
      Src: /src/hiredis/ffc.h:2365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - me
    - exp
    argTypes:
    - ffc_bigint*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2366
      start: 2362
    functionDepth: 8
    functionLinenumber: 2362
    functionLinenumberEnd: 2366
    functionName: ffc_bigint_pow10
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_bigint_pow5
    - ffc_bigint_pow2
    - FFC_TRY
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_bigint_pow10(ffc_bigint* me, uint32_t exp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - mantissa
    - exponent
    argTypes:
    - uint64_t
    - int32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2414
      start: 2399
    functionDepth: 0
    functionLinenumber: 2399
    functionLinenumberEnd: 2414
    functionName: ffc_scientific_exponent
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_inline
    signature: ffc_inline ffc_scientific_exponent(uint64_t mantissa, int32_t exponent)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:2419,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:2420,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:2421,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:2425,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:2425,1
    - Dst: ffc_get_double_bits
      Src: /src/hiredis/ffc.h:2430,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:2437,1
    - Dst: ffc_get_float_bits
      Src: /src/hiredis/ffc.h:2444,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:2451,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 2
    argNames:
    - value
    - vk
    argTypes:
    - ffc_value
    - ffc_value_kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2460
      start: 2417
    functionDepth: 1
    functionLinenumber: 2417
    functionLinenumberEnd: 2460
    functionName: ffc_to_extended
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_get_float_bits
    - ffc_const
    - ffc_get_double_bits
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_to_extended(ffc_value value, ffc_value_kind vk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_to_extended
      Src: /src/hiredis/ffc.h:2467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - value
    - vk
    argTypes:
    - ffc_value
    - ffc_value_kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2472
      start: 2465
    functionDepth: 2
    functionLinenumber: 2465
    functionLinenumberEnd: 2472
    functionName: ffc_to_extended_halfway
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_to_extended
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_to_extended_halfway(ffc_value value, ffc_value_kind
      vk)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - am
    - shift
    argTypes:
    - ffc_adjusted_mantissa*
    - int32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2482
      start: 2474
    functionDepth: 0
    functionLinenumber: 2474
    functionLinenumberEnd: 2482
    functionName: ffc_round_down_impl
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_round_down_impl(ffc_adjusted_mantissa* am, int32_t
      shift)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 3
    argNames:
    - am
    - shift
    - truncated
    argTypes:
    - ffc_adjusted_mantissa*
    - int32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2505
      start: 2485
    functionDepth: 0
    functionLinenumber: 2485
    functionLinenumberEnd: 2505
    functionName: ffc_round_nearest_tie_even_truncated
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_internal
    signature: "ffc_internal ffc_round_nearest_tie_even_truncated(ffc_adjusted_mantissa
      *am,\n                                             int32_t shift, bool truncated)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - am
    - shift
    - ord
    argTypes:
    - ffc_adjusted_mantissa*
    - int32_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2521
      start: 2508
    functionDepth: 0
    functionLinenumber: 2508
    functionLinenumberEnd: 2521
    functionName: ffc_round_nearest_tie_even_cmp
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_internal
    signature: "ffc_internal ffc_round_nearest_tie_even_cmp(ffc_adjusted_mantissa
      *am,\n                                       int32_t shift, int ord)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:2529,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:2530,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:2535,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:2536,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:2537,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - am
    - vk
    argTypes:
    - ffc_adjusted_mantissa*
    - ffc_value_kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2540
      start: 2526
    functionDepth: 1
    functionLinenumber: 2526
    functionLinenumberEnd: 2540
    functionName: ffc_round_finish
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_const
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_round_finish(ffc_adjusted_mantissa *am, ffc_value_kind
      vk)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sub_routine_call
    - ','
    - vk
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2558
      start: 2543
    functionDepth: 0
    functionLinenumber: 2543
    functionLinenumberEnd: 2558
    functionName: ffc_round_core
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ffc_round_core(sub_routine_call, vk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_round_core
      Src: /src/hiredis/ffc.h:2562,1
    - Dst: ffc_round_down_impl
      Src: /src/hiredis/ffc.h:2562,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - am
    - vk
    argTypes:
    - ffc_adjusted_mantissa*
    - ffc_value_kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2563
      start: 2560
    functionDepth: 1
    functionLinenumber: 2560
    functionLinenumberEnd: 2563
    functionName: ffc_round_down
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_round_core
    - ffc_round_down_impl
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_round_down(ffc_adjusted_mantissa *am, ffc_value_kind
      vk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_round_core
      Src: /src/hiredis/ffc.h:2569,1
    - Dst: ffc_round_nearest_tie_even_truncated
      Src: /src/hiredis/ffc.h:2569,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - am
    - truncated
    - vk
    argTypes:
    - ffc_adjusted_mantissa*
    - bool
    - ffc_value_kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2570
      start: 2566
    functionDepth: 1
    functionLinenumber: 2566
    functionLinenumberEnd: 2570
    functionName: ffc_round_tie_even_truncated
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_round_core
    - ffc_round_nearest_tie_even_truncated
    linkageType: ''
    returnType: ffc_internal
    signature: "ffc_internal ffc_round_tie_even_truncated(ffc_adjusted_mantissa *am,\n
      \                                           bool truncated, ffc_value_kind vk)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_round_core
      Src: /src/hiredis/ffc.h:2575,1
    - Dst: ffc_round_nearest_tie_even_cmp
      Src: /src/hiredis/ffc.h:2575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - am
    - ord
    - vk
    argTypes:
    - ffc_adjusted_mantissa*
    - int
    - ffc_value_kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2576
      start: 2573
    functionDepth: 1
    functionLinenumber: 2573
    functionLinenumberEnd: 2576
    functionName: ffc_round_double_tie_even_cmp
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_round_core
    - ffc_round_nearest_tie_even_cmp
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_round_double_tie_even_cmp(ffc_adjusted_mantissa *am,
      int ord, ffc_value_kind vk)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - p
    - char_width
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2598
      start: 2590
    functionDepth: 0
    functionLinenumber: 2590
    functionLinenumberEnd: 2598
    functionName: ffc_char_eq_zero
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_char_eq_zero(char const *p, size_t char_width)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: FFC_DEBUG_ASSERT
      Src: /src/hiredis/ffc.h:2618,1
    - Dst: memcpy
      Src: /src/hiredis/ffc.h:2624,1
    - Dst: ffc_char_eq_zero
      Src: /src/hiredis/ffc.h:2631,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 3
    argNames:
    - first
    - last
    - char_width
    argTypes:
    - char**
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2636
      start: 2600
    functionDepth: 1
    functionLinenumber: 2600
    functionLinenumberEnd: 2636
    functionName: ffc_skip_zeros
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - FFC_DEBUG_ASSERT
    - ffc_char_eq_zero
    - memcpy
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_skip_zeros(char **first, char *last, size_t char_width)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: FFC_DEBUG_ASSERT
      Src: /src/hiredis/ffc.h:2658,1
    - Dst: memcpy
      Src: /src/hiredis/ffc.h:2664,1
    - Dst: ffc_char_eq_zero
      Src: /src/hiredis/ffc.h:2671,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 3
    argNames:
    - first
    - last
    - char_width
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2677
      start: 2640
    functionDepth: 1
    functionLinenumber: 2640
    functionLinenumberEnd: 2677
    functionName: ffc_is_truncated
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - FFC_DEBUG_ASSERT
    - ffc_char_eq_zero
    - memcpy
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_is_truncated(char const *first, char const *last,
      size_t char_width)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_parse_eight_digits_unrolled
      Src: /src/hiredis/ffc.h:2681,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - p
    - value
    - counter
    - count
    argTypes:
    - char**
    - ffc_bigint_limb*
    - size_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2685
      start: 2679
    functionDepth: 3
    functionLinenumber: 2679
    functionLinenumberEnd: 2685
    functionName: ffc_parse_eight_digits
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_parse_eight_digits_unrolled
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_parse_eight_digits(char **p, ffc_bigint_limb *value,
      size_t *counter, size_t *count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - p
    - value
    - counter
    - count
    argTypes:
    - char**
    - ffc_bigint_limb*
    - size_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2693
      start: 2687
    functionDepth: 0
    functionLinenumber: 2687
    functionLinenumberEnd: 2693
    functionName: ffc_parse_one_digit
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_parse_one_digit(char **p, ffc_bigint_limb *value,
      size_t *counter, size_t *count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_bigint_mul
      Src: /src/hiredis/ffc.h:2697,1
    - Dst: ffc_bigint_add
      Src: /src/hiredis/ffc.h:2698,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - big
    - power
    - value
    argTypes:
    - ffc_bigint*
    - ffc_bigint_limb
    - ffc_bigint_limb
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2699
      start: 2695
    functionDepth: 6
    functionLinenumber: 2695
    functionLinenumberEnd: 2699
    functionName: ffc_add_native
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_bigint_add
    - ffc_bigint_mul
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_add_native(ffc_bigint *big, ffc_bigint_limb power,
      ffc_bigint_limb value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_add_native
      Src: /src/hiredis/ffc.h:2705,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - big
    - count
    argTypes:
    - ffc_bigint*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2707
      start: 2701
    functionDepth: 7
    functionLinenumber: 2701
    functionLinenumberEnd: 2707
    functionName: ffc_round_up_bigint
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_add_native
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_round_up_bigint(ffc_bigint *big, size_t *count)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ffc_skip_zeros
      Src: /src/hiredis/ffc.h:2728,1
    - Dst: ffc_parse_eight_digits
      Src: /src/hiredis/ffc.h:2733,1
    - Dst: ffc_parse_one_digit
      Src: /src/hiredis/ffc.h:2736,1
    - Dst: ffc_add_native
      Src: /src/hiredis/ffc.h:2740,1
    - Dst: ffc_is_truncated
      Src: /src/hiredis/ffc.h:2741,1
    - Dst: ffc_is_truncated
      Src: /src/hiredis/ffc.h:2743,1
    - Dst: ffc_round_up_bigint
      Src: /src/hiredis/ffc.h:2746,1
    - Dst: ffc_add_native
      Src: /src/hiredis/ffc.h:2750,1
    - Dst: ffc_skip_zeros
      Src: /src/hiredis/ffc.h:2761,1
    - Dst: ffc_parse_eight_digits
      Src: /src/hiredis/ffc.h:2767,1
    - Dst: ffc_parse_one_digit
      Src: /src/hiredis/ffc.h:2770,1
    - Dst: ffc_add_native
      Src: /src/hiredis/ffc.h:2774,1
    - Dst: ffc_is_truncated
      Src: /src/hiredis/ffc.h:2775,1
    - Dst: ffc_round_up_bigint
      Src: /src/hiredis/ffc.h:2777,1
    - Dst: ffc_add_native
      Src: /src/hiredis/ffc.h:2781,1
    - Dst: ffc_add_native
      Src: /src/hiredis/ffc.h:2789,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 54
    argCount: 4
    argNames:
    - result
    - num
    - max_digits
    - digits
    argTypes:
    - ffc_bigint*
    - ffc_parsed
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2791
      start: 2710
    functionDepth: 8
    functionLinenumber: 2710
    functionLinenumberEnd: 2791
    functionName: ffc_parse_mantissa
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_parse_eight_digits
    - ffc_parse_one_digit
    - ffc_is_truncated
    - ffc_skip_zeros
    - ffc_add_native
    - ffc_round_up_bigint
    linkageType: ''
    returnType: ffc_internal
    signature: "ffc_internal ffc_parse_mantissa(ffc_bigint *result, ffc_parsed num,\n
      \              size_t max_digits, size_t *const digits)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_debug
      Src: /src/hiredis/ffc.h:2796,1
    - Dst: FFC_ASSERT
      Src: /src/hiredis/ffc.h:2798,1
    - Dst: ffc_bigint_pow10
      Src: /src/hiredis/ffc.h:2798,1
    - Dst: ffc_bigint_hi64
      Src: /src/hiredis/ffc.h:2801,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:2802,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:2802,1
    - Dst: ffc_bigint_bit_length
      Src: /src/hiredis/ffc.h:2803,1
    - Dst: ffc_round_tie_even_truncated
      Src: /src/hiredis/ffc.h:2805,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - bigmant
    - exponent
    - vk
    argTypes:
    - ffc_bigint*
    - int32_t
    - ffc_value_kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2808
      start: 2793
    functionDepth: 9
    functionLinenumber: 2793
    functionLinenumberEnd: 2808
    functionName: ffc_positive_digit_comp
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_round_tie_even_truncated
    - ffc_debug
    - FFC_ASSERT
    - ffc_const
    - ffc_bigint_pow10
    - ffc_bigint_hi64
    - ffc_bigint_bit_length
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_positive_digit_comp(ffc_bigint *bigmant, int32_t exponent,
      ffc_value_kind vk)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ffc_round_down
      Src: /src/hiredis/ffc.h:2823,1
    - Dst: ffc_am_to_float
      Src: /src/hiredis/ffc.h:2825,1
    - Dst: ffc_to_extended_halfway
      Src: /src/hiredis/ffc.h:2827,1
    - Dst: ffc_bigint_make
      Src: /src/hiredis/ffc.h:2828,1
    - Dst: FFC_ASSERT
      Src: /src/hiredis/ffc.h:2835,1
    - Dst: ffc_bigint_pow5
      Src: /src/hiredis/ffc.h:2835,1
    - Dst: FFC_ASSERT
      Src: /src/hiredis/ffc.h:2838,1
    - Dst: ffc_bigint_pow2
      Src: /src/hiredis/ffc.h:2838,1
    - Dst: FFC_ASSERT
      Src: /src/hiredis/ffc.h:2840,1
    - Dst: ffc_bigint_pow2
      Src: /src/hiredis/ffc.h:2840,1
    - Dst: ffc_bigint_compare
      Src: /src/hiredis/ffc.h:2844,1
    - Dst: ffc_round_double_tie_even_cmp
      Src: /src/hiredis/ffc.h:2846,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - bigmant
    - am
    - exponent
    - vk
    argTypes:
    - ffc_bigint*
    - ffc_adjusted_mantissa
    - int32_t
    - ffc_value_kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2849
      start: 2815
    functionDepth: 8
    functionLinenumber: 2815
    functionLinenumberEnd: 2849
    functionName: ffc_negative_digit_comp
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_bigint_make
    - FFC_ASSERT
    - ffc_round_double_tie_even_cmp
    - ffc_bigint_pow2
    - ffc_round_down
    - ffc_to_extended_halfway
    - ffc_bigint_pow5
    - ffc_am_to_float
    - ffc_bigint_compare
    linkageType: ''
    returnType: ffc_internal
    signature: "ffc_internal ffc_negative_digit_comp(\n    ffc_bigint *bigmant, ffc_adjusted_mantissa
      am, int32_t exponent, ffc_value_kind vk)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ffc_debug
      Src: /src/hiredis/ffc.h:2866,1
    - Dst: ffc_scientific_exponent
      Src: /src/hiredis/ffc.h:2871,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:2872,1
    - Dst: ffc_bigint_empty
      Src: /src/hiredis/ffc.h:2874,1
    - Dst: ffc_parse_mantissa
      Src: /src/hiredis/ffc.h:2875,1
    - Dst: ffc_positive_digit_comp
      Src: /src/hiredis/ffc.h:2879,1
    - Dst: ffc_negative_digit_comp
      Src: /src/hiredis/ffc.h:2881,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - num
    - am
    - vk
    argTypes:
    - ffc_parsed
    - ffc_adjusted_mantissa
    - ffc_value_kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2883
      start: 2864
    functionDepth: 10
    functionLinenumber: 2864
    functionLinenumberEnd: 2883
    functionName: ffc_adjusted_mantissa::ffc_digit_comp
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_debug
    - ffc_const
    - ffc_scientific_exponent
    - ffc_bigint_empty
    - ffc_positive_digit_comp
    - ffc_negative_digit_comp
    - ffc_parse_mantissa
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_adjusted_mantissa ffc_digit_comp(ffc_parsed num, ffc_adjusted_mantissa
      am, ffc_value_kind vk)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:2896,1
    - Dst: ffc_mul_u64
      Src: /src/hiredis/ffc.h:2905,1
    - Dst: ffc_mul_u64
      Src: /src/hiredis/ffc.h:2912,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - q
    - w
    - vk
    argTypes:
    - int64_t
    - uint64_t
    - ffc_value_kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2920
      start: 2889
    functionDepth: 1
    functionLinenumber: 2889
    functionLinenumberEnd: 2920
    functionName: ffc_compute_product_approximation
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_mul_u64
    - ffc_const
    linkageType: ''
    returnType: ffc_inline
    signature: ffc_inline ffc_compute_product_approximation(int64_t q, uint64_t w,
      ffc_value_kind vk)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - q
    argTypes:
    - int32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2941
      start: 2939
    functionDepth: 0
    functionLinenumber: 2939
    functionLinenumberEnd: 2941
    functionName: ffc_b10_to_b2
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_b10_to_b2(int32_t q)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:2951,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:2957,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:2959,1
    - Dst: ffc_count_leading_zeroes
      Src: /src/hiredis/ffc.h:2967,1
    - Dst: ffc_compute_product_approximation
      Src: /src/hiredis/ffc.h:2970,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:2982,1
    - Dst: ffc_b10_to_b2
      Src: /src/hiredis/ffc.h:2987,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:2987,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:3016,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:3027,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:3028,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:3045,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:3046,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:3051,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:3052,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:3053,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 43
    argCount: 3
    argNames:
    - q
    - w
    - vk
    argTypes:
    - int64_t
    - uint64_t
    - ffc_value_kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3057
      start: 2948
    functionDepth: 2
    functionLinenumber: 2948
    functionLinenumberEnd: 3057
    functionName: ffc_compute_float
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_b10_to_b2
    - ffc_count_leading_zeroes
    - ffc_const
    - ffc_compute_product_approximation
    linkageType: ''
    returnType: ffc_inline
    signature: ffc_inline ffc_compute_float(int64_t q, uint64_t w, ffc_value_kind
      vk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:3066,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:3066,1
    - Dst: ffc_b10_to_b2
      Src: /src/hiredis/ffc.h:3067,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - q
    - w
    - lz
    - vk
    argTypes:
    - int64_t
    - uint64_t
    - int
    - ffc_value_kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3070
      start: 3061
    functionDepth: 1
    functionLinenumber: 3061
    functionLinenumberEnd: 3070
    functionName: ffc_compute_error_scaled
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_b10_to_b2
    - ffc_const
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_compute_error_scaled(int64_t q, uint64_t w, int lz,
      ffc_value_kind vk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_count_leading_zeroes
      Src: /src/hiredis/ffc.h:3076,1
    - Dst: ffc_compute_product_approximation
      Src: /src/hiredis/ffc.h:3078,1
    - Dst: ffc_compute_error_scaled
      Src: /src/hiredis/ffc.h:3079,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - q
    - w
    - vk
    argTypes:
    - int64_t
    - uint64_t
    - ffc_value_kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3080
      start: 3074
    functionDepth: 2
    functionLinenumber: 3074
    functionLinenumberEnd: 3080
    functionName: ffc_compute_error
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_count_leading_zeroes
    - ffc_compute_error_scaled
    - ffc_compute_product_approximation
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_compute_error(int64_t q, uint64_t w, ffc_value_kind
      vk)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:3097,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:3098,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:3098,1
    - Dst: ffc_rounds_to_nearest
      Src: /src/hiredis/ffc.h:3106,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:3109,1
    - Dst: ffc_set_value
      Src: /src/hiredis/ffc.h:3110,1
    - Dst: ffc_set_value
      Src: /src/hiredis/ffc.h:3126,1
    - Dst: ffc_read_value
      Src: /src/hiredis/ffc.h:3126,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:3135,1
    - Dst: ffc_set_value
      Src: /src/hiredis/ffc.h:3139,1
    - Dst: ffc_set_value
      Src: /src/hiredis/ffc.h:3149,1
    - Dst: ffc_read_value
      Src: /src/hiredis/ffc.h:3149,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 44
    argCount: 5
    argNames:
    - mantissa
    - exponent
    - is_negative
    - value
    - value_kind
    argTypes:
    - uint64_t
    - int64_t
    - bool
    - ffc_value*
    - ffc_value_kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3156
      start: 3086
    functionDepth: 1
    functionLinenumber: 3086
    functionLinenumberEnd: 3156
    functionName: ffc_clinger_fast_path_impl
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_rounds_to_nearest
    - ffc_set_value
    - ffc_const
    - ffc_read_value
    linkageType: ''
    returnType: ffc_internal
    signature: "ffc_internal ffc_clinger_fast_path_impl(uint64_t mantissa, int64_t
      exponent, bool is_negative,\n                       ffc_value *value, ffc_value_kind
      value_kind)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:3166,1
    - Dst: ffc_set_value
      Src: /src/hiredis/ffc.h:3169,1
    - Dst: ffc_set_value
      Src: /src/hiredis/ffc.h:3173,1
    - Dst: ffc_set_value
      Src: /src/hiredis/ffc.h:3174,1
    - Dst: ffc_read_value
      Src: /src/hiredis/ffc.h:3174,1
    - Dst: ffc_clinger_fast_path_impl
      Src: /src/hiredis/ffc.h:3179,1
    - Dst: ffc_debug
      Src: /src/hiredis/ffc.h:3180,1
    - Dst: ffc_compute_float
      Src: /src/hiredis/ffc.h:3184,1
    - Dst: ffc_debug
      Src: /src/hiredis/ffc.h:3185,1
    - Dst: ffc_debug
      Src: /src/hiredis/ffc.h:3186,1
    - Dst: ffc_compute_float
      Src: /src/hiredis/ffc.h:3188,1
    - Dst: ffc_compute_error
      Src: /src/hiredis/ffc.h:3191,1
    - Dst: ffc_digit_comp
      Src: /src/hiredis/ffc.h:3198,1
    - Dst: ffc_debug
      Src: /src/hiredis/ffc.h:3200,1
    - Dst: ffc_debug
      Src: /src/hiredis/ffc.h:3201,1
    - Dst: ffc_am_to_float
      Src: /src/hiredis/ffc.h:3202,1
    - Dst: ffc_const
      Src: /src/hiredis/ffc.h:3206,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 35
    argCount: 3
    argNames:
    - pns
    - value
    - vk
    argTypes:
    - ffc_parsed
    - ffc_value*
    - ffc_value_kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3210
      start: 3158
    functionDepth: 3
    functionLinenumber: 3158
    functionLinenumberEnd: 3210
    functionName: ffc_from_chars_advanced
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_debug
    - ffc_const
    - ffc_digit_comp
    - ffc_compute_float
    - ffc_am_to_float
    - ffc_set_value
    - ffc_clinger_fast_path_impl
    - ffc_compute_error
    - ffc_read_value
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_from_chars_advanced(ffc_parsed const pns, ffc_value*
      value, ffc_value_kind vk)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ffc_is_space
      Src: /src/hiredis/ffc.h:3220,1
    - Dst: ffc_parse_number_string
      Src: /src/hiredis/ffc.h:3230,1
    - Dst: ffc_dump_parsed
      Src: /src/hiredis/ffc.h:3233,1
    - Dst: ffc_parse_infnan
      Src: /src/hiredis/ffc.h:3242,1
    - Dst: ffc_from_chars_advanced
      Src: /src/hiredis/ffc.h:3247,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 5
    argNames:
    - first
    - last
    - options
    - value
    - vk
    argTypes:
    - char*
    - char*
    - ffc_parse_options
    - ffc_value*
    - ffc_value_kind
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3248
      start: 3212
    functionDepth: 4
    functionLinenumber: 3212
    functionLinenumberEnd: 3248
    functionName: ffc_from_chars
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_from_chars_advanced
    - ffc_is_space
    - ffc_parse_number_string
    - ffc_dump_parsed
    - ffc_parse_infnan
    linkageType: ''
    returnType: ffc_internal
    signature: ffc_internal ffc_from_chars(char* first, char* last, ffc_parse_options
      options, ffc_value *value, ffc_value_kind vk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_from_chars
      Src: /src/hiredis/ffc.h:3257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - start
    - end
    - out
    - options
    argTypes:
    - char*
    - char*
    - double*
    - ffc_parse_options
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3260
      start: 3252
    functionDepth: 5
    functionLinenumber: 3252
    functionLinenumberEnd: 3260
    functionName: ffc_from_chars_double_options
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 1
    functionsReached:
    - ffc_from_chars
    linkageType: ''
    returnType: FFC_IMPL_INLINE
    signature: FFC_IMPL_INLINE ffc_from_chars_double_options(const char *start, const
      char *end, double* out, ffc_parse_options options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_parse_options_default
      Src: /src/hiredis/ffc.h:3262,1
    - Dst: ffc_from_chars_double_options
      Src: /src/hiredis/ffc.h:3263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - first
    - last
    - out
    argTypes:
    - char*
    - char*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3264
      start: 3261
    functionDepth: 6
    functionLinenumber: 3261
    functionLinenumberEnd: 3264
    functionName: ffc_from_chars_double
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_parse_options_default
    - ffc_from_chars_double_options
    linkageType: ''
    returnType: FFC_IMPL_INLINE
    signature: FFC_IMPL_INLINE ffc_from_chars_double(char const* first, char const*
      last, double* out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_from_chars_double
      Src: /src/hiredis/ffc.h:3267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - len
    - s
    - out
    argTypes:
    - size_t
    - char*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3268
      start: 3265
    functionDepth: 7
    functionLinenumber: 3265
    functionLinenumberEnd: 3268
    functionName: ffc_parse_double
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_from_chars_double
    linkageType: ''
    returnType: ffc_result
    signature: ffc_result ffc_parse_double(size_t len, const char *s, double *out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ffc_parse_double
      Src: /src/hiredis/ffc.h:3271,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - len
    - s
    - outcome
    argTypes:
    - size_t
    - char*
    - ffc_outcome*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3276
      start: 3269
    functionDepth: 8
    functionLinenumber: 3269
    functionLinenumberEnd: 3276
    functionName: ffc_parse_double_simple
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_parse_double
    linkageType: ''
    returnType: double
    signature: double ffc_parse_double_simple(size_t len, const char *s, ffc_outcome
      *outcome)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_from_chars
      Src: /src/hiredis/ffc.h:3280,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - start
    - end
    - out
    - options
    argTypes:
    - char*
    - char*
    - float*
    - ffc_parse_options
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3283
      start: 3278
    functionDepth: 5
    functionLinenumber: 3278
    functionLinenumberEnd: 3283
    functionName: ffc_from_chars_float_options
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_from_chars
    linkageType: ''
    returnType: ffc_result
    signature: ffc_result ffc_from_chars_float_options(const char *start,  const char
      *end, float* out, ffc_parse_options options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_parse_options_default
      Src: /src/hiredis/ffc.h:3285,1
    - Dst: ffc_from_chars_float_options
      Src: /src/hiredis/ffc.h:3286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - first
    - last
    - out
    argTypes:
    - char*
    - char*
    - float*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3287
      start: 3284
    functionDepth: 6
    functionLinenumber: 3284
    functionLinenumberEnd: 3287
    functionName: ffc_from_chars_float
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_parse_options_default
    - ffc_from_chars_float_options
    linkageType: ''
    returnType: ffc_result
    signature: ffc_result ffc_from_chars_float(char const* first, char const* last,
      float* out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_from_chars_float
      Src: /src/hiredis/ffc.h:3290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - len
    - s
    - out
    argTypes:
    - size_t
    - char*
    - float*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3291
      start: 3288
    functionDepth: 7
    functionLinenumber: 3288
    functionLinenumberEnd: 3291
    functionName: ffc_parse_float
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_from_chars_float
    linkageType: ''
    returnType: ffc_result
    signature: ffc_result ffc_parse_float(size_t len, const char *s, float *out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ffc_parse_float
      Src: /src/hiredis/ffc.h:3294,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - len
    - s
    - outcome
    argTypes:
    - size_t
    - char*
    - ffc_outcome*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3299
      start: 3292
    functionDepth: 8
    functionLinenumber: 3292
    functionLinenumberEnd: 3299
    functionName: ffc_parse_float_simple
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_parse_float
    linkageType: ''
    returnType: float
    signature: float ffc_parse_float_simple(size_t len, const char *s, ffc_outcome
      *outcome)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_parse_int_string
      Src: /src/hiredis/ffc.h:3304,1
    - Dst: ffc_parse_options_default
      Src: /src/hiredis/ffc.h:3304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - len
    - input
    - base
    - out
    argTypes:
    - size_t
    - char*
    - int
    - int64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3307
      start: 3301
    functionDepth: 4
    functionLinenumber: 3301
    functionLinenumberEnd: 3307
    functionName: ffc_parse_i64
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_parse_options_default
    - ffc_parse_int_string
    linkageType: ''
    returnType: ffc_result
    signature: ffc_result ffc_parse_i64(size_t len, const char *input, int base, int64_t  *out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_parse_int_string
      Src: /src/hiredis/ffc.h:3311,1
    - Dst: ffc_parse_options_default
      Src: /src/hiredis/ffc.h:3311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - len
    - input
    - base
    - out
    argTypes:
    - size_t
    - char*
    - int
    - uint64_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3314
      start: 3308
    functionDepth: 4
    functionLinenumber: 3308
    functionLinenumberEnd: 3314
    functionName: ffc_parse_u64
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_parse_options_default
    - ffc_parse_int_string
    linkageType: ''
    returnType: ffc_result
    signature: ffc_result ffc_parse_u64(size_t len, const char *input, int base, uint64_t
      *out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_parse_int_string
      Src: /src/hiredis/ffc.h:3318,1
    - Dst: ffc_parse_options_default
      Src: /src/hiredis/ffc.h:3318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - len
    - input
    - base
    - out
    argTypes:
    - size_t
    - char*
    - int
    - int32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3321
      start: 3315
    functionDepth: 4
    functionLinenumber: 3315
    functionLinenumberEnd: 3321
    functionName: ffc_parse_i32
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_parse_options_default
    - ffc_parse_int_string
    linkageType: ''
    returnType: ffc_result
    signature: ffc_result ffc_parse_i32(size_t len, const char *input, int base, int32_t  *out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ffc_parse_int_string
      Src: /src/hiredis/ffc.h:3325,1
    - Dst: ffc_parse_options_default
      Src: /src/hiredis/ffc.h:3325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - len
    - input
    - base
    - out
    argTypes:
    - size_t
    - char*
    - int
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3328
      start: 3322
    functionDepth: 4
    functionLinenumber: 3322
    functionLinenumberEnd: 3328
    functionName: ffc_parse_u32
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_parse_options_default
    - ffc_parse_int_string
    linkageType: ''
    returnType: ffc_result
    signature: ffc_result ffc_parse_u32(size_t len, const char *input, int base, uint32_t
      *out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ffc_parse_i64
      Src: /src/hiredis/ffc.h:3332,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - len
    - input
    - base
    - outcome
    argTypes:
    - size_t
    - char*
    - int
    - ffc_outcome*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3337
      start: 3330
    functionDepth: 5
    functionLinenumber: 3330
    functionLinenumberEnd: 3337
    functionName: ffc_parse_i64_simple
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_parse_i64
    linkageType: ''
    returnType: int64_t
    signature: int64_t ffc_parse_i64_simple(size_t len, const char *input, int base,
      ffc_outcome *outcome)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ffc_parse_u64
      Src: /src/hiredis/ffc.h:3340,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - len
    - input
    - base
    - outcome
    argTypes:
    - size_t
    - char*
    - int
    - ffc_outcome*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3345
      start: 3338
    functionDepth: 5
    functionLinenumber: 3338
    functionLinenumberEnd: 3345
    functionName: ffc_parse_u64_simple
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_parse_u64
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t ffc_parse_u64_simple(size_t len, const char *input, int base,
      ffc_outcome *outcome)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ffc_parse_i32
      Src: /src/hiredis/ffc.h:3348,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - len
    - input
    - base
    - outcome
    argTypes:
    - size_t
    - char*
    - int
    - ffc_outcome*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3353
      start: 3346
    functionDepth: 5
    functionLinenumber: 3346
    functionLinenumberEnd: 3353
    functionName: ffc_parse_i32_simple
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_parse_i32
    linkageType: ''
    returnType: int32_t
    signature: int32_t ffc_parse_i32_simple(size_t len, const char *input, int base,
      ffc_outcome *outcome)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ffc_parse_u32
      Src: /src/hiredis/ffc.h:3356,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - len
    - input
    - base
    - outcome
    argTypes:
    - size_t
    - char*
    - int
    - ffc_outcome*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3361
      start: 3354
    functionDepth: 5
    functionLinenumber: 3354
    functionLinenumberEnd: 3361
    functionName: ffc_parse_u32_simple
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_parse_u32
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t ffc_parse_u32_simple(size_t len, const char *input, int base,
      ffc_outcome *outcome)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ffc_parse_number_string
      Src: /src/hiredis/ffc.h:3377,1
    - Dst: ffc_parse_int_string
      Src: /src/hiredis/ffc.h:3396,1
    - Dst: ffc_from_chars_advanced
      Src: /src/hiredis/ffc.h:3403,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 3
    argNames:
    - start
    - end
    - out
    argTypes:
    - char*
    - char*
    - ffc_json_number*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3410
      start: 3363
    functionDepth: 4
    functionLinenumber: 3363
    functionLinenumberEnd: 3410
    functionName: ffc_parse_json_number
    functionSourceFile: /src/hiredis/ffc.h
    functionUses: 0
    functionsReached:
    - ffc_from_chars_advanced
    - ffc_parse_int_string
    - ffc_parse_number_string
    linkageType: ''
    returnType: ffc_result
    signature: "ffc_result ffc_parse_json_number(const char *start, const char *end,\n
      \                                ffc_json_number *out)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ctx
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 40
    functionName: _EL_ADD_READ
    functionSourceFile: /src/hiredis/async_private.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _EL_ADD_READ(ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ctx
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 43
    functionName: _EL_DEL_READ
    functionSourceFile: /src/hiredis/async_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _EL_DEL_READ(ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ctx
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 48
    functionName: _EL_ADD_WRITE
    functionSourceFile: /src/hiredis/async_private.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _EL_ADD_WRITE(ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ctx
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 51
    functionName: _EL_DEL_WRITE
    functionSourceFile: /src/hiredis/async_private.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _EL_DEL_WRITE(ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ctx
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 55
    functionName: _EL_CLEANUP
    functionSourceFile: /src/hiredis/async_private.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: _EL_CLEANUP(ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: REDIS_EL_TIMER
      Src: /src/hiredis/async_private.h:66,1
    - Dst: REDIS_EL_TIMER
      Src: /src/hiredis/async_private.h:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - redisAsyncContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 70
    functionName: refreshTimeout
    functionSourceFile: /src/hiredis/async_private.h
    functionUses: 0
    functionsReached:
    - REDIS_EL_TIMER
    linkageType: ''
    returnType: void
    signature: void refreshTimeout(redisAsyncContext *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tvp
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 59
    functionName: REDIS_TIMER_ISSET
    functionSourceFile: /src/hiredis/async_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REDIS_TIMER_ISSET(tvp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ac
    - ','
    - tvp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 64
    functionName: REDIS_EL_TIMER
    functionSourceFile: /src/hiredis/async_private.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REDIS_EL_TIMER(ac, tvp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - node
    - ','
    - service
    - ','
    - hints
    - ','
    - res
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 79
    functionName: getaddrinfo
    functionSourceFile: /src/hiredis/sockcompat.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: getaddrinfo(node, service, hints, res)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - errcode
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 81
    functionName: gai_strerror
    functionSourceFile: /src/hiredis/sockcompat.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: gai_strerror(errcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - res
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 82
    functionName: freeaddrinfo
    functionSourceFile: /src/hiredis/sockcompat.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: freeaddrinfo(res)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - domain
    - ','
    - type
    - ','
    - protocol
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 83
    functionName: socket
    functionSourceFile: /src/hiredis/sockcompat.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: socket(domain, type, protocol)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - fd
    - ','
    - request
    - ','
    - argp
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 84
    functionName: ioctl
    functionSourceFile: /src/hiredis/sockcompat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ioctl(fd, request, argp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - sockfd
    - ','
    - addr
    - ','
    - addrlen
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 85
    functionName: bind
    functionSourceFile: /src/hiredis/sockcompat.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: bind(sockfd, addr, addrlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - sockfd
    - ','
    - addr
    - ','
    - addrlen
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 86
    functionName: connect
    functionSourceFile: /src/hiredis/sockcompat.h
    functionUses: 26
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: connect(sockfd, addr, addrlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - sockfd
    - ','
    - level
    - ','
    - optname
    - ','
    - optval
    - ','
    - optlen
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 87
    functionName: getsockopt
    functionSourceFile: /src/hiredis/sockcompat.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: getsockopt(sockfd, level, optname, optval, optlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - sockfd
    - ','
    - level
    - ','
    - optname
    - ','
    - optval
    - ','
    - optlen
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 88
    functionName: setsockopt
    functionSourceFile: /src/hiredis/sockcompat.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: setsockopt(sockfd, level, optname, optval, optlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - fd
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 89
    functionName: close
    functionSourceFile: /src/hiredis/sockcompat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: close(fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - sockfd
    - ','
    - buf
    - ','
    - len
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 90
    functionName: recv
    functionSourceFile: /src/hiredis/sockcompat.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: recv(sockfd, buf, len, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - sockfd
    - ','
    - buf
    - ','
    - len
    - ','
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 91
    functionName: send
    functionSourceFile: /src/hiredis/sockcompat.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: send(sockfd, buf, len, flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - fds
    - ','
    - nfds
    - ','
    - timeout
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 92
    functionName: poll
    functionSourceFile: /src/hiredis/sockcompat.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: poll(fds, nfds, timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - d
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 21
    functionName: va_copy
    functionSourceFile: /src/hiredis/win32.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: va_copy(d,s)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _vsnprintf_s
      Src: /src/hiredis/win32.h:31,1
    - Dst: _vscprintf
      Src: /src/hiredis/win32.h:33,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - str
    - size
    - format
    - ap
    argTypes:
    - char*
    - size_t
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 36
    functionName: c99_vsnprintf
    functionSourceFile: /src/hiredis/win32.h
    functionUses: 0
    functionsReached:
    - _vsnprintf_s
    - _vscprintf
    linkageType: ''
    returnType: int
    signature: int c99_vsnprintf(char* str, size_t size, const char* format, va_list
      ap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/hiredis/win32.h:43,1
    - Dst: c99_vsnprintf
      Src: /src/hiredis/win32.h:44,1
    - Dst: va_end
      Src: /src/hiredis/win32.h:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - str
    - size
    - format
    argTypes:
    - char*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 48
    functionName: c99_snprintf
    functionSourceFile: /src/hiredis/win32.h
    functionUses: 0
    functionsReached:
    - va_start
    - va_end
    - c99_vsnprintf
    linkageType: ''
    returnType: int
    signature: int c99_snprintf(char* str, size_t size, const char* format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - errno
    - ','
    - buf
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 54
    functionName: strerror_r
    functionSourceFile: /src/hiredis/win32.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: strerror_r(errno,buf,len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: InitializeCriticalSection
      Src: /src/hiredis/ssl.c:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - l
    argTypes:
    - sslLockType*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 114
    functionName: sslLockInit
    functionSourceFile: /src/hiredis/ssl.c
    functionUses: 0
    functionsReached:
    - InitializeCriticalSection
    linkageType: ''
    returnType: void
    signature: void sslLockInit(sslLockType* l)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EnterCriticalSection
      Src: /src/hiredis/ssl.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - l
    argTypes:
    - sslLockType*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 117
    functionName: sslLockAcquire
    functionSourceFile: /src/hiredis/ssl.c
    functionUses: 0
    functionsReached:
    - EnterCriticalSection
    linkageType: ''
    returnType: void
    signature: void sslLockAcquire(sslLockType* l)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LeaveCriticalSection
      Src: /src/hiredis/ssl.c:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - l
    argTypes:
    - sslLockType*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 120
    functionName: sslLockRelease
    functionSourceFile: /src/hiredis/ssl.c
    functionUses: 0
    functionsReached:
    - LeaveCriticalSection
    linkageType: ''
    returnType: void
    signature: void sslLockRelease(sslLockType* l)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_init
      Src: /src/hiredis/ssl.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - l
    argTypes:
    - sslLockType*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 125
    functionName: sslLockInit
    functionSourceFile: /src/hiredis/ssl.c
    functionUses: 0
    functionsReached:
    - pthread_mutex_init
    linkageType: ''
    returnType: void
    signature: void sslLockInit(sslLockType *l)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_lock
      Src: /src/hiredis/ssl.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - l
    argTypes:
    - sslLockType*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 128
    functionName: sslLockAcquire
    functionSourceFile: /src/hiredis/ssl.c
    functionUses: 0
    functionsReached:
    - pthread_mutex_lock
    linkageType: ''
    returnType: void
    signature: void sslLockAcquire(sslLockType *l)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_unlock
      Src: /src/hiredis/ssl.c:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - l
    argTypes:
    - sslLockType*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 131
    functionName: sslLockRelease
    functionSourceFile: /src/hiredis/ssl.c
    functionUses: 0
    functionsReached:
    - pthread_mutex_unlock
    linkageType: ''
    returnType: void
    signature: void sslLockRelease(sslLockType *l)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sslLockAcquire
      Src: /src/hiredis/ssl.c:140,1
    - Dst: sslLockRelease
      Src: /src/hiredis/ssl.c:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - mode
    - lkid
    - f
    - line
    argTypes:
    - int
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 147
    functionName: opensslDoLock
    functionSourceFile: /src/hiredis/ssl.c
    functionUses: 0
    functionsReached:
    - sslLockRelease
    - sslLockAcquire
    linkageType: ''
    returnType: void
    signature: void opensslDoLock(int mode, int lkid, const char *f, int line)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: CRYPTO_get_locking_callback
      Src: /src/hiredis/ssl.c:151,1
    - Dst: CRYPTO_num_locks
      Src: /src/hiredis/ssl.c:155,1
    - Dst: hi_malloc
      Src: /src/hiredis/ssl.c:156,1
    - Dst: sslLockInit
      Src: /src/hiredis/ssl.c:161,1
    - Dst: CRYPTO_set_locking_callback
      Src: /src/hiredis/ssl.c:163,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 165
    functionName: initOpensslLocks
    functionSourceFile: /src/hiredis/ssl.c
    functionUses: 0
    functionsReached:
    - sslLockInit
    - CRYPTO_set_locking_callback
    - CRYPTO_num_locks
    - CRYPTO_get_locking_callback
    - hi_malloc
    linkageType: ''
    returnType: int
    signature: int initOpensslLocks(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SSL_library_init
      Src: /src/hiredis/ssl.c:171,1
    - Dst: initOpensslLocks
      Src: /src/hiredis/ssl.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 168
    functionDepth: 2
    functionLinenumber: 168
    functionLinenumberEnd: 176
    functionName: redisInitOpenSSL
    functionSourceFile: /src/hiredis/ssl.c
    functionUses: 1
    functionsReached:
    - initOpensslLocks
    - SSL_library_init
    linkageType: ''
    returnType: int
    signature: int redisInitOpenSSL(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 1
    argNames:
    - error
    argTypes:
    - redisSSLContextError
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 204
    functionName: redisSSLContextGetError
    functionSourceFile: /src/hiredis/ssl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *redisSSLContextGetError(redisSSLContextError error)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hi_free
      Src: /src/hiredis/ssl.c:212,1
    - Dst: SSL_CTX_free
      Src: /src/hiredis/ssl.c:217,1
    - Dst: hi_free
      Src: /src/hiredis/ssl.c:221,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - redisSSLContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 222
    functionName: redisFreeSSLContext
    functionSourceFile: /src/hiredis/ssl.c
    functionUses: 1
    functionsReached:
    - hi_free
    - SSL_CTX_free
    linkageType: ''
    returnType: void
    signature: void redisFreeSSLContext(redisSSLContext *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisCreateSSLContextWithOptions
      Src: /src/hiredis/ssl.c:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - cacert_filename
    - capath
    - cert_filename
    - private_key_filename
    - server_name
    - error
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - char*
    - redisSSLContextError*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 243
    functionName: redisCreateSSLContext
    functionSourceFile: /src/hiredis/ssl.c
    functionUses: 1
    functionsReached:
    - redisCreateSSLContextWithOptions
    linkageType: ''
    returnType: redisSSLContext
    signature: "redisSSLContext *redisCreateSSLContext(const char *cacert_filename,
      const char *capath,\n        const char *cert_filename, const char *private_key_filename,\n
      \       const char *server_name, redisSSLContextError *error)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: hi_calloc
      Src: /src/hiredis/ssl.c:257,1
    - Dst: TLS_client_method
      Src: /src/hiredis/ssl.c:263,1
    - Dst: SSLv23_client_method
      Src: /src/hiredis/ssl.c:265,1
    - Dst: SSL_CTX_new
      Src: /src/hiredis/ssl.c:268,1
    - Dst: SSL_CTX_set_min_proto_version
      Src: /src/hiredis/ssl.c:275,1
    - Dst: SSL_CTX_set_options
      Src: /src/hiredis/ssl.c:277,1
    - Dst: SSL_CTX_set_verify
      Src: /src/hiredis/ssl.c:280,1
    - Dst: strcmp
      Src: /src/hiredis/ssl.c:290,1
    - Dst: CertOpenSystemStore
      Src: /src/hiredis/ssl.c:291,1
    - Dst: SSL_CTX_get_cert_store
      Src: /src/hiredis/ssl.c:296,1
    - Dst: CertEnumCertificatesInStore
      Src: /src/hiredis/ssl.c:297,1
    - Dst: d2i_X509
      Src: /src/hiredis/ssl.c:299,1
    - Dst: X509_STORE_add_cert
      Src: /src/hiredis/ssl.c:301,1
    - Dst: SSL_CTX_add_client_CA
      Src: /src/hiredis/ssl.c:302,1
    - Dst: X509_free
      Src: /src/hiredis/ssl.c:307,1
    - Dst: CertFreeCertificateContext
      Src: /src/hiredis/ssl.c:310,1
    - Dst: CertCloseStore
      Src: /src/hiredis/ssl.c:311,1
    - Dst: SSL_CTX_load_verify_locations
      Src: /src/hiredis/ssl.c:314,1
    - Dst: SSL_CTX_set_default_verify_paths
      Src: /src/hiredis/ssl.c:319,1
    - Dst: SSL_CTX_use_certificate_chain_file
      Src: /src/hiredis/ssl.c:326,1
    - Dst: SSL_CTX_use_PrivateKey_file
      Src: /src/hiredis/ssl.c:330,1
    - Dst: hi_strdup
      Src: /src/hiredis/ssl.c:337,1
    - Dst: CertCloseStore
      Src: /src/hiredis/ssl.c:344,1
    - Dst: redisFreeSSLContext
      Src: /src/hiredis/ssl.c:346,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 82
    argCount: 2
    argNames:
    - options
    - error
    argTypes:
    - redisSSLOptions*
    - redisSSLContextError*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 348
    functionName: redisCreateSSLContextWithOptions
    functionSourceFile: /src/hiredis/ssl.c
    functionUses: 1
    functionsReached:
    - hi_calloc
    - TLS_client_method
    - SSL_CTX_set_default_verify_paths
    - SSL_CTX_get_cert_store
    - SSL_CTX_set_options
    - strcmp
    - X509_free
    - SSL_CTX_new
    - CertOpenSystemStore
    - CertCloseStore
    - CertFreeCertificateContext
    - SSL_CTX_use_PrivateKey_file
    - hi_strdup
    - CertEnumCertificatesInStore
    - X509_STORE_add_cert
    - SSLv23_client_method
    - SSL_CTX_add_client_CA
    - d2i_X509
    - SSL_CTX_use_certificate_chain_file
    - SSL_CTX_load_verify_locations
    - SSL_CTX_set_min_proto_version
    - SSL_CTX_set_verify
    - redisFreeSSLContext
    linkageType: ''
    returnType: redisSSLContext
    signature: redisSSLContext *redisCreateSSLContextWithOptions(redisSSLOptions *options,
      redisSSLContextError *error)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: __redisSetError
      Src: /src/hiredis/ssl.c:357,1
    - Dst: hi_calloc
      Src: /src/hiredis/ssl.c:361,1
    - Dst: __redisSetError
      Src: /src/hiredis/ssl.c:363,1
    - Dst: SSL_set_mode
      Src: /src/hiredis/ssl.c:369,1
    - Dst: SSL_set_fd
      Src: /src/hiredis/ssl.c:370,1
    - Dst: SSL_set_connect_state
      Src: /src/hiredis/ssl.c:371,1
    - Dst: ERR_clear_error
      Src: /src/hiredis/ssl.c:373,1
    - Dst: SSL_connect
      Src: /src/hiredis/ssl.c:375,1
    - Dst: SSL_get_error
      Src: /src/hiredis/ssl.c:382,1
    - Dst: snprintf
      Src: /src/hiredis/ssl.c:394,1
    - Dst: strerror
      Src: /src/hiredis/ssl.c:394,1
    - Dst: ERR_peek_last_error
      Src: /src/hiredis/ssl.c:396,1
    - Dst: snprintf
      Src: /src/hiredis/ssl.c:397,1
    - Dst: ERR_reason_error_string
      Src: /src/hiredis/ssl.c:398,1
    - Dst: __redisSetError
      Src: /src/hiredis/ssl.c:400,1
    - Dst: hi_free
      Src: /src/hiredis/ssl.c:403,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 2
    argNames:
    - c
    - ssl
    argTypes:
    - redisContext*
    - SSL*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 355
    functionDepth: 1
    functionLinenumber: 355
    functionLinenumberEnd: 405
    functionName: redisSSLConnect
    functionSourceFile: /src/hiredis/ssl.c
    functionUses: 0
    functionsReached:
    - SSL_set_mode
    - SSL_get_error
    - hi_free
    - ERR_reason_error_string
    - __redisSetError
    - SSL_set_connect_state
    - ERR_peek_last_error
    - hi_calloc
    - ERR_clear_error
    - strerror
    - snprintf
    - SSL_connect
    - SSL_set_fd
    linkageType: ''
    returnType: int
    signature: int redisSSLConnect(redisContext *c, SSL *ssl)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisSSLConnect
      Src: /src/hiredis/ssl.c:413,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c
    - ssl
    argTypes:
    - redisContext*
    - SSL*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 412
    functionDepth: 2
    functionLinenumber: 412
    functionLinenumberEnd: 414
    functionName: redisInitiateSSL
    functionSourceFile: /src/hiredis/ssl.c
    functionUses: 0
    functionsReached:
    - redisSSLConnect
    linkageType: ''
    returnType: int
    signature: int redisInitiateSSL(redisContext *c, SSL *ssl)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: SSL_new
      Src: /src/hiredis/ssl.c:432,1
    - Dst: __redisSetError
      Src: /src/hiredis/ssl.c:434,1
    - Dst: SSL_set_tlsext_host_name
      Src: /src/hiredis/ssl.c:439,1
    - Dst: __redisSetError
      Src: /src/hiredis/ssl.c:440,1
    - Dst: redisSSLConnect
      Src: /src/hiredis/ssl.c:445,1
    - Dst: SSL_free
      Src: /src/hiredis/ssl.c:453,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 2
    argNames:
    - c
    - redis_ssl_ctx
    argTypes:
    - redisContext*
    - redisSSLContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 421
    functionDepth: 2
    functionLinenumber: 421
    functionLinenumberEnd: 455
    functionName: redisInitiateSSLWithContext
    functionSourceFile: /src/hiredis/ssl.c
    functionUses: 1
    functionsReached:
    - SSL_free
    - SSL_new
    - __redisSetError
    - SSL_set_tlsext_host_name
    - redisSSLConnect
    linkageType: ''
    returnType: int
    signature: int redisInitiateSSLWithContext(redisContext *c, redisSSLContext *redis_ssl_ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - rssl
    - rv
    argTypes:
    - redisSSL*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 457
    functionDepth: 0
    functionLinenumber: 457
    functionLinenumberEnd: 471
    functionName: maybeCheckWant
    functionSourceFile: /src/hiredis/ssl.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int maybeCheckWant(redisSSL *rssl, int rv)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_free
      Src: /src/hiredis/ssl.c:482,1
    - Dst: hi_free
      Src: /src/hiredis/ssl.c:485,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - privctx
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 477
    functionDepth: 0
    functionLinenumber: 477
    functionLinenumberEnd: 486
    functionName: redisSSLFree
    functionSourceFile: /src/hiredis/ssl.c
    functionUses: 0
    functionsReached:
    - SSL_free
    - hi_free
    linkageType: ''
    returnType: void
    signature: void redisSSLFree(void *privctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: SSL_read
      Src: /src/hiredis/ssl.c:491,1
    - Dst: __redisSetError
      Src: /src/hiredis/ssl.c:495,1
    - Dst: SSL_get_error
      Src: /src/hiredis/ssl.c:498,1
    - Dst: __redisSetError
      Src: /src/hiredis/ssl.c:513,1
    - Dst: maybeCheckWant
      Src: /src/hiredis/ssl.c:521,1
    - Dst: __redisSetError
      Src: /src/hiredis/ssl.c:524,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 3
    argNames:
    - c
    - buf
    - bufcap
    argTypes:
    - redisContext*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 488
    functionDepth: 1
    functionLinenumber: 488
    functionLinenumberEnd: 528
    functionName: redisSSLRead
    functionSourceFile: /src/hiredis/ssl.c
    functionUses: 0
    functionsReached:
    - SSL_read
    - __redisSetError
    - SSL_get_error
    - maybeCheckWant
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t redisSSLRead(redisContext *c, char *buf, size_t bufcap)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sdslen
      Src: /src/hiredis/ssl.c:533,1
    - Dst: SSL_write
      Src: /src/hiredis/ssl.c:534,1
    - Dst: SSL_get_error
      Src: /src/hiredis/ssl.c:541,1
    - Dst: maybeCheckWant
      Src: /src/hiredis/ssl.c:542,1
    - Dst: __redisSetError
      Src: /src/hiredis/ssl.c:545,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - c
    argTypes:
    - redisContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 530
    functionDepth: 2
    functionLinenumber: 530
    functionLinenumberEnd: 550
    functionName: redisSSLWrite
    functionSourceFile: /src/hiredis/ssl.c
    functionUses: 0
    functionsReached:
    - SSL_get_error
    - __redisSetError
    - sdslen
    - SSL_write
    - maybeCheckWant
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t redisSSLWrite(redisContext *c)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: redisBufferWrite
      Src: /src/hiredis/ssl.c:564,1
    - Dst: __redisAsyncDisconnect
      Src: /src/hiredis/ssl.c:566,1
    - Dst: _EL_ADD_WRITE
      Src: /src/hiredis/ssl.c:569,1
    - Dst: redisBufferRead
      Src: /src/hiredis/ssl.c:573,1
    - Dst: __redisAsyncDisconnect
      Src: /src/hiredis/ssl.c:575,1
    - Dst: _EL_ADD_READ
      Src: /src/hiredis/ssl.c:577,1
    - Dst: redisProcessCallbacks
      Src: /src/hiredis/ssl.c:578,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - ac
    argTypes:
    - redisAsyncContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 552
    functionDepth: 4
    functionLinenumber: 552
    functionLinenumberEnd: 580
    functionName: redisSSLAsyncRead
    functionSourceFile: /src/hiredis/ssl.c
    functionUses: 0
    functionsReached:
    - redisBufferRead
    - _EL_ADD_WRITE
    - redisProcessCallbacks
    - redisBufferWrite
    - _EL_ADD_READ
    - __redisAsyncDisconnect
    linkageType: ''
    returnType: void
    signature: void redisSSLAsyncRead(redisAsyncContext *ac)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: redisBufferWrite
      Src: /src/hiredis/ssl.c:588,1
    - Dst: __redisAsyncDisconnect
      Src: /src/hiredis/ssl.c:590,1
    - Dst: _EL_DEL_WRITE
      Src: /src/hiredis/ssl.c:598,1
    - Dst: _EL_ADD_WRITE
      Src: /src/hiredis/ssl.c:601,1
    - Dst: _EL_DEL_WRITE
      Src: /src/hiredis/ssl.c:605,1
    - Dst: _EL_ADD_READ
      Src: /src/hiredis/ssl.c:609,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - ac
    argTypes:
    - redisAsyncContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 582
    functionDepth: 3
    functionLinenumber: 582
    functionLinenumberEnd: 610
    functionName: redisSSLAsyncWrite
    functionSourceFile: /src/hiredis/ssl.c
    functionUses: 0
    functionsReached:
    - _EL_ADD_WRITE
    - redisBufferWrite
    - _EL_DEL_WRITE
    - _EL_ADD_READ
    - __redisAsyncDisconnect
    linkageType: ''
    returnType: void
    signature: void redisSSLAsyncWrite(redisAsyncContext *ac)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/hiredis/net.c:58,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - c
    argTypes:
    - redisContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 61
    functionName: redisNetClose
    functionSourceFile: /src/hiredis/net.c
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void redisNetClose(redisContext *c)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: recv
      Src: /src/hiredis/net.c:64,1
    - Dst: __redisSetError
      Src: /src/hiredis/net.c:71,1
    - Dst: __redisSetError
      Src: /src/hiredis/net.c:74,1
    - Dst: strerror
      Src: /src/hiredis/net.c:74,1
    - Dst: __redisSetError
      Src: /src/hiredis/net.c:78,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 3
    argNames:
    - c
    - buf
    - bufcap
    argTypes:
    - redisContext*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 83
    functionName: redisNetRead
    functionSourceFile: /src/hiredis/net.c
    functionUses: 0
    functionsReached:
    - strerror
    - recv
    - __redisSetError
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t redisNetRead(redisContext *c, char *buf, size_t bufcap)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: send
      Src: /src/hiredis/net.c:88,1
    - Dst: sdslen
      Src: /src/hiredis/net.c:88,1
    - Dst: __redisSetError
      Src: /src/hiredis/net.c:94,1
    - Dst: strerror
      Src: /src/hiredis/net.c:94,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - c
    argTypes:
    - redisContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 85
    functionDepth: 2
    functionLinenumber: 85
    functionLinenumberEnd: 100
    functionName: redisNetWrite
    functionSourceFile: /src/hiredis/net.c
    functionUses: 0
    functionsReached:
    - strerror
    - __redisSetError
    - sdslen
    - send
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t redisNetWrite(redisContext *c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/hiredis/net.c:108,1
    - Dst: strerror_r
      Src: /src/hiredis/net.c:109,1
    - Dst: __redisSetError
      Src: /src/hiredis/net.c:110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - c
    - type
    - prefix
    argTypes:
    - redisContext*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 111
    functionName: __redisSetErrorFromErrno
    functionSourceFile: /src/hiredis/net.c
    functionUses: 0
    functionsReached:
    - __redisSetError
    - snprintf
    - strerror_r
    linkageType: ''
    returnType: void
    signature: void __redisSetErrorFromErrno(redisContext *c, int type, const char
      *prefix)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/hiredis/net.c:115,1
    - Dst: __redisSetErrorFromErrno
      Src: /src/hiredis/net.c:116,1
    - Dst: redisNetClose
      Src: /src/hiredis/net.c:117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - c
    argTypes:
    - redisContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 113
    functionDepth: 2
    functionLinenumber: 113
    functionLinenumberEnd: 121
    functionName: redisSetReuseAddr
    functionSourceFile: /src/hiredis/net.c
    functionUses: 0
    functionsReached:
    - __redisSetErrorFromErrno
    - redisNetClose
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int redisSetReuseAddr(redisContext *c)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/hiredis/net.c:133,1
    - Dst: __redisSetErrorFromErrno
      Src: /src/hiredis/net.c:134,1
    - Dst: redisSetReuseAddr
      Src: /src/hiredis/net.c:140,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - c
    - type
    argTypes:
    - redisContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 123
    functionDepth: 3
    functionLinenumber: 123
    functionLinenumberEnd: 145
    functionName: redisCreateSocket
    functionSourceFile: /src/hiredis/net.c
    functionUses: 0
    functionsReached:
    - __redisSetErrorFromErrno
    - socket
    - redisSetReuseAddr
    linkageType: ''
    returnType: int
    signature: int redisCreateSocket(redisContext *c, int type)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/hiredis/net.c:154,1
    - Dst: __redisSetErrorFromErrno
      Src: /src/hiredis/net.c:155,1
    - Dst: redisNetClose
      Src: /src/hiredis/net.c:156,1
    - Dst: fcntl
      Src: /src/hiredis/net.c:165,1
    - Dst: __redisSetErrorFromErrno
      Src: /src/hiredis/net.c:166,1
    - Dst: redisNetClose
      Src: /src/hiredis/net.c:167,1
    - Dst: ioctl
      Src: /src/hiredis/net.c:172,1
    - Dst: __redisSetErrorFromErrno
      Src: /src/hiredis/net.c:173,1
    - Dst: redisNetClose
      Src: /src/hiredis/net.c:174,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - c
    - blocking
    argTypes:
    - redisContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 147
    functionDepth: 2
    functionLinenumber: 147
    functionLinenumberEnd: 179
    functionName: redisSetBlocking
    functionSourceFile: /src/hiredis/net.c
    functionUses: 0
    functionsReached:
    - ioctl
    - __redisSetErrorFromErrno
    - redisNetClose
    - fcntl
    linkageType: ''
    returnType: int
    signature: int redisSetBlocking(redisContext *c, int blocking)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/hiredis/net.c:190,1
    - Dst: __redisSetError
      Src: /src/hiredis/net.c:191,1
    - Dst: strerror
      Src: /src/hiredis/net.c:191,1
    - Dst: setsockopt
      Src: /src/hiredis/net.c:198,1
    - Dst: __redisSetError
      Src: /src/hiredis/net.c:199,1
    - Dst: strerror
      Src: /src/hiredis/net.c:199,1
    - Dst: setsockopt
      Src: /src/hiredis/net.c:204,1
    - Dst: __redisSetError
      Src: /src/hiredis/net.c:205,1
    - Dst: strerror
      Src: /src/hiredis/net.c:205,1
    - Dst: setsockopt
      Src: /src/hiredis/net.c:211,1
    - Dst: __redisSetError
      Src: /src/hiredis/net.c:212,1
    - Dst: strerror
      Src: /src/hiredis/net.c:212,1
    - Dst: setsockopt
      Src: /src/hiredis/net.c:217,1
    - Dst: __redisSetError
      Src: /src/hiredis/net.c:218,1
    - Dst: strerror
      Src: /src/hiredis/net.c:218,1
    - Dst: win32_redisKeepAlive
      Src: /src/hiredis/net.c:226,1
    - Dst: __redisSetError
      Src: /src/hiredis/net.c:228,1
    - Dst: strerror
      Src: /src/hiredis/net.c:228,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 2
    argNames:
    - c
    - interval
    argTypes:
    - redisContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 181
    functionDepth: 2
    functionLinenumber: 181
    functionLinenumberEnd: 233
    functionName: redisKeepAlive
    functionSourceFile: /src/hiredis/net.c
    functionUses: 1
    functionsReached:
    - strerror
    - __redisSetError
    - win32_redisKeepAlive
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int redisKeepAlive(redisContext *c, int interval)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/hiredis/net.c:237,1
    - Dst: __redisSetErrorFromErrno
      Src: /src/hiredis/net.c:238,1
    - Dst: redisNetClose
      Src: /src/hiredis/net.c:239,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - c
    argTypes:
    - redisContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 235
    functionDepth: 2
    functionLinenumber: 235
    functionLinenumberEnd: 243
    functionName: redisSetTcpNoDelay
    functionSourceFile: /src/hiredis/net.c
    functionUses: 1
    functionsReached:
    - __redisSetErrorFromErrno
    - redisNetClose
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int redisSetTcpNoDelay(redisContext *c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/hiredis/net.c:248,1
    - Dst: __redisSetErrorFromErrno
      Src: /src/hiredis/net.c:255,1
    - Dst: redisNetClose
      Src: /src/hiredis/net.c:256,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - c
    - timeout
    argTypes:
    - redisContext*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 245
    functionDepth: 2
    functionLinenumber: 245
    functionLinenumberEnd: 260
    functionName: redisContextSetTcpUserTimeout
    functionSourceFile: /src/hiredis/net.c
    functionUses: 0
    functionsReached:
    - __redisSetErrorFromErrno
    - redisNetClose
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int redisContextSetTcpUserTimeout(redisContext *c, unsigned int timeout)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: __redisSetError
      Src: /src/hiredis/net.c:272,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - c
    - result
    argTypes:
    - redisContext*
    - long*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 264
    functionDepth: 1
    functionLinenumber: 264
    functionLinenumberEnd: 286
    functionName: redisContextTimeoutMsec
    functionSourceFile: /src/hiredis/net.c
    functionUses: 0
    functionsReached:
    - __redisSetError
    linkageType: ''
    returnType: int
    signature: int redisContextTimeoutMsec(redisContext *c, long *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: clock_gettime
      Src: /src/hiredis/net.c:291,1
    - Dst: GetSystemTimeAsFileTime
      Src: /src/hiredis/net.c:295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 298
    functionName: redisPollMillis
    functionSourceFile: /src/hiredis/net.c
    functionUses: 0
    functionsReached:
    - GetSystemTimeAsFileTime
    - clock_gettime
    linkageType: ''
    returnType: long
    signature: long redisPollMillis(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: __redisSetErrorFromErrno
      Src: /src/hiredis/net.c:306,1
    - Dst: redisNetClose
      Src: /src/hiredis/net.c:307,1
    - Dst: redisPollMillis
      Src: /src/hiredis/net.c:313,1
    - Dst: poll
      Src: /src/hiredis/net.c:315,1
    - Dst: __redisSetErrorFromErrno
      Src: /src/hiredis/net.c:317,1
    - Dst: redisNetClose
      Src: /src/hiredis/net.c:318,1
    - Dst: redisPollMillis
      Src: /src/hiredis/net.c:320,1
    - Dst: __redisSetErrorFromErrno
      Src: /src/hiredis/net.c:322,1
    - Dst: redisNetClose
      Src: /src/hiredis/net.c:323,1
    - Dst: redisCheckConnectDone
      Src: /src/hiredis/net.c:330,1
    - Dst: redisCheckSocketError
      Src: /src/hiredis/net.c:331,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 2
    argNames:
    - c
    - msec
    argTypes:
    - redisContext*
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 300
    functionDepth: 2
    functionLinenumber: 300
    functionLinenumberEnd: 336
    functionName: redisContextWaitReady
    functionSourceFile: /src/hiredis/net.c
    functionUses: 0
    functionsReached:
    - redisPollMillis
    - redisCheckSocketError
    - poll
    - redisNetClose
    - redisCheckConnectDone
    - __redisSetErrorFromErrno
    linkageType: ''
    returnType: int
    signature: int redisContextWaitReady(redisContext *c, long msec)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: connect
      Src: /src/hiredis/net.c:339,1
    - Dst: getsockopt
      Src: /src/hiredis/net.c:349,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 2
    argNames:
    - c
    - completed
    argTypes:
    - redisContext*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 372
    functionName: redisCheckConnectDone
    functionSourceFile: /src/hiredis/net.c
    functionUses: 2
    functionsReached:
    - connect
    - getsockopt
    linkageType: ''
    returnType: int
    signature: int redisCheckConnectDone(redisContext *c, int *completed)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getsockopt
      Src: /src/hiredis/net.c:378,1
    - Dst: __redisSetErrorFromErrno
      Src: /src/hiredis/net.c:379,1
    - Dst: __redisSetErrorFromErrno
      Src: /src/hiredis/net.c:389,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - c
    argTypes:
    - redisContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 374
    functionDepth: 2
    functionLinenumber: 374
    functionLinenumberEnd: 394
    functionName: redisCheckSocketError
    functionSourceFile: /src/hiredis/net.c
    functionUses: 2
    functionsReached:
    - __redisSetErrorFromErrno
    - getsockopt
    linkageType: ''
    returnType: int
    signature: int redisCheckSocketError(redisContext *c)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: redisContextUpdateCommandTimeout
      Src: /src/hiredis/net.c:400,1
    - Dst: __redisSetError
      Src: /src/hiredis/net.c:401,1
    - Dst: setsockopt
      Src: /src/hiredis/net.c:404,1
    - Dst: __redisSetErrorFromErrno
      Src: /src/hiredis/net.c:405,1
    - Dst: setsockopt
      Src: /src/hiredis/net.c:408,1
    - Dst: __redisSetErrorFromErrno
      Src: /src/hiredis/net.c:409,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - c
    - tv
    argTypes:
    - redisContext*
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 396
    functionDepth: 2
    functionLinenumber: 396
    functionLinenumberEnd: 413
    functionName: redisContextSetTimeout
    functionSourceFile: /src/hiredis/net.c
    functionUses: 0
    functionsReached:
    - redisContextUpdateCommandTimeout
    - __redisSetError
    - __redisSetErrorFromErrno
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int redisContextSetTimeout(redisContext *c, const struct timeval tv)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hi_malloc
      Src: /src/hiredis/net.c:422,1
    - Dst: memcpy
      Src: /src/hiredis/net.c:427,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - c
    - timeout
    argTypes:
    - redisContext*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 415
    functionDepth: 0
    functionLinenumber: 415
    functionLinenumberEnd: 429
    functionName: redisContextUpdateConnectTimeout
    functionSourceFile: /src/hiredis/net.c
    functionUses: 0
    functionsReached:
    - memcpy
    - hi_malloc
    linkageType: ''
    returnType: int
    signature: int redisContextUpdateConnectTimeout(redisContext *c, const struct
      timeval *timeout)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hi_malloc
      Src: /src/hiredis/net.c:438,1
    - Dst: memcpy
      Src: /src/hiredis/net.c:443,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - c
    - timeout
    argTypes:
    - redisContext*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 445
      start: 431
    functionDepth: 0
    functionLinenumber: 431
    functionLinenumberEnd: 445
    functionName: redisContextUpdateCommandTimeout
    functionSourceFile: /src/hiredis/net.c
    functionUses: 1
    functionsReached:
    - memcpy
    - hi_malloc
    linkageType: ''
    returnType: int
    signature: int redisContextUpdateCommandTimeout(redisContext *c, const struct
      timeval *timeout)
  - BBCount: 33
    BranchProfiles: []
    Callsites:
    - Dst: hi_free
      Src: /src/hiredis/net.c:471,1
    - Dst: hi_strdup
      Src: /src/hiredis/net.c:473,1
    - Dst: redisContextUpdateConnectTimeout
      Src: /src/hiredis/net.c:479,1
    - Dst: hi_free
      Src: /src/hiredis/net.c:482,1
    - Dst: redisContextTimeoutMsec
      Src: /src/hiredis/net.c:486,1
    - Dst: hi_free
      Src: /src/hiredis/net.c:491,1
    - Dst: hi_free
      Src: /src/hiredis/net.c:494,1
    - Dst: hi_strdup
      Src: /src/hiredis/net.c:495,1
    - Dst: snprintf
      Src: /src/hiredis/net.c:498,1
    - Dst: memset
      Src: /src/hiredis/net.c:499,1
    - Dst: getaddrinfo
      Src: /src/hiredis/net.c:513,1
    - Dst: getaddrinfo
      Src: /src/hiredis/net.c:517,1
    - Dst: __redisSetError
      Src: /src/hiredis/net.c:520,1
    - Dst: gai_strerror
      Src: /src/hiredis/net.c:520,1
    - Dst: socket
      Src: /src/hiredis/net.c:533,1
    - Dst: redisSetBlocking
      Src: /src/hiredis/net.c:539,1
    - Dst: getaddrinfo
      Src: /src/hiredis/net.c:544,1
    - Dst: snprintf
      Src: /src/hiredis/net.c:546,1
    - Dst: gai_strerror
      Src: /src/hiredis/net.c:546,1
    - Dst: __redisSetError
      Src: /src/hiredis/net.c:547,1
    - Dst: setsockopt
      Src: /src/hiredis/net.c:553,1
    - Dst: freeaddrinfo
      Src: /src/hiredis/net.c:555,1
    - Dst: bind
      Src: /src/hiredis/net.c:561,1
    - Dst: freeaddrinfo
      Src: /src/hiredis/net.c:566,1
    - Dst: snprintf
      Src: /src/hiredis/net.c:569,1
    - Dst: strerror
      Src: /src/hiredis/net.c:569,1
    - Dst: __redisSetError
      Src: /src/hiredis/net.c:570,1
    - Dst: hi_free
      Src: /src/hiredis/net.c:576,1
    - Dst: hi_malloc
      Src: /src/hiredis/net.c:577,1
    - Dst: memcpy
      Src: /src/hiredis/net.c:581,1
    - Dst: connect
      Src: /src/hiredis/net.c:584,1
    - Dst: redisNetClose
      Src: /src/hiredis/net.c:586,1
    - Dst: redisNetClose
      Src: /src/hiredis/net.c:600,1
    - Dst: redisContextWaitReady
      Src: /src/hiredis/net.c:605,1
    - Dst: redisSetTcpNoDelay
      Src: /src/hiredis/net.c:607,1
    - Dst: redisSetBlocking
      Src: /src/hiredis/net.c:611,1
    - Dst: snprintf
      Src: /src/hiredis/net.c:620,1
    - Dst: strerror
      Src: /src/hiredis/net.c:620,1
    - Dst: __redisSetError
      Src: /src/hiredis/net.c:621,1
    - Dst: __redisSetError
      Src: /src/hiredis/net.c:626,1
    - Dst: freeaddrinfo
      Src: /src/hiredis/net.c:631,1
    CyclomaticComplexity: 57
    EdgeCount: 57
    ICount: 155
    argCount: 5
    argNames:
    - c
    - addr
    - port
    - timeout
    - source_addr
    argTypes:
    - redisContext*
    - char*
    - int
    - struct timeval*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 447
    functionDepth: 3
    functionLinenumber: 447
    functionLinenumberEnd: 635
    functionName: _redisContextConnectTcp
    functionSourceFile: /src/hiredis/net.c
    functionUses: 0
    functionsReached:
    - redisContextUpdateConnectTimeout
    - redisContextWaitReady
    - setsockopt
    - freeaddrinfo
    - hi_free
    - __redisSetError
    - connect
    - redisSetTcpNoDelay
    - getaddrinfo
    - memset
    - bind
    - redisContextTimeoutMsec
    - hi_malloc
    - gai_strerror
    - redisNetClose
    - snprintf
    - hi_strdup
    - socket
    - redisSetBlocking
    - strerror
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int _redisContextConnectTcp(redisContext *c, const char *addr, int
      port,\n                                   const struct timeval *timeout,\n                                   const
      char *source_addr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _redisContextConnectTcp
      Src: /src/hiredis/net.c:639,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - c
    - addr
    - port
    - timeout
    argTypes:
    - redisContext*
    - char*
    - int
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 637
    functionDepth: 4
    functionLinenumber: 637
    functionLinenumberEnd: 640
    functionName: redisContextConnectTcp
    functionSourceFile: /src/hiredis/net.c
    functionUses: 1
    functionsReached:
    - _redisContextConnectTcp
    linkageType: ''
    returnType: int
    signature: "int redisContextConnectTcp(redisContext *c, const char *addr, int
      port,\n                           const struct timeval *timeout)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _redisContextConnectTcp
      Src: /src/hiredis/net.c:645,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - c
    - addr
    - port
    - timeout
    - source_addr
    argTypes:
    - redisContext*
    - char*
    - int
    - struct timeval*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 642
    functionDepth: 4
    functionLinenumber: 642
    functionLinenumberEnd: 646
    functionName: redisContextConnectBindTcp
    functionSourceFile: /src/hiredis/net.c
    functionUses: 0
    functionsReached:
    - _redisContextConnectTcp
    linkageType: ''
    returnType: int
    signature: "int redisContextConnectBindTcp(redisContext *c, const char *addr,
      int port,\n                               const struct timeval *timeout,\n                               const
      char *source_addr)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: redisCreateSocket
      Src: /src/hiredis/net.c:654,1
    - Dst: redisSetBlocking
      Src: /src/hiredis/net.c:656,1
    - Dst: hi_free
      Src: /src/hiredis/net.c:661,1
    - Dst: hi_strdup
      Src: /src/hiredis/net.c:663,1
    - Dst: redisContextUpdateConnectTimeout
      Src: /src/hiredis/net.c:669,1
    - Dst: hi_free
      Src: /src/hiredis/net.c:672,1
    - Dst: redisContextTimeoutMsec
      Src: /src/hiredis/net.c:676,1
    - Dst: hi_free
      Src: /src/hiredis/net.c:680,1
    - Dst: hi_malloc
      Src: /src/hiredis/net.c:682,1
    - Dst: strncpy
      Src: /src/hiredis/net.c:688,1
    - Dst: connect
      Src: /src/hiredis/net.c:689,1
    - Dst: redisContextWaitReady
      Src: /src/hiredis/net.c:693,1
    - Dst: redisSetBlocking
      Src: /src/hiredis/net.c:699,1
    - Dst: __redisSetError
      Src: /src/hiredis/net.c:711,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 49
    argCount: 3
    argNames:
    - c
    - path
    - timeout
    argTypes:
    - redisContext*
    - char*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 648
    functionDepth: 4
    functionLinenumber: 648
    functionLinenumberEnd: 713
    functionName: redisContextConnectUnix
    functionSourceFile: /src/hiredis/net.c
    functionUses: 0
    functionsReached:
    - redisContextUpdateConnectTimeout
    - hi_free
    - redisSetBlocking
    - strncpy
    - __redisSetError
    - connect
    - redisContextWaitReady
    - hi_strdup
    - redisContextTimeoutMsec
    - redisCreateSocket
    - hi_malloc
    linkageType: ''
    returnType: int
    signature: int redisContextConnectUnix(redisContext *c, const char *path, const
      struct timeval *timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - override
    argTypes:
    - hiredisAllocFuncs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 51
    functionName: hiredisSetAllocators
    functionSourceFile: /src/hiredis/alloc.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: hiredisAllocFuncs
    signature: hiredisAllocFuncs hiredisSetAllocators(hiredisAllocFuncs *override)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 62
    functionName: hiredisResetAllocators
    functionSourceFile: /src/hiredis/alloc.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void hiredisResetAllocators(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mallocFn
      Src: /src/hiredis/alloc.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 68
    functionName: hi_malloc
    functionSourceFile: /src/hiredis/alloc.c
    functionUses: 10
    functionsReached:
    - mallocFn
    linkageType: ''
    returnType: void
    signature: void *hi_malloc(size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: callocFn
      Src: /src/hiredis/alloc.c:75,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - nmemb
    - size
    argTypes:
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 76
    functionName: hi_calloc
    functionSourceFile: /src/hiredis/alloc.c
    functionUses: 7
    functionsReached:
    - callocFn
    linkageType: ''
    returnType: void
    signature: void *hi_calloc(size_t nmemb, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reallocFn
      Src: /src/hiredis/alloc.c:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 80
    functionName: hi_realloc
    functionSourceFile: /src/hiredis/alloc.c
    functionUses: 2
    functionsReached:
    - reallocFn
    linkageType: ''
    returnType: void
    signature: void *hi_realloc(void *ptr, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strdupFn
      Src: /src/hiredis/alloc.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 84
    functionName: hi_strdup
    functionSourceFile: /src/hiredis/alloc.c
    functionUses: 3
    functionsReached:
    - strdupFn
    linkageType: ''
    returnType: char
    signature: char *hi_strdup(const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: freeFn
      Src: /src/hiredis/alloc.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 88
    functionName: hi_free
    functionSourceFile: /src/hiredis/alloc.c
    functionUses: 16
    functionsReached:
    - freeFn
    linkageType: ''
    returnType: void
    signature: void hi_free(void *ptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hi_calloc
      Src: /src/hiredis/hiredis.c:81,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - type
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 88
    functionName: createReplyObject
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 0
    functionsReached:
    - hi_calloc
    linkageType: ''
    returnType: redisReply
    signature: redisReply *createReplyObject(int type)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: freeReplyObject
      Src: /src/hiredis/hiredis.c:110,1
    - Dst: hi_free
      Src: /src/hiredis/hiredis.c:111,1
    - Dst: hi_free
      Src: /src/hiredis/hiredis.c:120,1
    - Dst: hi_free
      Src: /src/hiredis/hiredis.c:123,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 1
    argNames:
    - reply
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 124
    functionName: freeReplyObject
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 19
    functionsReached:
    - freeReplyObject
    - hi_free
    linkageType: ''
    returnType: void
    signature: void freeReplyObject(void *reply)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: createReplyObject
      Src: /src/hiredis/hiredis.c:130,1
    - Dst: assert
      Src: /src/hiredis/hiredis.c:134,1
    - Dst: hi_malloc
      Src: /src/hiredis/hiredis.c:142,1
    - Dst: memcpy
      Src: /src/hiredis/hiredis.c:145,1
    - Dst: memcpy
      Src: /src/hiredis/hiredis.c:147,1
    - Dst: hi_malloc
      Src: /src/hiredis/hiredis.c:151,1
    - Dst: memcpy
      Src: /src/hiredis/hiredis.c:154,1
    - Dst: assert
      Src: /src/hiredis/hiredis.c:162,1
    - Dst: freeReplyObject
      Src: /src/hiredis/hiredis.c:172,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 35
    argCount: 3
    argNames:
    - task
    - str
    - len
    argTypes:
    - redisReadTask*
    - char*
    - size_t
    assertStmts:
    - condition: "(task->type == REDIS_REPLY_ERROR  ||\n           task->type == REDIS_REPLY_STATUS
        ||\n           task->type == REDIS_REPLY_STRING ||\n           task->type
        == REDIS_REPLY_VERB   ||\n           task->type == REDIS_REPLY_BIGNUM)"
      pos:
        line_end: 137
        line_start: 133
        source_file: /src/hiredis/hiredis.c
    - condition: "(parent->type == REDIS_REPLY_ARRAY ||\n               parent->type
        == REDIS_REPLY_MAP ||\n               parent->type == REDIS_REPLY_ATTR ||\n
        \              parent->type == REDIS_REPLY_SET ||\n               parent->type
        == REDIS_REPLY_PUSH)"
      pos:
        line_end: 165
        line_start: 161
        source_file: /src/hiredis/hiredis.c
    constantsTouched: []
    func_position:
      end: 174
      start: 126
    functionDepth: 2
    functionLinenumber: 126
    functionLinenumberEnd: 174
    functionName: createStringObject
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 0
    functionsReached:
    - freeReplyObject
    - createReplyObject
    - assert
    - memcpy
    - hi_malloc
    linkageType: ''
    returnType: void
    signature: void *createStringObject(const redisReadTask *task, char *str, size_t
      len)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: createReplyObject
      Src: /src/hiredis/hiredis.c:179,1
    - Dst: hi_calloc
      Src: /src/hiredis/hiredis.c:184,1
    - Dst: freeReplyObject
      Src: /src/hiredis/hiredis.c:186,1
    - Dst: assert
      Src: /src/hiredis/hiredis.c:195,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - task
    - elements
    argTypes:
    - redisReadTask*
    - size_t
    assertStmts:
    - condition: "(parent->type == REDIS_REPLY_ARRAY ||\n               parent->type
        == REDIS_REPLY_MAP ||\n               parent->type == REDIS_REPLY_ATTR ||\n
        \              parent->type == REDIS_REPLY_SET ||\n               parent->type
        == REDIS_REPLY_PUSH)"
      pos:
        line_end: 198
        line_start: 194
        source_file: /src/hiredis/hiredis.c
    constantsTouched: []
    func_position:
      end: 203
      start: 176
    functionDepth: 2
    functionLinenumber: 176
    functionLinenumberEnd: 203
    functionName: createArrayObject
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 0
    functionsReached:
    - freeReplyObject
    - createReplyObject
    - assert
    - hi_calloc
    linkageType: ''
    returnType: void
    signature: void *createArrayObject(const redisReadTask *task, size_t elements)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: createReplyObject
      Src: /src/hiredis/hiredis.c:208,1
    - Dst: assert
      Src: /src/hiredis/hiredis.c:216,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - task
    - value
    argTypes:
    - redisReadTask*
    - long long
    assertStmts:
    - condition: "(parent->type == REDIS_REPLY_ARRAY ||\n               parent->type
        == REDIS_REPLY_MAP ||\n               parent->type == REDIS_REPLY_ATTR ||\n
        \              parent->type == REDIS_REPLY_SET ||\n               parent->type
        == REDIS_REPLY_PUSH)"
      pos:
        line_end: 219
        line_start: 215
        source_file: /src/hiredis/hiredis.c
    constantsTouched: []
    func_position:
      end: 224
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 224
    functionName: createIntegerObject
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 0
    functionsReached:
    - assert
    - createReplyObject
    linkageType: ''
    returnType: void
    signature: void *createIntegerObject(const redisReadTask *task, long long value)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: createReplyObject
      Src: /src/hiredis/hiredis.c:232,1
    - Dst: hi_malloc
      Src: /src/hiredis/hiredis.c:237,1
    - Dst: freeReplyObject
      Src: /src/hiredis/hiredis.c:239,1
    - Dst: memcpy
      Src: /src/hiredis/hiredis.c:248,1
    - Dst: assert
      Src: /src/hiredis/hiredis.c:254,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 4
    argNames:
    - task
    - value
    - str
    - len
    argTypes:
    - redisReadTask*
    - double
    - char*
    - size_t
    assertStmts:
    - condition: "(parent->type == REDIS_REPLY_ARRAY ||\n               parent->type
        == REDIS_REPLY_MAP ||\n               parent->type == REDIS_REPLY_ATTR ||\n
        \              parent->type == REDIS_REPLY_SET ||\n               parent->type
        == REDIS_REPLY_PUSH)"
      pos:
        line_end: 257
        line_start: 253
        source_file: /src/hiredis/hiredis.c
    constantsTouched: []
    func_position:
      end: 262
      start: 226
    functionDepth: 2
    functionLinenumber: 226
    functionLinenumberEnd: 262
    functionName: createDoubleObject
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 0
    functionsReached:
    - freeReplyObject
    - createReplyObject
    - assert
    - memcpy
    - hi_malloc
    linkageType: ''
    returnType: void
    signature: void *createDoubleObject(const redisReadTask *task, double value, char
      *str, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: createReplyObject
      Src: /src/hiredis/hiredis.c:267,1
    - Dst: assert
      Src: /src/hiredis/hiredis.c:273,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 1
    argNames:
    - task
    argTypes:
    - redisReadTask*
    assertStmts:
    - condition: "(parent->type == REDIS_REPLY_ARRAY ||\n               parent->type
        == REDIS_REPLY_MAP ||\n               parent->type == REDIS_REPLY_ATTR ||\n
        \              parent->type == REDIS_REPLY_SET ||\n               parent->type
        == REDIS_REPLY_PUSH)"
      pos:
        line_end: 276
        line_start: 272
        source_file: /src/hiredis/hiredis.c
    constantsTouched: []
    func_position:
      end: 281
      start: 264
    functionDepth: 1
    functionLinenumber: 264
    functionLinenumberEnd: 281
    functionName: createNilObject
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 0
    functionsReached:
    - assert
    - createReplyObject
    linkageType: ''
    returnType: void
    signature: void *createNilObject(const redisReadTask *task)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: createReplyObject
      Src: /src/hiredis/hiredis.c:286,1
    - Dst: assert
      Src: /src/hiredis/hiredis.c:294,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - task
    - bval
    argTypes:
    - redisReadTask*
    - int
    assertStmts:
    - condition: "(parent->type == REDIS_REPLY_ARRAY ||\n               parent->type
        == REDIS_REPLY_MAP ||\n               parent->type == REDIS_REPLY_ATTR ||\n
        \              parent->type == REDIS_REPLY_SET ||\n               parent->type
        == REDIS_REPLY_PUSH)"
      pos:
        line_end: 297
        line_start: 293
        source_file: /src/hiredis/hiredis.c
    constantsTouched: []
    func_position:
      end: 302
      start: 283
    functionDepth: 1
    functionLinenumber: 283
    functionLinenumberEnd: 302
    functionName: createBoolObject
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 0
    functionsReached:
    - assert
    - createReplyObject
    linkageType: ''
    returnType: void
    signature: void *createBoolObject(const redisReadTask *task, int bval)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - v
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 316
    functionName: countDigits
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t countDigits(uint64_t v)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: countDigits
      Src: /src/hiredis/hiredis.c:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - len
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 319
    functionDepth: 1
    functionLinenumber: 319
    functionLinenumberEnd: 321
    functionName: bulklen
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 0
    functionsReached:
    - countDigits
    linkageType: ''
    returnType: size_t
    signature: size_t bulklen(size_t len)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: sdsempty
      Src: /src/hiredis/hiredis.c:340,1
    - Dst: hi_realloc
      Src: /src/hiredis/hiredis.c:348,1
    - Dst: bulklen
      Src: /src/hiredis/hiredis.c:352,1
    - Dst: sdslen
      Src: /src/hiredis/hiredis.c:352,1
    - Dst: sdsempty
      Src: /src/hiredis/hiredis.c:355,1
    - Dst: sdscatlen
      Src: /src/hiredis/hiredis.c:360,1
    - Dst: va_arg
      Src: /src/hiredis/hiredis.c:374,1
    - Dst: strlen
      Src: /src/hiredis/hiredis.c:375,1
    - Dst: sdscatlen
      Src: /src/hiredis/hiredis.c:377,1
    - Dst: va_arg
      Src: /src/hiredis/hiredis.c:380,1
    - Dst: va_arg
      Src: /src/hiredis/hiredis.c:381,1
    - Dst: sdscatlen
      Src: /src/hiredis/hiredis.c:383,1
    - Dst: sdscat
      Src: /src/hiredis/hiredis.c:386,1
    - Dst: strchr
      Src: /src/hiredis/hiredis.c:399,1
    - Dst: isdigit
      Src: /src/hiredis/hiredis.c:402,1
    - Dst: isdigit
      Src: /src/hiredis/hiredis.c:407,1
    - Dst: va_copy
      Src: /src/hiredis/hiredis.c:411,1
    - Dst: strchr
      Src: /src/hiredis/hiredis.c:419,1
    - Dst: strchr
      Src: /src/hiredis/hiredis.c:425,1
    - Dst: strchr
      Src: /src/hiredis/hiredis.c:433,1
    - Dst: strchr
      Src: /src/hiredis/hiredis.c:443,1
    - Dst: strchr
      Src: /src/hiredis/hiredis.c:453,1
    - Dst: strchr
      Src: /src/hiredis/hiredis.c:463,1
    - Dst: va_arg
      Src: /src/hiredis/hiredis.c:464,1
    - Dst: va_end
      Src: /src/hiredis/hiredis.c:471,1
    - Dst: memcpy
      Src: /src/hiredis/hiredis.c:477,1
    - Dst: sdscatvprintf
      Src: /src/hiredis/hiredis.c:479,1
    - Dst: va_end
      Src: /src/hiredis/hiredis.c:486,1
    - Dst: hi_realloc
      Src: /src/hiredis/hiredis.c:504,1
    - Dst: bulklen
      Src: /src/hiredis/hiredis.c:508,1
    - Dst: sdslen
      Src: /src/hiredis/hiredis.c:508,1
    - Dst: sdsfree
      Src: /src/hiredis/hiredis.c:510,1
    - Dst: countDigits
      Src: /src/hiredis/hiredis.c:517,1
    - Dst: hi_malloc
      Src: /src/hiredis/hiredis.c:520,1
    - Dst: sprintf
      Src: /src/hiredis/hiredis.c:523,1
    - Dst: sprintf
      Src: /src/hiredis/hiredis.c:525,1
    - Dst: sdslen
      Src: /src/hiredis/hiredis.c:525,1
    - Dst: memcpy
      Src: /src/hiredis/hiredis.c:526,1
    - Dst: sdslen
      Src: /src/hiredis/hiredis.c:526,1
    - Dst: sdslen
      Src: /src/hiredis/hiredis.c:527,1
    - Dst: sdsfree
      Src: /src/hiredis/hiredis.c:528,1
    - Dst: assert
      Src: /src/hiredis/hiredis.c:532,1
    - Dst: hi_free
      Src: /src/hiredis/hiredis.c:535,1
    - Dst: sdsfree
      Src: /src/hiredis/hiredis.c:550,1
    - Dst: hi_free
      Src: /src/hiredis/hiredis.c:551,1
    - Dst: sdsfree
      Src: /src/hiredis/hiredis.c:554,1
    - Dst: hi_free
      Src: /src/hiredis/hiredis.c:555,1
    CyclomaticComplexity: 71
    EdgeCount: 71
    ICount: 193
    argCount: 3
    argNames:
    - target
    - format
    - ap
    argTypes:
    - char**
    - char*
    - va_list
    assertStmts:
    - condition: (pos == totlen)
      pos:
        line_end: 531
        line_start: 531
        source_file: /src/hiredis/hiredis.c
    constantsTouched: []
    func_position:
      end: 558
      start: 323
    functionDepth: 5
    functionLinenumber: 323
    functionLinenumberEnd: 558
    functionName: redisvFormatCommand
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 1
    functionsReached:
    - hi_realloc
    - assert
    - sdscat
    - bulklen
    - hi_free
    - countDigits
    - sdscatvprintf
    - strlen
    - hi_malloc
    - strchr
    - sprintf
    - sdsfree
    - sdsempty
    - va_arg
    - sdslen
    - sdscatlen
    - isdigit
    - va_end
    - memcpy
    - va_copy
    linkageType: ''
    returnType: int
    signature: int redisvFormatCommand(char **target, const char *format, va_list
      ap)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/hiredis/hiredis.c:575,1
    - Dst: redisvFormatCommand
      Src: /src/hiredis/hiredis.c:576,1
    - Dst: va_end
      Src: /src/hiredis/hiredis.c:577,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - target
    - format
    argTypes:
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 572
    functionDepth: 6
    functionLinenumber: 572
    functionLinenumberEnd: 585
    functionName: redisFormatCommand
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 2
    functionsReached:
    - va_start
    - redisvFormatCommand
    - va_end
    linkageType: ''
    returnType: int
    signature: int redisFormatCommand(char **target, const char *format, ...)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: countDigits
      Src: /src/hiredis/hiredis.c:605,1
    - Dst: strlen
      Src: /src/hiredis/hiredis.c:607,1
    - Dst: bulklen
      Src: /src/hiredis/hiredis.c:608,1
    - Dst: sdsempty
      Src: /src/hiredis/hiredis.c:612,1
    - Dst: sdsMakeRoomFor
      Src: /src/hiredis/hiredis.c:617,1
    - Dst: sdsfree
      Src: /src/hiredis/hiredis.c:619,1
    - Dst: sdscatfmt
      Src: /src/hiredis/hiredis.c:626,1
    - Dst: strlen
      Src: /src/hiredis/hiredis.c:628,1
    - Dst: sdscatfmt
      Src: /src/hiredis/hiredis.c:629,1
    - Dst: sdscatlen
      Src: /src/hiredis/hiredis.c:630,1
    - Dst: sdscatlen
      Src: /src/hiredis/hiredis.c:631,1
    - Dst: assert
      Src: /src/hiredis/hiredis.c:634,1
    - Dst: sdslen
      Src: /src/hiredis/hiredis.c:634,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 4
    argNames:
    - target
    - argc
    - argv
    - argvlen
    argTypes:
    - sds*
    - int
    - char**
    - size_t*
    assertStmts:
    - condition: (sdslen(cmd)==totlen)
      pos:
        line_end: 633
        line_start: 633
        source_file: /src/hiredis/hiredis.c
    constantsTouched: []
    func_position:
      end: 638
      start: 593
    functionDepth: 3
    functionLinenumber: 593
    functionLinenumberEnd: 638
    functionName: redisFormatSdsCommandArgv
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 2
    functionsReached:
    - strlen
    - sdsempty
    - sdsfree
    - countDigits
    - sdslen
    - sdscatlen
    - assert
    - bulklen
    - sdscatfmt
    - sdsMakeRoomFor
    linkageType: ''
    returnType: long long
    signature: "long long redisFormatSdsCommandArgv(sds *target, int argc, const char
      **argv,\n                                    const size_t *argvlen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sdsfree
      Src: /src/hiredis/hiredis.c:641,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - sds
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 640
    functionDepth: 2
    functionLinenumber: 640
    functionLinenumberEnd: 642
    functionName: redisFreeSdsCommand
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 0
    functionsReached:
    - sdsfree
    linkageType: ''
    returnType: void
    signature: void redisFreeSdsCommand(sds cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: countDigits
      Src: /src/hiredis/hiredis.c:660,1
    - Dst: strlen
      Src: /src/hiredis/hiredis.c:662,1
    - Dst: bulklen
      Src: /src/hiredis/hiredis.c:663,1
    - Dst: hi_malloc
      Src: /src/hiredis/hiredis.c:667,1
    - Dst: sprintf
      Src: /src/hiredis/hiredis.c:671,1
    - Dst: strlen
      Src: /src/hiredis/hiredis.c:673,1
    - Dst: sprintf
      Src: /src/hiredis/hiredis.c:674,1
    - Dst: memcpy
      Src: /src/hiredis/hiredis.c:675,1
    - Dst: assert
      Src: /src/hiredis/hiredis.c:680,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 4
    argNames:
    - target
    - argc
    - argv
    - argvlen
    argTypes:
    - char**
    - int
    - char**
    - size_t*
    assertStmts:
    - condition: (pos == totlen)
      pos:
        line_end: 679
        line_start: 679
        source_file: /src/hiredis/hiredis.c
    constantsTouched: []
    func_position:
      end: 685
      start: 649
    functionDepth: 2
    functionLinenumber: 649
    functionLinenumberEnd: 685
    functionName: redisFormatCommandArgv
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 1
    functionsReached:
    - sprintf
    - countDigits
    - assert
    - bulklen
    - memcpy
    - strlen
    - hi_malloc
    linkageType: ''
    returnType: long long
    signature: long long redisFormatCommandArgv(char **target, int argc, const char
      **argv, const size_t *argvlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hi_free
      Src: /src/hiredis/hiredis.c:688,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 687
    functionDepth: 0
    functionLinenumber: 687
    functionLinenumberEnd: 689
    functionName: redisFreeCommand
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 0
    functionsReached:
    - hi_free
    linkageType: ''
    returnType: void
    signature: void redisFreeCommand(char *cmd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/hiredis/hiredis.c:696,1
    - Dst: memcpy
      Src: /src/hiredis/hiredis.c:698,1
    - Dst: assert
      Src: /src/hiredis/hiredis.c:702,1
    - Dst: strerror_r
      Src: /src/hiredis/hiredis.c:703,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - c
    - type
    - str
    argTypes:
    - redisContext*
    - int
    - char*
    assertStmts:
    - condition: (type == REDIS_ERR_IO)
      pos:
        line_end: 701
        line_start: 701
        source_file: /src/hiredis/hiredis.c
    constantsTouched: []
    func_position:
      end: 705
      start: 691
    functionDepth: 1
    functionLinenumber: 691
    functionLinenumberEnd: 705
    functionName: __redisSetError
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 16
    functionsReached:
    - assert
    - memcpy
    - strlen
    - strerror_r
    linkageType: ''
    returnType: void
    signature: void __redisSetError(redisContext *c, int type, const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisReaderCreateWithFunctions
      Src: /src/hiredis/hiredis.c:708,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 707
    functionDepth: 4
    functionLinenumber: 707
    functionLinenumberEnd: 709
    functionName: redisReaderCreate
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 2
    functionsReached:
    - redisReaderCreateWithFunctions
    linkageType: ''
    returnType: redisReader
    signature: redisReader *redisReaderCreate(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: freeReplyObject
      Src: /src/hiredis/hiredis.c:713,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - privdata
    - reply
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 711
    functionDepth: 2
    functionLinenumber: 711
    functionLinenumberEnd: 714
    functionName: redisPushAutoFree
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 0
    functionsReached:
    - freeReplyObject
    linkageType: ''
    returnType: void
    signature: void redisPushAutoFree(void *privdata, void *reply)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hi_calloc
      Src: /src/hiredis/hiredis.c:719,1
    - Dst: sdsempty
      Src: /src/hiredis/hiredis.c:725,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/hiredis.c:726,1
    - Dst: redisFree
      Src: /src/hiredis/hiredis.c:730,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 735
      start: 716
    functionDepth: 5
    functionLinenumber: 716
    functionLinenumberEnd: 735
    functionName: redisContextInit
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 0
    functionsReached:
    - redisReaderCreate
    - redisFree
    - sdsempty
    - hi_calloc
    linkageType: ''
    returnType: redisContext
    signature: redisContext *redisContextInit(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: redisContext*::funcs::close
      Src: /src/hiredis/hiredis.c:742,1
    - Dst: sdsfree
      Src: /src/hiredis/hiredis.c:745,1
    - Dst: redisReaderFree
      Src: /src/hiredis/hiredis.c:746,1
    - Dst: hi_free
      Src: /src/hiredis/hiredis.c:747,1
    - Dst: hi_free
      Src: /src/hiredis/hiredis.c:748,1
    - Dst: hi_free
      Src: /src/hiredis/hiredis.c:749,1
    - Dst: hi_free
      Src: /src/hiredis/hiredis.c:750,1
    - Dst: hi_free
      Src: /src/hiredis/hiredis.c:751,1
    - Dst: hi_free
      Src: /src/hiredis/hiredis.c:752,1
    - Dst: redisContext*::free_privdata
      Src: /src/hiredis/hiredis.c:755,1
    - Dst: redisContext*::funcs::free_privctx
      Src: /src/hiredis/hiredis.c:758,1
    - Dst: memset
      Src: /src/hiredis/hiredis.c:760,1
    - Dst: hi_free
      Src: /src/hiredis/hiredis.c:761,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - c
    argTypes:
    - redisContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 737
    functionDepth: 3
    functionLinenumber: 737
    functionLinenumberEnd: 762
    functionName: redisFree
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 15
    functionsReached:
    - hi_free
    - sdsfree
    - redisReaderFree
    - redisContext*::free_privdata
    - redisContext*::funcs::free_privctx
    - redisContext*::funcs::close
    - memset
    linkageType: ''
    returnType: void
    signature: void redisFree(redisContext *c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisFree
      Src: /src/hiredis/hiredis.c:767,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - c
    argTypes:
    - redisContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 764
    functionDepth: 4
    functionLinenumber: 764
    functionLinenumberEnd: 769
    functionName: redisFreeKeepFd
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 1
    functionsReached:
    - redisFree
    linkageType: ''
    returnType: redisFD
    signature: redisFD redisFreeKeepFd(redisContext *c)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/hiredis/hiredis.c:773,1
    - Dst: strlen
      Src: /src/hiredis/hiredis.c:773,1
    - Dst: redisContext*::funcs::free_privctx
      Src: /src/hiredis/hiredis.c:776,1
    - Dst: redisContext*::funcs::close
      Src: /src/hiredis/hiredis.c:781,1
    - Dst: sdsfree
      Src: /src/hiredis/hiredis.c:784,1
    - Dst: redisReaderFree
      Src: /src/hiredis/hiredis.c:785,1
    - Dst: sdsempty
      Src: /src/hiredis/hiredis.c:787,1
    - Dst: redisReaderCreate
      Src: /src/hiredis/hiredis.c:788,1
    - Dst: __redisSetError
      Src: /src/hiredis/hiredis.c:791,1
    - Dst: redisContextConnectBindTcp
      Src: /src/hiredis/hiredis.c:797,1
    - Dst: redisContextConnectUnix
      Src: /src/hiredis/hiredis.c:800,1
    - Dst: __redisSetError
      Src: /src/hiredis/hiredis.c:804,1
    - Dst: redisContextSetTimeout
      Src: /src/hiredis/hiredis.c:809,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 1
    argNames:
    - c
    argTypes:
    - redisContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 813
      start: 771
    functionDepth: 5
    functionLinenumber: 771
    functionLinenumberEnd: 813
    functionName: redisReconnect
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 1
    functionsReached:
    - sdsfree
    - sdsempty
    - redisContextConnectBindTcp
    - __redisSetError
    - redisReaderFree
    - redisContext*::funcs::free_privctx
    - redisContextSetTimeout
    - redisContext*::funcs::close
    - redisReaderCreate
    - redisContextConnectUnix
    - memset
    - strlen
    linkageType: ''
    returnType: int
    signature: int redisReconnect(redisContext *c)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: redisContextInit
      Src: /src/hiredis/hiredis.c:816,1
    - Dst: redisSetPushCallback
      Src: /src/hiredis/hiredis.c:845,1
    - Dst: redisSetPushCallback
      Src: /src/hiredis/hiredis.c:847,1
    - Dst: redisContextUpdateConnectTimeout
      Src: /src/hiredis/hiredis.c:852,1
    - Dst: redisContextUpdateCommandTimeout
      Src: /src/hiredis/hiredis.c:853,1
    - Dst: __redisSetError
      Src: /src/hiredis/hiredis.c:854,1
    - Dst: redisContextConnectBindTcp
      Src: /src/hiredis/hiredis.c:859,1
    - Dst: redisContextConnectUnix
      Src: /src/hiredis/hiredis.c:863,1
    - Dst: redisFree
      Src: /src/hiredis/hiredis.c:869,1
    - Dst: redisContextSetTimeout
      Src: /src/hiredis/hiredis.c:876,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 52
    argCount: 1
    argNames:
    - options
    argTypes:
    - redisOptions*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 880
      start: 815
    functionDepth: 6
    functionLinenumber: 815
    functionLinenumberEnd: 880
    functionName: redisConnectWithOptions
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 6
    functionsReached:
    - redisContextUpdateCommandTimeout
    - redisContextUpdateConnectTimeout
    - redisFree
    - redisContextConnectBindTcp
    - __redisSetError
    - redisContextInit
    - redisContextSetTimeout
    - redisContextConnectUnix
    - redisSetPushCallback
    linkageType: ''
    returnType: redisContext
    signature: redisContext *redisConnectWithOptions(const redisOptions *options)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: REDIS_OPTIONS_SET_TCP
      Src: /src/hiredis/hiredis.c:887,1
    - Dst: redisConnectWithOptions
      Src: /src/hiredis/hiredis.c:888,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ip
    - port
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 889
      start: 885
    functionDepth: 7
    functionLinenumber: 885
    functionLinenumberEnd: 889
    functionName: redisConnect
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 3
    functionsReached:
    - redisConnectWithOptions
    - REDIS_OPTIONS_SET_TCP
    linkageType: ''
    returnType: redisContext
    signature: redisContext *redisConnect(const char *ip, int port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: REDIS_OPTIONS_SET_TCP
      Src: /src/hiredis/hiredis.c:893,1
    - Dst: redisConnectWithOptions
      Src: /src/hiredis/hiredis.c:895,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ip
    - port
    - tv
    argTypes:
    - char*
    - int
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 891
    functionDepth: 7
    functionLinenumber: 891
    functionLinenumberEnd: 896
    functionName: redisConnectWithTimeout
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 1
    functionsReached:
    - redisConnectWithOptions
    - REDIS_OPTIONS_SET_TCP
    linkageType: ''
    returnType: redisContext
    signature: redisContext *redisConnectWithTimeout(const char *ip, int port, const
      struct timeval tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: REDIS_OPTIONS_SET_TCP
      Src: /src/hiredis/hiredis.c:900,1
    - Dst: redisConnectWithOptions
      Src: /src/hiredis/hiredis.c:902,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ip
    - port
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 898
    functionDepth: 7
    functionLinenumber: 898
    functionLinenumberEnd: 903
    functionName: redisConnectNonBlock
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 0
    functionsReached:
    - redisConnectWithOptions
    - REDIS_OPTIONS_SET_TCP
    linkageType: ''
    returnType: redisContext
    signature: redisContext *redisConnectNonBlock(const char *ip, int port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: REDIS_OPTIONS_SET_TCP
      Src: /src/hiredis/hiredis.c:908,1
    - Dst: redisConnectWithOptions
      Src: /src/hiredis/hiredis.c:911,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ip
    - port
    - source_addr
    argTypes:
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 912
      start: 905
    functionDepth: 7
    functionLinenumber: 905
    functionLinenumberEnd: 912
    functionName: redisConnectBindNonBlock
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 0
    functionsReached:
    - redisConnectWithOptions
    - REDIS_OPTIONS_SET_TCP
    linkageType: ''
    returnType: redisContext
    signature: "redisContext *redisConnectBindNonBlock(const char *ip, int port,\n
      \                                      const char *source_addr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: REDIS_OPTIONS_SET_TCP
      Src: /src/hiredis/hiredis.c:917,1
    - Dst: redisConnectWithOptions
      Src: /src/hiredis/hiredis.c:920,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ip
    - port
    - source_addr
    argTypes:
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 914
    functionDepth: 7
    functionLinenumber: 914
    functionLinenumberEnd: 921
    functionName: redisConnectBindNonBlockWithReuse
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 0
    functionsReached:
    - redisConnectWithOptions
    - REDIS_OPTIONS_SET_TCP
    linkageType: ''
    returnType: redisContext
    signature: "redisContext *redisConnectBindNonBlockWithReuse(const char *ip, int
      port,\n                                                const char *source_addr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: REDIS_OPTIONS_SET_UNIX
      Src: /src/hiredis/hiredis.c:925,1
    - Dst: redisConnectWithOptions
      Src: /src/hiredis/hiredis.c:926,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 923
    functionDepth: 7
    functionLinenumber: 923
    functionLinenumberEnd: 927
    functionName: redisConnectUnix
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 3
    functionsReached:
    - redisConnectWithOptions
    - REDIS_OPTIONS_SET_UNIX
    linkageType: ''
    returnType: redisContext
    signature: redisContext *redisConnectUnix(const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: REDIS_OPTIONS_SET_UNIX
      Src: /src/hiredis/hiredis.c:931,1
    - Dst: redisConnectWithOptions
      Src: /src/hiredis/hiredis.c:933,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - path
    - tv
    argTypes:
    - char*
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 929
    functionDepth: 7
    functionLinenumber: 929
    functionLinenumberEnd: 934
    functionName: redisConnectUnixWithTimeout
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 1
    functionsReached:
    - redisConnectWithOptions
    - REDIS_OPTIONS_SET_UNIX
    linkageType: ''
    returnType: redisContext
    signature: redisContext *redisConnectUnixWithTimeout(const char *path, const struct
      timeval tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: REDIS_OPTIONS_SET_UNIX
      Src: /src/hiredis/hiredis.c:938,1
    - Dst: redisConnectWithOptions
      Src: /src/hiredis/hiredis.c:940,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 936
    functionDepth: 7
    functionLinenumber: 936
    functionLinenumberEnd: 941
    functionName: redisConnectUnixNonBlock
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 0
    functionsReached:
    - redisConnectWithOptions
    - REDIS_OPTIONS_SET_UNIX
    linkageType: ''
    returnType: redisContext
    signature: redisContext *redisConnectUnixNonBlock(const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisConnectWithOptions
      Src: /src/hiredis/hiredis.c:947,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - fd
    argTypes:
    - redisFD
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 948
      start: 943
    functionDepth: 7
    functionLinenumber: 943
    functionLinenumberEnd: 948
    functionName: redisConnectFd
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 1
    functionsReached:
    - redisConnectWithOptions
    linkageType: ''
    returnType: redisContext
    signature: redisContext *redisConnectFd(redisFD fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: redisContextSetTimeout
      Src: /src/hiredis/hiredis.c:953,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - c
    - tv
    argTypes:
    - redisContext*
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 951
    functionDepth: 3
    functionLinenumber: 951
    functionLinenumberEnd: 955
    functionName: redisSetTimeout
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 2
    functionsReached:
    - redisContextSetTimeout
    linkageType: ''
    returnType: int
    signature: int redisSetTimeout(redisContext *c, const struct timeval tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisKeepAlive
      Src: /src/hiredis/hiredis.c:958,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c
    - interval
    argTypes:
    - redisContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 957
    functionDepth: 3
    functionLinenumber: 957
    functionLinenumberEnd: 959
    functionName: redisEnableKeepAliveWithInterval
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 0
    functionsReached:
    - redisKeepAlive
    linkageType: ''
    returnType: int
    signature: int redisEnableKeepAliveWithInterval(redisContext *c, int interval)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisKeepAlive
      Src: /src/hiredis/hiredis.c:963,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - redisContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 964
      start: 962
    functionDepth: 3
    functionLinenumber: 962
    functionLinenumberEnd: 964
    functionName: redisEnableKeepAlive
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 2
    functionsReached:
    - redisKeepAlive
    linkageType: ''
    returnType: int
    signature: int redisEnableKeepAlive(redisContext *c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisContextSetTcpUserTimeout
      Src: /src/hiredis/hiredis.c:968,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - c
    - timeout
    argTypes:
    - redisContext*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 967
    functionDepth: 3
    functionLinenumber: 967
    functionLinenumberEnd: 969
    functionName: redisSetTcpUserTimeout
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 1
    functionsReached:
    - redisContextSetTcpUserTimeout
    linkageType: ''
    returnType: int
    signature: int redisSetTcpUserTimeout(redisContext *c, unsigned int timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - c
    - fn
    argTypes:
    - redisContext*
    - redisPushFn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 972
    functionDepth: 0
    functionLinenumber: 972
    functionLinenumberEnd: 976
    functionName: redisSetPushCallback
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: redisPushFn
    signature: redisPushFn *redisSetPushCallback(redisContext *c, redisPushFn *fn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: redisContext*::funcs::read
      Src: /src/hiredis/hiredis.c:991,1
    - Dst: redisReaderFeed
      Src: /src/hiredis/hiredis.c:995,1
    - Dst: __redisSetError
      Src: /src/hiredis/hiredis.c:996,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - c
    argTypes:
    - redisContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 983
    functionDepth: 5
    functionLinenumber: 983
    functionLinenumberEnd: 1000
    functionName: redisBufferRead
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 2
    functionsReached:
    - redisContext*::funcs::read
    - redisReaderFeed
    - __redisSetError
    linkageType: ''
    returnType: int
    signature: int redisBufferRead(redisContext *c)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: sdslen
      Src: /src/hiredis/hiredis.c:1017,1
    - Dst: redisContext*::funcs::write
      Src: /src/hiredis/hiredis.c:1018,1
    - Dst: sdslen
      Src: /src/hiredis/hiredis.c:1022,1
    - Dst: sdsfree
      Src: /src/hiredis/hiredis.c:1023,1
    - Dst: sdsempty
      Src: /src/hiredis/hiredis.c:1024,1
    - Dst: sdsrange
      Src: /src/hiredis/hiredis.c:1028,1
    - Dst: sdslen
      Src: /src/hiredis/hiredis.c:1032,1
    - Dst: __redisSetError
      Src: /src/hiredis/hiredis.c:1036,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 2
    argNames:
    - c
    - done
    argTypes:
    - redisContext*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 1011
    functionDepth: 3
    functionLinenumber: 1011
    functionLinenumberEnd: 1038
    functionName: redisBufferWrite
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 3
    functionsReached:
    - sdsrange
    - redisContext*::funcs::write
    - sdsfree
    - sdsempty
    - __redisSetError
    - sdslen
    linkageType: ''
    returnType: int
    signature: int redisBufferWrite(redisContext *c, int *done)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: redisIsPushReply
      Src: /src/hiredis/hiredis.c:1043,1
    - Dst: redisContext*::push_cb
      Src: /src/hiredis/hiredis.c:1044,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - c
    - reply
    argTypes:
    - redisContext*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1049
      start: 1042
    functionDepth: 1
    functionLinenumber: 1042
    functionLinenumberEnd: 1049
    functionName: redisHandledPushReply
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 0
    functionsReached:
    - redisContext*::push_cb
    - redisIsPushReply
    linkageType: ''
    returnType: int
    signature: int redisHandledPushReply(redisContext *c, void *reply)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: redisReaderGetReply
      Src: /src/hiredis/hiredis.c:1053,1
    - Dst: __redisSetError
      Src: /src/hiredis/hiredis.c:1054,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - c
    - reply
    argTypes:
    - redisContext*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 1052
    functionDepth: 8
    functionLinenumber: 1052
    functionLinenumberEnd: 1059
    functionName: redisGetReplyFromReader
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 0
    functionsReached:
    - __redisSetError
    - redisReaderGetReply
    linkageType: ''
    returnType: int
    signature: int redisGetReplyFromReader(redisContext *c, void **reply)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: redisGetReplyFromReader
      Src: /src/hiredis/hiredis.c:1066,1
    - Dst: redisHandledPushReply
      Src: /src/hiredis/hiredis.c:1068,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - c
    - reply
    argTypes:
    - redisContext*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1071
      start: 1064
    functionDepth: 9
    functionLinenumber: 1064
    functionLinenumberEnd: 1071
    functionName: redisNextInBandReplyFromReader
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 0
    functionsReached:
    - redisHandledPushReply
    - redisGetReplyFromReader
    linkageType: ''
    returnType: int
    signature: int redisNextInBandReplyFromReader(redisContext *c, void **reply)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: redisNextInBandReplyFromReader
      Src: /src/hiredis/hiredis.c:1078,1
    - Dst: redisBufferWrite
      Src: /src/hiredis/hiredis.c:1085,1
    - Dst: redisBufferRead
      Src: /src/hiredis/hiredis.c:1091,1
    - Dst: redisNextInBandReplyFromReader
      Src: /src/hiredis/hiredis.c:1094,1
    - Dst: freeReplyObject
      Src: /src/hiredis/hiredis.c:1103,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 2
    argNames:
    - c
    - reply
    argTypes:
    - redisContext*
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1107
      start: 1073
    functionDepth: 10
    functionLinenumber: 1073
    functionLinenumberEnd: 1107
    functionName: redisGetReply
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 6
    functionsReached:
    - redisBufferRead
    - freeReplyObject
    - redisBufferWrite
    - redisNextInBandReplyFromReader
    linkageType: ''
    returnType: int
    signature: int redisGetReply(redisContext *c, void **reply)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sdscatlen
      Src: /src/hiredis/hiredis.c:1119,1
    - Dst: __redisSetError
      Src: /src/hiredis/hiredis.c:1121,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - c
    - cmd
    - len
    argTypes:
    - redisContext*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1127
      start: 1116
    functionDepth: 3
    functionLinenumber: 1116
    functionLinenumberEnd: 1127
    functionName: __redisAppendCommand
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 1
    functionsReached:
    - __redisSetError
    - sdscatlen
    linkageType: ''
    returnType: int
    signature: int __redisAppendCommand(redisContext *c, const char *cmd, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: __redisAppendCommand
      Src: /src/hiredis/hiredis.c:1131,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - c
    - cmd
    - len
    argTypes:
    - redisContext*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1136
      start: 1129
    functionDepth: 4
    functionLinenumber: 1129
    functionLinenumberEnd: 1136
    functionName: redisAppendFormattedCommand
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 2
    functionsReached:
    - __redisAppendCommand
    linkageType: ''
    returnType: int
    signature: int redisAppendFormattedCommand(redisContext *c, const char *cmd, size_t
      len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: redisvFormatCommand
      Src: /src/hiredis/hiredis.c:1142,1
    - Dst: __redisSetError
      Src: /src/hiredis/hiredis.c:1144,1
    - Dst: __redisSetError
      Src: /src/hiredis/hiredis.c:1147,1
    - Dst: __redisAppendCommand
      Src: /src/hiredis/hiredis.c:1151,1
    - Dst: hi_free
      Src: /src/hiredis/hiredis.c:1152,1
    - Dst: hi_free
      Src: /src/hiredis/hiredis.c:1156,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - c
    - format
    - ap
    argTypes:
    - redisContext*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1158
      start: 1138
    functionDepth: 6
    functionLinenumber: 1138
    functionLinenumberEnd: 1158
    functionName: redisvAppendCommand
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 0
    functionsReached:
    - __redisAppendCommand
    - redisvFormatCommand
    - hi_free
    - __redisSetError
    linkageType: ''
    returnType: int
    signature: int redisvAppendCommand(redisContext *c, const char *format, va_list
      ap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/hiredis/hiredis.c:1164,1
    - Dst: redisvAppendCommand
      Src: /src/hiredis/hiredis.c:1165,1
    - Dst: va_end
      Src: /src/hiredis/hiredis.c:1166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - c
    - format
    argTypes:
    - redisContext*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1168
      start: 1160
    functionDepth: 7
    functionLinenumber: 1160
    functionLinenumberEnd: 1168
    functionName: redisAppendCommand
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 5
    functionsReached:
    - va_start
    - va_end
    - redisvAppendCommand
    linkageType: ''
    returnType: int
    signature: int redisAppendCommand(redisContext *c, const char *format, ...)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: redisFormatSdsCommandArgv
      Src: /src/hiredis/hiredis.c:1174,1
    - Dst: __redisSetError
      Src: /src/hiredis/hiredis.c:1176,1
    - Dst: __redisAppendCommand
      Src: /src/hiredis/hiredis.c:1180,1
    - Dst: sdsfree
      Src: /src/hiredis/hiredis.c:1181,1
    - Dst: sdsfree
      Src: /src/hiredis/hiredis.c:1185,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - c
    - argc
    - argv
    - argvlen
    argTypes:
    - redisContext*
    - int
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1187
      start: 1170
    functionDepth: 4
    functionLinenumber: 1170
    functionLinenumberEnd: 1187
    functionName: redisAppendCommandArgv
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 0
    functionsReached:
    - __redisAppendCommand
    - __redisSetError
    - sdsfree
    - redisFormatSdsCommandArgv
    linkageType: ''
    returnType: int
    signature: int redisAppendCommandArgv(redisContext *c, int argc, const char **argv,
      const size_t *argvlen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: redisGetReply
      Src: /src/hiredis/hiredis.c:1204,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - c
    argTypes:
    - redisContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1209
      start: 1200
    functionDepth: 11
    functionLinenumber: 1200
    functionLinenumberEnd: 1209
    functionName: __redisBlockForReply
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 0
    functionsReached:
    - redisGetReply
    linkageType: ''
    returnType: void
    signature: void *__redisBlockForReply(redisContext *c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: redisvAppendCommand
      Src: /src/hiredis/hiredis.c:1212,1
    - Dst: __redisBlockForReply
      Src: /src/hiredis/hiredis.c:1214,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - c
    - format
    - ap
    argTypes:
    - redisContext*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1215
      start: 1211
    functionDepth: 12
    functionLinenumber: 1211
    functionLinenumberEnd: 1215
    functionName: redisvCommand
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 0
    functionsReached:
    - redisvAppendCommand
    - __redisBlockForReply
    linkageType: ''
    returnType: void
    signature: void *redisvCommand(redisContext *c, const char *format, va_list ap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/hiredis/hiredis.c:1219,1
    - Dst: redisvCommand
      Src: /src/hiredis/hiredis.c:1220,1
    - Dst: va_end
      Src: /src/hiredis/hiredis.c:1221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - c
    - format
    argTypes:
    - redisContext*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1223
      start: 1217
    functionDepth: 13
    functionLinenumber: 1217
    functionLinenumberEnd: 1223
    functionName: redisCommand
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 14
    functionsReached:
    - va_start
    - va_end
    - redisvCommand
    linkageType: ''
    returnType: void
    signature: void *redisCommand(redisContext *c, const char *format, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: redisAppendCommandArgv
      Src: /src/hiredis/hiredis.c:1226,1
    - Dst: __redisBlockForReply
      Src: /src/hiredis/hiredis.c:1228,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - c
    - argc
    - argv
    - argvlen
    argTypes:
    - redisContext*
    - int
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1229
      start: 1225
    functionDepth: 12
    functionLinenumber: 1225
    functionLinenumberEnd: 1229
    functionName: redisCommandArgv
    functionSourceFile: /src/hiredis/hiredis.c
    functionUses: 1
    functionsReached:
    - redisAppendCommandArgv
    - __redisBlockForReply
    linkageType: ''
    returnType: void
    signature: void *redisCommandArgv(redisContext *c, int argc, const char **argv,
      const size_t *argvlen)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CFRunLoopSourceInvalidate
      Src: /src/hiredis/adapters/macosx.h:51,1
    - Dst: CFRelease
      Src: /src/hiredis/adapters/macosx.h:52,1
    - Dst: CFSocketInvalidate
      Src: /src/hiredis/adapters/macosx.h:55,1
    - Dst: CFRelease
      Src: /src/hiredis/adapters/macosx.h:56,1
    - Dst: hi_free
      Src: /src/hiredis/adapters/macosx.h:58,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - redisRunLoop
    argTypes:
    - RedisRunLoop*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 61
    functionName: freeRedisRunLoop
    functionSourceFile: /src/hiredis/adapters/macosx.h
    functionUses: 0
    functionsReached:
    - hi_free
    - CFRunLoopSourceInvalidate
    - CFRelease
    - CFSocketInvalidate
    linkageType: ''
    returnType: int
    signature: int freeRedisRunLoop(RedisRunLoop* redisRunLoop)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CFSocketEnableCallBacks
      Src: /src/hiredis/adapters/macosx.h:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: redisMacOSAddRead
    functionSourceFile: /src/hiredis/adapters/macosx.h
    functionUses: 0
    functionsReached:
    - CFSocketEnableCallBacks
    linkageType: ''
    returnType: void
    signature: void redisMacOSAddRead(void *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CFSocketDisableCallBacks
      Src: /src/hiredis/adapters/macosx.h:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 71
    functionName: redisMacOSDelRead
    functionSourceFile: /src/hiredis/adapters/macosx.h
    functionUses: 0
    functionsReached:
    - CFSocketDisableCallBacks
    linkageType: ''
    returnType: void
    signature: void redisMacOSDelRead(void *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CFSocketEnableCallBacks
      Src: /src/hiredis/adapters/macosx.h:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 76
    functionName: redisMacOSAddWrite
    functionSourceFile: /src/hiredis/adapters/macosx.h
    functionUses: 0
    functionsReached:
    - CFSocketEnableCallBacks
    linkageType: ''
    returnType: void
    signature: void redisMacOSAddWrite(void *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CFSocketDisableCallBacks
      Src: /src/hiredis/adapters/macosx.h:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 81
    functionName: redisMacOSDelWrite
    functionSourceFile: /src/hiredis/adapters/macosx.h
    functionUses: 0
    functionsReached:
    - CFSocketDisableCallBacks
    linkageType: ''
    returnType: void
    signature: void redisMacOSDelWrite(void *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: freeRedisRunLoop
      Src: /src/hiredis/adapters/macosx.h:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 86
    functionName: redisMacOSCleanup
    functionSourceFile: /src/hiredis/adapters/macosx.h
    functionUses: 0
    functionsReached:
    - freeRedisRunLoop
    linkageType: ''
    returnType: void
    signature: void redisMacOSCleanup(void *privdata)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: redisAsyncHandleRead
      Src: /src/hiredis/adapters/macosx.h:93,1
    - Dst: redisAsyncHandleWrite
      Src: /src/hiredis/adapters/macosx.h:97,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 5
    argNames:
    - __unused
    - callbackType
    - __unused
    - data
    - info
    argTypes:
    - CFSocketRef
    - CFSocketCallBackType
    - CFDataRef
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 88
    functionDepth: 6
    functionLinenumber: 88
    functionLinenumberEnd: 103
    functionName: redisMacOSAsyncCallback
    functionSourceFile: /src/hiredis/adapters/macosx.h
    functionUses: 0
    functionsReached:
    - redisAsyncHandleWrite
    - redisAsyncHandleRead
    linkageType: ''
    returnType: void
    signature: void redisMacOSAsyncCallback(CFSocketRef __unused s, CFSocketCallBackType
      callbackType, CFDataRef __unused address, const void __unused *data, void *info)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: hi_calloc
      Src: /src/hiredis/adapters/macosx.h:111,1
    - Dst: CFSocketCreateWithNative
      Src: /src/hiredis/adapters/macosx.h:128,1
    - Dst: freeRedisRunLoop
      Src: /src/hiredis/adapters/macosx.h:132,1
    - Dst: CFSocketCreateRunLoopSource
      Src: /src/hiredis/adapters/macosx.h:134,1
    - Dst: freeRedisRunLoop
      Src: /src/hiredis/adapters/macosx.h:135,1
    - Dst: CFRunLoopAddSource
      Src: /src/hiredis/adapters/macosx.h:137,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - redisAsyncCtx
    - runLoop
    argTypes:
    - redisAsyncContext*
    - CFRunLoopRef
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 140
    functionName: redisMacOSAttach
    functionSourceFile: /src/hiredis/adapters/macosx.h
    functionUses: 0
    functionsReached:
    - freeRedisRunLoop
    - hi_calloc
    - CFSocketCreateWithNative
    - CFSocketCreateRunLoopSource
    - CFRunLoopAddSource
    linkageType: ''
    returnType: int
    signature: int redisMacOSAttach(redisAsyncContext *redisAsyncCtx, CFRunLoopRef
      runLoop)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: g_return_if_fail
      Src: /src/hiredis/adapters/glib.h:20,1
    - Dst: g_main_context_wakeup
      Src: /src/hiredis/adapters/glib.h:22,1
    - Dst: g_source_get_context
      Src: /src/hiredis/adapters/glib.h:22,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - data
    argTypes:
    - gpointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 23
    functionName: redis_source_add_read
    functionSourceFile: /src/hiredis/adapters/glib.h
    functionUses: 0
    functionsReached:
    - g_return_if_fail
    - g_main_context_wakeup
    - g_source_get_context
    linkageType: ''
    returnType: void
    signature: void redis_source_add_read (gpointer data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: g_return_if_fail
      Src: /src/hiredis/adapters/glib.h:29,1
    - Dst: g_main_context_wakeup
      Src: /src/hiredis/adapters/glib.h:31,1
    - Dst: g_source_get_context
      Src: /src/hiredis/adapters/glib.h:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - data
    argTypes:
    - gpointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 32
    functionName: redis_source_del_read
    functionSourceFile: /src/hiredis/adapters/glib.h
    functionUses: 0
    functionsReached:
    - g_return_if_fail
    - g_main_context_wakeup
    - g_source_get_context
    linkageType: ''
    returnType: void
    signature: void redis_source_del_read (gpointer data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: g_return_if_fail
      Src: /src/hiredis/adapters/glib.h:38,1
    - Dst: g_main_context_wakeup
      Src: /src/hiredis/adapters/glib.h:40,1
    - Dst: g_source_get_context
      Src: /src/hiredis/adapters/glib.h:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - data
    argTypes:
    - gpointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 41
    functionName: redis_source_add_write
    functionSourceFile: /src/hiredis/adapters/glib.h
    functionUses: 0
    functionsReached:
    - g_return_if_fail
    - g_main_context_wakeup
    - g_source_get_context
    linkageType: ''
    returnType: void
    signature: void redis_source_add_write (gpointer data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: g_return_if_fail
      Src: /src/hiredis/adapters/glib.h:47,1
    - Dst: g_main_context_wakeup
      Src: /src/hiredis/adapters/glib.h:49,1
    - Dst: g_source_get_context
      Src: /src/hiredis/adapters/glib.h:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - data
    argTypes:
    - gpointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 50
    functionName: redis_source_del_write
    functionSourceFile: /src/hiredis/adapters/glib.h
    functionUses: 0
    functionsReached:
    - g_return_if_fail
    - g_main_context_wakeup
    - g_source_get_context
    linkageType: ''
    returnType: void
    signature: void redis_source_del_write (gpointer data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: g_return_if_fail
      Src: /src/hiredis/adapters/glib.h:57,1
    - Dst: redis_source_del_read
      Src: /src/hiredis/adapters/glib.h:59,1
    - Dst: redis_source_del_write
      Src: /src/hiredis/adapters/glib.h:60,1
    - Dst: g_source_remove_poll
      Src: /src/hiredis/adapters/glib.h:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - data
    argTypes:
    - gpointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 69
    functionName: redis_source_cleanup
    functionSourceFile: /src/hiredis/adapters/glib.h
    functionUses: 0
    functionsReached:
    - g_return_if_fail
    - g_source_remove_poll
    - redis_source_del_read
    - redis_source_del_write
    linkageType: ''
    returnType: void
    signature: void redis_source_cleanup (gpointer data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - source
    - timeout_
    argTypes:
    - GSource*
    - gint*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 78
    functionName: redis_source_prepare
    functionSourceFile: /src/hiredis/adapters/glib.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: gboolean
    signature: "gboolean redis_source_prepare (GSource *source,\n                      gint
      \   *timeout_)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - source
    argTypes:
    - GSource*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 85
    functionName: redis_source_check
    functionSourceFile: /src/hiredis/adapters/glib.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: gboolean
    signature: gboolean redis_source_check (GSource *source)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: redisAsyncHandleWrite
      Src: /src/hiredis/adapters/glib.h:95,1
    - Dst: redisAsyncHandleRead
      Src: /src/hiredis/adapters/glib.h:100,1
    - Dst: callback
      Src: /src/hiredis/adapters/glib.h:105,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - source
    - callback
    - user_data
    argTypes:
    - GSource*
    - GSourceFunc
    - gpointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 87
    functionDepth: 6
    functionLinenumber: 87
    functionLinenumberEnd: 109
    functionName: redis_source_dispatch
    functionSourceFile: /src/hiredis/adapters/glib.h
    functionUses: 0
    functionsReached:
    - redisAsyncHandleRead
    - redisAsyncHandleWrite
    - callback
    linkageType: ''
    returnType: gboolean
    signature: "gboolean redis_source_dispatch (GSource      *source,\n                       GSourceFunc
      \  callback,\n                       gpointer      user_data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: g_source_remove_poll
      Src: /src/hiredis/adapters/glib.h:117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - source
    argTypes:
    - GSource*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 120
    functionName: redis_source_finalize
    functionSourceFile: /src/hiredis/adapters/glib.h
    functionUses: 0
    functionsReached:
    - g_source_remove_poll
    linkageType: ''
    returnType: void
    signature: void redis_source_finalize (GSource *source)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: g_return_val_if_fail
      Src: /src/hiredis/adapters/glib.h:134,1
    - Dst: g_source_new
      Src: /src/hiredis/adapters/glib.h:136,1
    - Dst: g_source_add_poll
      Src: /src/hiredis/adapters/glib.h:144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - ac
    argTypes:
    - redisAsyncContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 154
    functionName: redis_source_new
    functionSourceFile: /src/hiredis/adapters/glib.h
    functionUses: 0
    functionsReached:
    - g_return_val_if_fail
    - g_source_new
    - g_source_add_poll
    linkageType: ''
    returnType: GSource
    signature: 'GSource *

      redis_source_new (redisAsyncContext *ac)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisAsyncHandleRead
      Src: /src/hiredis/adapters/redismoduleapi.h:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - fd
    - privdata
    - mask
    argTypes:
    - int
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 20
    functionDepth: 6
    functionLinenumber: 20
    functionLinenumberEnd: 26
    functionName: redisModuleReadEvent
    functionSourceFile: /src/hiredis/adapters/redismoduleapi.h
    functionUses: 0
    functionsReached:
    - redisAsyncHandleRead
    linkageType: ''
    returnType: void
    signature: void redisModuleReadEvent(int fd, void *privdata, int mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisAsyncHandleWrite
      Src: /src/hiredis/adapters/redismoduleapi.h:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - fd
    - privdata
    - mask
    argTypes:
    - int
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 28
    functionDepth: 6
    functionLinenumber: 28
    functionLinenumberEnd: 34
    functionName: redisModuleWriteEvent
    functionSourceFile: /src/hiredis/adapters/redismoduleapi.h
    functionUses: 0
    functionsReached:
    - redisAsyncHandleWrite
    linkageType: ''
    returnType: void
    signature: void redisModuleWriteEvent(int fd, void *privdata, int mask)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RedisModule_EventLoopAdd
      Src: /src/hiredis/adapters/redismoduleapi.h:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 42
    functionName: redisModuleAddRead
    functionSourceFile: /src/hiredis/adapters/redismoduleapi.h
    functionUses: 0
    functionsReached:
    - RedisModule_EventLoopAdd
    linkageType: ''
    returnType: void
    signature: void redisModuleAddRead(void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RedisModule_EventLoopDel
      Src: /src/hiredis/adapters/redismoduleapi.h:48,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 50
    functionName: redisModuleDelRead
    functionSourceFile: /src/hiredis/adapters/redismoduleapi.h
    functionUses: 0
    functionsReached:
    - RedisModule_EventLoopDel
    linkageType: ''
    returnType: void
    signature: void redisModuleDelRead(void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RedisModule_EventLoopAdd
      Src: /src/hiredis/adapters/redismoduleapi.h:56,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 58
    functionName: redisModuleAddWrite
    functionSourceFile: /src/hiredis/adapters/redismoduleapi.h
    functionUses: 0
    functionsReached:
    - RedisModule_EventLoopAdd
    linkageType: ''
    returnType: void
    signature: void redisModuleAddWrite(void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RedisModule_EventLoopDel
      Src: /src/hiredis/adapters/redismoduleapi.h:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 66
    functionName: redisModuleDelWrite
    functionSourceFile: /src/hiredis/adapters/redismoduleapi.h
    functionUses: 0
    functionsReached:
    - RedisModule_EventLoopDel
    linkageType: ''
    returnType: void
    signature: void redisModuleDelWrite(void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RedisModule_StopTimer
      Src: /src/hiredis/adapters/redismoduleapi.h:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 74
    functionName: redisModuleStopTimer
    functionSourceFile: /src/hiredis/adapters/redismoduleapi.h
    functionUses: 0
    functionsReached:
    - RedisModule_StopTimer
    linkageType: ''
    returnType: void
    signature: void redisModuleStopTimer(void *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisModuleDelRead
      Src: /src/hiredis/adapters/redismoduleapi.h:78,1
    - Dst: redisModuleDelWrite
      Src: /src/hiredis/adapters/redismoduleapi.h:79,1
    - Dst: redisModuleStopTimer
      Src: /src/hiredis/adapters/redismoduleapi.h:80,1
    - Dst: hi_free
      Src: /src/hiredis/adapters/redismoduleapi.h:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 82
    functionName: redisModuleCleanup
    functionSourceFile: /src/hiredis/adapters/redismoduleapi.h
    functionUses: 0
    functionsReached:
    - redisModuleDelWrite
    - hi_free
    - redisModuleStopTimer
    - redisModuleDelRead
    linkageType: ''
    returnType: void
    signature: void redisModuleCleanup(void *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisAsyncHandleTimeout
      Src: /src/hiredis/adapters/redismoduleapi.h:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - privdata
    argTypes:
    - RedisModuleCtx*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 84
    functionDepth: 4
    functionLinenumber: 84
    functionLinenumberEnd: 90
    functionName: redisModuleTimeout
    functionSourceFile: /src/hiredis/adapters/redismoduleapi.h
    functionUses: 0
    functionsReached:
    - redisAsyncHandleTimeout
    linkageType: ''
    returnType: void
    signature: void redisModuleTimeout(RedisModuleCtx *ctx, void *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisModuleStopTimer
      Src: /src/hiredis/adapters/redismoduleapi.h:95,1
    - Dst: RedisModule_CreateTimer
      Src: /src/hiredis/adapters/redismoduleapi.h:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - privdata
    - tv
    argTypes:
    - void*
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 100
    functionName: redisModuleSetTimeout
    functionSourceFile: /src/hiredis/adapters/redismoduleapi.h
    functionUses: 0
    functionsReached:
    - RedisModule_CreateTimer
    - redisModuleStopTimer
    linkageType: ''
    returnType: void
    signature: void redisModuleSetTimeout(void *privdata, struct timeval tv)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 111
    functionName: redisModuleCompatibilityCheck
    functionSourceFile: /src/hiredis/adapters/redismoduleapi.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int redisModuleCompatibilityCheck(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hi_malloc
      Src: /src/hiredis/adapters/redismoduleapi.h:122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 2
    argNames:
    - ac
    - module_ctx
    argTypes:
    - redisAsyncContext*
    - RedisModuleCtx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 142
    functionName: redisModuleAttach
    functionSourceFile: /src/hiredis/adapters/redismoduleapi.h
    functionUses: 0
    functionsReached:
    - hi_malloc
    linkageType: ''
    returnType: int
    signature: int redisModuleAttach(redisAsyncContext *ac, RedisModuleCtx *module_ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sd_event_source_disable_unref
      Src: /src/hiredis/adapters/libsdevent.h:22,1
    - Dst: sd_event_source_disable_unref
      Src: /src/hiredis/adapters/libsdevent.h:25,1
    - Dst: sd_event_unref
      Src: /src/hiredis/adapters/libsdevent.h:27,1
    - Dst: hi_free
      Src: /src/hiredis/adapters/libsdevent.h:28,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - e
    argTypes:
    - redisLibsdeventEvents*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 29
    functionName: redisLibsdeventDestroy
    functionSourceFile: /src/hiredis/adapters/libsdevent.h
    functionUses: 0
    functionsReached:
    - sd_event_source_disable_unref
    - hi_free
    - sd_event_unref
    linkageType: ''
    returnType: void
    signature: void redisLibsdeventDestroy(redisLibsdeventEvents *e)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisAsyncHandleTimeout
      Src: /src/hiredis/adapters/libsdevent.h:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - s
    - usec
    - userdata
    argTypes:
    - sd_event_source*
    - uint64_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 31
    functionDepth: 4
    functionLinenumber: 31
    functionLinenumberEnd: 37
    functionName: redisLibsdeventTimeoutHandler
    functionSourceFile: /src/hiredis/adapters/libsdevent.h
    functionUses: 0
    functionsReached:
    - redisAsyncHandleTimeout
    linkageType: ''
    returnType: int
    signature: int redisLibsdeventTimeoutHandler(sd_event_source *s, uint64_t usec,
      void *userdata)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: redisAsyncHandleRead
      Src: /src/hiredis/adapters/libsdevent.h:51,1
    - Dst: CHECK_DELETED
      Src: /src/hiredis/adapters/libsdevent.h:52,1
    - Dst: redisAsyncHandleWrite
      Src: /src/hiredis/adapters/libsdevent.h:56,1
    - Dst: CHECK_DELETED
      Src: /src/hiredis/adapters/libsdevent.h:57,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 4
    argNames:
    - s
    - fd
    - event
    - userdata
    argTypes:
    - sd_event_source*
    - int
    - uint32_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 39
    functionDepth: 6
    functionLinenumber: 39
    functionLinenumberEnd: 64
    functionName: redisLibsdeventHandler
    functionSourceFile: /src/hiredis/adapters/libsdevent.h
    functionUses: 0
    functionsReached:
    - redisAsyncHandleWrite
    - CHECK_DELETED
    - redisAsyncHandleRead
    linkageType: ''
    returnType: int
    signature: int redisLibsdeventHandler(sd_event_source *s, int fd, uint32_t event,
      void *userdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 49
    functionName: CHECK_DELETED
    functionSourceFile: /src/hiredis/adapters/libsdevent.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_DELETED()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sd_event_source_set_io_events
      Src: /src/hiredis/adapters/libsdevent.h:76,1
    - Dst: sd_event_add_io
      Src: /src/hiredis/adapters/libsdevent.h:78,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - userdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 80
    functionName: redisLibsdeventAddRead
    functionSourceFile: /src/hiredis/adapters/libsdevent.h
    functionUses: 0
    functionsReached:
    - sd_event_add_io
    - sd_event_source_set_io_events
    linkageType: ''
    returnType: void
    signature: void redisLibsdeventAddRead(void *userdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sd_event_source_set_io_events
      Src: /src/hiredis/adapters/libsdevent.h:88,1
    - Dst: sd_event_source_disable_unref
      Src: /src/hiredis/adapters/libsdevent.h:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - userdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 92
    functionName: redisLibsdeventDelRead
    functionSourceFile: /src/hiredis/adapters/libsdevent.h
    functionUses: 0
    functionsReached:
    - sd_event_source_disable_unref
    - sd_event_source_set_io_events
    linkageType: ''
    returnType: void
    signature: void redisLibsdeventDelRead(void *userdata)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sd_event_source_set_io_events
      Src: /src/hiredis/adapters/libsdevent.h:104,1
    - Dst: sd_event_add_io
      Src: /src/hiredis/adapters/libsdevent.h:106,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - userdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 108
    functionName: redisLibsdeventAddWrite
    functionSourceFile: /src/hiredis/adapters/libsdevent.h
    functionUses: 0
    functionsReached:
    - sd_event_add_io
    - sd_event_source_set_io_events
    linkageType: ''
    returnType: void
    signature: void redisLibsdeventAddWrite(void *userdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sd_event_source_set_io_events
      Src: /src/hiredis/adapters/libsdevent.h:116,1
    - Dst: sd_event_source_disable_unref
      Src: /src/hiredis/adapters/libsdevent.h:118,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - userdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 120
    functionName: redisLibsdeventDelWrite
    functionSourceFile: /src/hiredis/adapters/libsdevent.h
    functionUses: 0
    functionsReached:
    - sd_event_source_disable_unref
    - sd_event_source_set_io_events
    linkageType: ''
    returnType: void
    signature: void redisLibsdeventDelWrite(void *userdata)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: redisLibsdeventDestroy
      Src: /src/hiredis/adapters/libsdevent.h:132,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - userdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 134
    functionName: redisLibsdeventCleanup
    functionSourceFile: /src/hiredis/adapters/libsdevent.h
    functionUses: 0
    functionsReached:
    - redisLibsdeventDestroy
    linkageType: ''
    returnType: void
    signature: void redisLibsdeventCleanup(void *userdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sd_event_add_time_relative
      Src: /src/hiredis/adapters/libsdevent.h:141,1
    - Dst: sd_event_source_set_time_relative
      Src: /src/hiredis/adapters/libsdevent.h:143,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - userdata
    - tv
    argTypes:
    - void*
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 145
    functionName: redisLibsdeventSetTimeout
    functionSourceFile: /src/hiredis/adapters/libsdevent.h
    functionUses: 0
    functionsReached:
    - sd_event_add_time_relative
    - sd_event_source_set_time_relative
    linkageType: ''
    returnType: void
    signature: void redisLibsdeventSetTimeout(void *userdata, struct timeval tv)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hi_calloc
      Src: /src/hiredis/adapters/libsdevent.h:156,1
    - Dst: sd_event_ref
      Src: /src/hiredis/adapters/libsdevent.h:164,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - ac
    - event
    argTypes:
    - redisAsyncContext*
    - struct sd_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 176
    functionName: redisLibsdeventAttach
    functionSourceFile: /src/hiredis/adapters/libsdevent.h
    functionUses: 0
    functionsReached:
    - sd_event_ref
    - hi_calloc
    linkageType: ''
    returnType: int
    signature: int redisLibsdeventAttach(redisAsyncContext *ac, struct sd_event *event)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisAsyncHandleRead
      Src: /src/hiredis/adapters/ivykis.h:14,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 15
      start: 12
    functionDepth: 6
    functionLinenumber: 12
    functionLinenumberEnd: 15
    functionName: redisIvykisReadEvent
    functionSourceFile: /src/hiredis/adapters/ivykis.h
    functionUses: 0
    functionsReached:
    - redisAsyncHandleRead
    linkageType: ''
    returnType: void
    signature: void redisIvykisReadEvent(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisAsyncHandleWrite
      Src: /src/hiredis/adapters/ivykis.h:19,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 17
    functionDepth: 6
    functionLinenumber: 17
    functionLinenumberEnd: 20
    functionName: redisIvykisWriteEvent
    functionSourceFile: /src/hiredis/adapters/ivykis.h
    functionUses: 0
    functionsReached:
    - redisAsyncHandleWrite
    linkageType: ''
    returnType: void
    signature: void redisIvykisWriteEvent(void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: iv_fd_set_handler_in
      Src: /src/hiredis/adapters/ivykis.h:24,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 25
    functionName: redisIvykisAddRead
    functionSourceFile: /src/hiredis/adapters/ivykis.h
    functionUses: 0
    functionsReached:
    - iv_fd_set_handler_in
    linkageType: ''
    returnType: void
    signature: void redisIvykisAddRead(void *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: iv_fd_set_handler_in
      Src: /src/hiredis/adapters/ivykis.h:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 30
    functionName: redisIvykisDelRead
    functionSourceFile: /src/hiredis/adapters/ivykis.h
    functionUses: 0
    functionsReached:
    - iv_fd_set_handler_in
    linkageType: ''
    returnType: void
    signature: void redisIvykisDelRead(void *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: iv_fd_set_handler_out
      Src: /src/hiredis/adapters/ivykis.h:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: redisIvykisAddWrite
    functionSourceFile: /src/hiredis/adapters/ivykis.h
    functionUses: 0
    functionsReached:
    - iv_fd_set_handler_out
    linkageType: ''
    returnType: void
    signature: void redisIvykisAddWrite(void *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: iv_fd_set_handler_out
      Src: /src/hiredis/adapters/ivykis.h:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: redisIvykisDelWrite
    functionSourceFile: /src/hiredis/adapters/ivykis.h
    functionUses: 0
    functionsReached:
    - iv_fd_set_handler_out
    linkageType: ''
    returnType: void
    signature: void redisIvykisDelWrite(void *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: iv_fd_unregister
      Src: /src/hiredis/adapters/ivykis.h:45,1
    - Dst: hi_free
      Src: /src/hiredis/adapters/ivykis.h:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 47
    functionName: redisIvykisCleanup
    functionSourceFile: /src/hiredis/adapters/ivykis.h
    functionUses: 0
    functionsReached:
    - hi_free
    - iv_fd_unregister
    linkageType: ''
    returnType: void
    signature: void redisIvykisCleanup(void *privdata)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hi_malloc
      Src: /src/hiredis/adapters/ivykis.h:58,1
    - Dst: IV_FD_INIT
      Src: /src/hiredis/adapters/ivykis.h:73,1
    - Dst: iv_fd_register
      Src: /src/hiredis/adapters/ivykis.h:80,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 1
    argNames:
    - ac
    argTypes:
    - redisAsyncContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 83
    functionName: redisIvykisAttach
    functionSourceFile: /src/hiredis/adapters/ivykis.h
    functionUses: 0
    functionsReached:
    - iv_fd_register
    - IV_FD_INIT
    - hi_malloc
    linkageType: ''
    returnType: int
    signature: int redisIvykisAttach(redisAsyncContext *ac)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisAsyncHandleRead
      Src: /src/hiredis/adapters/libev.h:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - watcher
    - revents
    argTypes:
    - EV_P_*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 47
    functionDepth: 6
    functionLinenumber: 47
    functionLinenumberEnd: 55
    functionName: redisLibevReadEvent
    functionSourceFile: /src/hiredis/adapters/libev.h
    functionUses: 0
    functionsReached:
    - redisAsyncHandleRead
    linkageType: ''
    returnType: void
    signature: void redisLibevReadEvent(EV_P_ ev_io *watcher, int revents)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisAsyncHandleWrite
      Src: /src/hiredis/adapters/libev.h:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - watcher
    - revents
    argTypes:
    - EV_P_*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 57
    functionDepth: 6
    functionLinenumber: 57
    functionLinenumberEnd: 65
    functionName: redisLibevWriteEvent
    functionSourceFile: /src/hiredis/adapters/libev.h
    functionUses: 0
    functionsReached:
    - redisAsyncHandleWrite
    linkageType: ''
    returnType: void
    signature: void redisLibevWriteEvent(EV_P_ ev_io *watcher, int revents)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ev_io_start
      Src: /src/hiredis/adapters/libev.h:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 76
    functionName: redisLibevAddRead
    functionSourceFile: /src/hiredis/adapters/libev.h
    functionUses: 0
    functionsReached:
    - ev_io_start
    linkageType: ''
    returnType: void
    signature: void redisLibevAddRead(void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ev_io_stop
      Src: /src/hiredis/adapters/libev.h:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 87
    functionName: redisLibevDelRead
    functionSourceFile: /src/hiredis/adapters/libev.h
    functionUses: 0
    functionsReached:
    - ev_io_stop
    linkageType: ''
    returnType: void
    signature: void redisLibevDelRead(void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ev_io_start
      Src: /src/hiredis/adapters/libev.h:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 98
    functionName: redisLibevAddWrite
    functionSourceFile: /src/hiredis/adapters/libev.h
    functionUses: 0
    functionsReached:
    - ev_io_start
    linkageType: ''
    returnType: void
    signature: void redisLibevAddWrite(void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ev_io_stop
      Src: /src/hiredis/adapters/libev.h:107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 109
    functionName: redisLibevDelWrite
    functionSourceFile: /src/hiredis/adapters/libev.h
    functionUses: 0
    functionsReached:
    - ev_io_stop
    linkageType: ''
    returnType: void
    signature: void redisLibevDelWrite(void *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ev_timer_stop
      Src: /src/hiredis/adapters/libev.h:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 117
    functionName: redisLibevStopTimer
    functionSourceFile: /src/hiredis/adapters/libev.h
    functionUses: 0
    functionsReached:
    - ev_timer_stop
    linkageType: ''
    returnType: void
    signature: void redisLibevStopTimer(void *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisLibevDelRead
      Src: /src/hiredis/adapters/libev.h:121,1
    - Dst: redisLibevDelWrite
      Src: /src/hiredis/adapters/libev.h:122,1
    - Dst: redisLibevStopTimer
      Src: /src/hiredis/adapters/libev.h:123,1
    - Dst: hi_free
      Src: /src/hiredis/adapters/libev.h:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 125
    functionName: redisLibevCleanup
    functionSourceFile: /src/hiredis/adapters/libev.h
    functionUses: 0
    functionsReached:
    - redisLibevDelRead
    - hi_free
    - redisLibevDelWrite
    - redisLibevStopTimer
    linkageType: ''
    returnType: void
    signature: void redisLibevCleanup(void *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisAsyncHandleTimeout
      Src: /src/hiredis/adapters/libev.h:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - timer
    - revents
    argTypes:
    - EV_P_*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 127
    functionDepth: 4
    functionLinenumber: 127
    functionLinenumberEnd: 134
    functionName: redisLibevTimeout
    functionSourceFile: /src/hiredis/adapters/libev.h
    functionUses: 0
    functionsReached:
    - redisAsyncHandleTimeout
    linkageType: ''
    returnType: void
    signature: void redisLibevTimeout(EV_P_ ev_timer *timer, int revents)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ev_is_active
      Src: /src/hiredis/adapters/libev.h:142,1
    - Dst: ev_init
      Src: /src/hiredis/adapters/libev.h:143,1
    - Dst: ev_timer_again
      Src: /src/hiredis/adapters/libev.h:148,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - privdata
    - tv
    argTypes:
    - void*
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 149
    functionName: redisLibevSetTimeout
    functionSourceFile: /src/hiredis/adapters/libev.h
    functionUses: 0
    functionsReached:
    - ev_is_active
    - ev_init
    - ev_timer_again
    linkageType: ''
    returnType: void
    signature: void redisLibevSetTimeout(void *privdata, struct timeval tv)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hi_calloc
      Src: /src/hiredis/adapters/libev.h:160,1
    - Dst: ev_io_init
      Src: /src/hiredis/adapters/libev.h:183,1
    - Dst: ev_io_init
      Src: /src/hiredis/adapters/libev.h:184,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 1
    argNames:
    - redisAsyncContext *ac
    argTypes:
    - EV_P_
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 186
    functionName: redisLibevAttach
    functionSourceFile: /src/hiredis/adapters/libev.h
    functionUses: 0
    functionsReached:
    - ev_io_init
    - hi_calloc
    linkageType: ''
    returnType: int
    signature: int redisLibevAttach(EV_P_ redisAsyncContext *ac)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisAsyncHandleRead
      Src: /src/hiredis/adapters/ae.h:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - el
    - fd
    - privdata
    - mask
    argTypes:
    - aeEventLoop*
    - int
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 45
    functionDepth: 6
    functionLinenumber: 45
    functionLinenumberEnd: 50
    functionName: redisAeReadEvent
    functionSourceFile: /src/hiredis/adapters/ae.h
    functionUses: 0
    functionsReached:
    - redisAsyncHandleRead
    linkageType: ''
    returnType: void
    signature: void redisAeReadEvent(aeEventLoop *el, int fd, void *privdata, int
      mask)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisAsyncHandleWrite
      Src: /src/hiredis/adapters/ae.h:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - el
    - fd
    - privdata
    - mask
    argTypes:
    - aeEventLoop*
    - int
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 52
    functionDepth: 6
    functionLinenumber: 52
    functionLinenumberEnd: 57
    functionName: redisAeWriteEvent
    functionSourceFile: /src/hiredis/adapters/ae.h
    functionUses: 0
    functionsReached:
    - redisAsyncHandleWrite
    linkageType: ''
    returnType: void
    signature: void redisAeWriteEvent(aeEventLoop *el, int fd, void *privdata, int
      mask)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: aeCreateFileEvent
      Src: /src/hiredis/adapters/ae.h:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 66
    functionName: redisAeAddRead
    functionSourceFile: /src/hiredis/adapters/ae.h
    functionUses: 0
    functionsReached:
    - aeCreateFileEvent
    linkageType: ''
    returnType: void
    signature: void redisAeAddRead(void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: aeDeleteFileEvent
      Src: /src/hiredis/adapters/ae.h:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 75
    functionName: redisAeDelRead
    functionSourceFile: /src/hiredis/adapters/ae.h
    functionUses: 0
    functionsReached:
    - aeDeleteFileEvent
    linkageType: ''
    returnType: void
    signature: void redisAeDelRead(void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: aeCreateFileEvent
      Src: /src/hiredis/adapters/ae.h:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 84
    functionName: redisAeAddWrite
    functionSourceFile: /src/hiredis/adapters/ae.h
    functionUses: 0
    functionsReached:
    - aeCreateFileEvent
    linkageType: ''
    returnType: void
    signature: void redisAeAddWrite(void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: aeDeleteFileEvent
      Src: /src/hiredis/adapters/ae.h:91,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 93
    functionName: redisAeDelWrite
    functionSourceFile: /src/hiredis/adapters/ae.h
    functionUses: 0
    functionsReached:
    - aeDeleteFileEvent
    linkageType: ''
    returnType: void
    signature: void redisAeDelWrite(void *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisAeDelRead
      Src: /src/hiredis/adapters/ae.h:97,1
    - Dst: redisAeDelWrite
      Src: /src/hiredis/adapters/ae.h:98,1
    - Dst: hi_free
      Src: /src/hiredis/adapters/ae.h:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 100
    functionName: redisAeCleanup
    functionSourceFile: /src/hiredis/adapters/ae.h
    functionUses: 0
    functionsReached:
    - redisAeDelWrite
    - hi_free
    - redisAeDelRead
    linkageType: ''
    returnType: void
    signature: void redisAeCleanup(void *privdata)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hi_malloc
      Src: /src/hiredis/adapters/ae.h:111,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - loop
    - ac
    argTypes:
    - aeEventLoop*
    - redisAsyncContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 129
    functionName: redisAeAttach
    functionSourceFile: /src/hiredis/adapters/ae.h
    functionUses: 0
    functionsReached:
    - hi_malloc
    linkageType: ''
    returnType: int
    signature: int redisAeAttach(aeEventLoop *loop, redisAsyncContext *ac)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hevent_userdata
      Src: /src/hiredis/adapters/libhv.h:14,1
    - Dst: hio_events
      Src: /src/hiredis/adapters/libhv.h:15,1
    - Dst: hio_revents
      Src: /src/hiredis/adapters/libhv.h:16,1
    - Dst: redisAsyncHandleRead
      Src: /src/hiredis/adapters/libhv.h:18,1
    - Dst: redisAsyncHandleWrite
      Src: /src/hiredis/adapters/libhv.h:21,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 7
    argCount: 1
    argNames:
    - io
    argTypes:
    - hio_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 23
      start: 13
    functionDepth: 6
    functionLinenumber: 13
    functionLinenumberEnd: 23
    functionName: redisLibhvHandleEvents
    functionSourceFile: /src/hiredis/adapters/libhv.h
    functionUses: 0
    functionsReached:
    - hevent_userdata
    - hio_events
    - redisAsyncHandleWrite
    - redisAsyncHandleRead
    - hio_revents
    linkageType: ''
    returnType: void
    signature: void redisLibhvHandleEvents(hio_t* io)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hio_add
      Src: /src/hiredis/adapters/libhv.h:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 28
    functionName: redisLibhvAddRead
    functionSourceFile: /src/hiredis/adapters/libhv.h
    functionUses: 0
    functionsReached:
    - hio_add
    linkageType: ''
    returnType: void
    signature: void redisLibhvAddRead(void *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hio_del
      Src: /src/hiredis/adapters/libhv.h:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 33
    functionName: redisLibhvDelRead
    functionSourceFile: /src/hiredis/adapters/libhv.h
    functionUses: 0
    functionsReached:
    - hio_del
    linkageType: ''
    returnType: void
    signature: void redisLibhvDelRead(void *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hio_add
      Src: /src/hiredis/adapters/libhv.h:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 38
    functionName: redisLibhvAddWrite
    functionSourceFile: /src/hiredis/adapters/libhv.h
    functionUses: 0
    functionsReached:
    - hio_add
    linkageType: ''
    returnType: void
    signature: void redisLibhvAddWrite(void *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hio_del
      Src: /src/hiredis/adapters/libhv.h:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 43
    functionName: redisLibhvDelWrite
    functionSourceFile: /src/hiredis/adapters/libhv.h
    functionUses: 0
    functionsReached:
    - hio_del
    linkageType: ''
    returnType: void
    signature: void redisLibhvDelWrite(void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htimer_del
      Src: /src/hiredis/adapters/libhv.h:49,1
    - Dst: hio_close
      Src: /src/hiredis/adapters/libhv.h:51,1
    - Dst: hevent_set_userdata
      Src: /src/hiredis/adapters/libhv.h:52,1
    - Dst: hi_free
      Src: /src/hiredis/adapters/libhv.h:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 55
    functionName: redisLibhvCleanup
    functionSourceFile: /src/hiredis/adapters/libhv.h
    functionUses: 0
    functionsReached:
    - hi_free
    - hio_close
    - hevent_set_userdata
    - htimer_del
    linkageType: ''
    returnType: void
    signature: void redisLibhvCleanup(void *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hevent_userdata
      Src: /src/hiredis/adapters/libhv.h:58,1
    - Dst: redisAsyncHandleTimeout
      Src: /src/hiredis/adapters/libhv.h:59,1
    - Dst: hevent_userdata
      Src: /src/hiredis/adapters/libhv.h:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - timer
    argTypes:
    - htimer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 4
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: redisLibhvTimeout
    functionSourceFile: /src/hiredis/adapters/libhv.h
    functionUses: 0
    functionsReached:
    - hevent_userdata
    - redisAsyncHandleTimeout
    linkageType: ''
    returnType: void
    signature: void redisLibhvTimeout(htimer_t* timer)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: htimer_del
      Src: /src/hiredis/adapters/libhv.h:73,1
    - Dst: hevent_loop
      Src: /src/hiredis/adapters/libhv.h:78,1
    - Dst: htimer_add
      Src: /src/hiredis/adapters/libhv.h:79,1
    - Dst: hevent_set_userdata
      Src: /src/hiredis/adapters/libhv.h:80,1
    - Dst: htimer_reset
      Src: /src/hiredis/adapters/libhv.h:83,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - privdata
    - tv
    argTypes:
    - void*
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 85
    functionName: redisLibhvSetTimeout
    functionSourceFile: /src/hiredis/adapters/libhv.h
    functionUses: 0
    functionsReached:
    - hevent_loop
    - htimer_del
    - htimer_reset
    - hevent_set_userdata
    - htimer_add
    linkageType: ''
    returnType: void
    signature: void redisLibhvSetTimeout(void *privdata, struct timeval tv)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hi_malloc
      Src: /src/hiredis/adapters/libhv.h:97,1
    - Dst: hio_get
      Src: /src/hiredis/adapters/libhv.h:102,1
    - Dst: hi_free
      Src: /src/hiredis/adapters/libhv.h:104,1
    - Dst: hevent_set_userdata
      Src: /src/hiredis/adapters/libhv.h:108,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 2
    argNames:
    - ac
    - loop
    argTypes:
    - redisAsyncContext*
    - hloop_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 122
    functionName: redisLibhvAttach
    functionSourceFile: /src/hiredis/adapters/libhv.h
    functionUses: 0
    functionsReached:
    - hio_get
    - hi_free
    - hi_malloc
    - hevent_set_userdata
    linkageType: ''
    returnType: int
    signature: int redisLibhvAttach(redisAsyncContext* ac, hloop_t* loop)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: redisAsyncHandleRead
      Src: /src/hiredis/adapters/libuv.h:22,1
    - Dst: redisAsyncHandleWrite
      Src: /src/hiredis/adapters/libuv.h:25,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 3
    argNames:
    - handle
    - status
    - events
    argTypes:
    - uv_poll_t*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 27
      start: 17
    functionDepth: 6
    functionLinenumber: 17
    functionLinenumberEnd: 27
    functionName: redisLibuvPoll
    functionSourceFile: /src/hiredis/adapters/libuv.h
    functionUses: 0
    functionsReached:
    - redisAsyncHandleWrite
    - redisAsyncHandleRead
    linkageType: ''
    returnType: void
    signature: void redisLibuvPoll(uv_poll_t* handle, int status, int events)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: uv_poll_start
      Src: /src/hiredis/adapters/libuv.h:39,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 40
    functionName: redisLibuvAddRead
    functionSourceFile: /src/hiredis/adapters/libuv.h
    functionUses: 0
    functionsReached:
    - uv_poll_start
    linkageType: ''
    returnType: void
    signature: void redisLibuvAddRead(void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: uv_poll_start
      Src: /src/hiredis/adapters/libuv.h:49,1
    - Dst: uv_poll_stop
      Src: /src/hiredis/adapters/libuv.h:51,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 53
    functionName: redisLibuvDelRead
    functionSourceFile: /src/hiredis/adapters/libuv.h
    functionUses: 0
    functionsReached:
    - uv_poll_stop
    - uv_poll_start
    linkageType: ''
    returnType: void
    signature: void redisLibuvDelRead(void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: uv_poll_start
      Src: /src/hiredis/adapters/libuv.h:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 66
    functionName: redisLibuvAddWrite
    functionSourceFile: /src/hiredis/adapters/libuv.h
    functionUses: 0
    functionsReached:
    - uv_poll_start
    linkageType: ''
    returnType: void
    signature: void redisLibuvAddWrite(void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: uv_poll_start
      Src: /src/hiredis/adapters/libuv.h:75,1
    - Dst: uv_poll_stop
      Src: /src/hiredis/adapters/libuv.h:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 79
    functionName: redisLibuvDelWrite
    functionSourceFile: /src/hiredis/adapters/libuv.h
    functionUses: 0
    functionsReached:
    - uv_poll_stop
    - uv_poll_start
    linkageType: ''
    returnType: void
    signature: void redisLibuvDelWrite(void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hi_free
      Src: /src/hiredis/adapters/libuv.h:86,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - handle
    argTypes:
    - uv_handle_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 89
    functionName: on_timer_close
    functionSourceFile: /src/hiredis/adapters/libuv.h
    functionUses: 0
    functionsReached:
    - hi_free
    linkageType: ''
    returnType: void
    signature: void on_timer_close(uv_handle_t *handle)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hi_free
      Src: /src/hiredis/adapters/libuv.h:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - handle
    argTypes:
    - uv_handle_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 99
    functionName: on_handle_close
    functionSourceFile: /src/hiredis/adapters/libuv.h
    functionUses: 0
    functionsReached:
    - hi_free
    linkageType: ''
    returnType: void
    signature: void on_handle_close(uv_handle_t *handle)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisAsyncHandleTimeout
      Src: /src/hiredis/adapters/libuv.h:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - timer
    argTypes:
    - uv_timer_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 108
    functionDepth: 4
    functionLinenumber: 108
    functionLinenumberEnd: 112
    functionName: redisLibuvTimeout
    functionSourceFile: /src/hiredis/adapters/libuv.h
    functionUses: 0
    functionsReached:
    - redisAsyncHandleTimeout
    linkageType: ''
    returnType: void
    signature: void redisLibuvTimeout(uv_timer_t *timer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: uv_timer_init
      Src: /src/hiredis/adapters/libuv.h:120,1
    - Dst: uv_timer_start
      Src: /src/hiredis/adapters/libuv.h:127,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - privdata
    - tv
    argTypes:
    - void*
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 128
    functionName: redisLibuvSetTimeout
    functionSourceFile: /src/hiredis/adapters/libuv.h
    functionUses: 0
    functionsReached:
    - uv_timer_init
    - uv_timer_start
    linkageType: ''
    returnType: void
    signature: void redisLibuvSetTimeout(void *privdata, struct timeval tv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: uv_close
      Src: /src/hiredis/adapters/libuv.h:135,1
    - Dst: uv_close
      Src: /src/hiredis/adapters/libuv.h:137,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 138
    functionName: redisLibuvCleanup
    functionSourceFile: /src/hiredis/adapters/libuv.h
    functionUses: 0
    functionsReached:
    - uv_close
    linkageType: ''
    returnType: void
    signature: void redisLibuvCleanup(void *privdata)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hi_malloc
      Src: /src/hiredis/adapters/libuv.h:155,1
    - Dst: memset
      Src: /src/hiredis/adapters/libuv.h:159,1
    - Dst: uv_poll_init_socket
      Src: /src/hiredis/adapters/libuv.h:161,1
    - Dst: hi_free
      Src: /src/hiredis/adapters/libuv.h:162,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - ac
    - loop
    argTypes:
    - redisAsyncContext*
    - uv_loop_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 171
    functionName: redisLibuvAttach
    functionSourceFile: /src/hiredis/adapters/libuv.h
    functionUses: 0
    functionsReached:
    - uv_poll_init_socket
    - hi_free
    - memset
    - hi_malloc
    linkageType: ''
    returnType: int
    signature: int redisLibuvAttach(redisAsyncContext* ac, uv_loop_t* loop)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - tv
    argTypes:
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 32
    functionName: redisPollTimevalToDouble
    functionSourceFile: /src/hiredis/adapters/poll.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double redisPollTimevalToDouble(struct timeval *tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/hiredis/adapters/poll.h:37,1
    - Dst: redisPollTimevalToDouble
      Src: /src/hiredis/adapters/poll.h:38,1
    - Dst: GetSystemTimeAsFileTime
      Src: /src/hiredis/adapters/poll.h:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 47
    functionName: redisPollGetNow
    functionSourceFile: /src/hiredis/adapters/poll.h
    functionUses: 0
    functionsReached:
    - redisPollTimevalToDouble
    - GetSystemTimeAsFileTime
    - gettimeofday
    linkageType: ''
    returnType: double
    signature: double redisPollGetNow(void)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: poll
      Src: /src/hiredis/adapters/poll.h:82,1
    - Dst: redisAsyncHandleRead
      Src: /src/hiredis/adapters/poll.h:94,1
    - Dst: redisAsyncHandleWrite
      Src: /src/hiredis/adapters/poll.h:103,1
    - Dst: redisPollGetNow
      Src: /src/hiredis/adapters/poll.h:111,1
    - Dst: redisAsyncHandleTimeout
      Src: /src/hiredis/adapters/poll.h:115,1
    - Dst: hi_free
      Src: /src/hiredis/adapters/poll.h:122,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 49
    argCount: 2
    argNames:
    - ac
    - timeout
    argTypes:
    - redisAsyncContext*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 52
    functionDepth: 6
    functionLinenumber: 52
    functionLinenumberEnd: 127
    functionName: redisPollTick
    functionSourceFile: /src/hiredis/adapters/poll.h
    functionUses: 1
    functionsReached:
    - hi_free
    - poll
    - redisAsyncHandleWrite
    - redisAsyncHandleRead
    - redisAsyncHandleTimeout
    - redisPollGetNow
    linkageType: ''
    returnType: int
    signature: int redisPollTick(redisAsyncContext *ac, double timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 132
    functionName: redisPollAddRead
    functionSourceFile: /src/hiredis/adapters/poll.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void redisPollAddRead(void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 137
    functionName: redisPollDelRead
    functionSourceFile: /src/hiredis/adapters/poll.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void redisPollDelRead(void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 142
    functionName: redisPollAddWrite
    functionSourceFile: /src/hiredis/adapters/poll.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void redisPollAddWrite(void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 147
    functionName: redisPollDelWrite
    functionSourceFile: /src/hiredis/adapters/poll.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void redisPollDelWrite(void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hi_free
      Src: /src/hiredis/adapters/poll.h:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 157
    functionName: redisPollCleanup
    functionSourceFile: /src/hiredis/adapters/poll.h
    functionUses: 0
    functionsReached:
    - hi_free
    linkageType: ''
    returnType: void
    signature: void redisPollCleanup(void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisPollGetNow
      Src: /src/hiredis/adapters/poll.h:162,1
    - Dst: redisPollTimevalToDouble
      Src: /src/hiredis/adapters/poll.h:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - data
    - tv
    argTypes:
    - void*
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 159
    functionDepth: 2
    functionLinenumber: 159
    functionLinenumberEnd: 164
    functionName: redisPollScheduleTimer
    functionSourceFile: /src/hiredis/adapters/poll.h
    functionUses: 0
    functionsReached:
    - redisPollGetNow
    - redisPollTimevalToDouble
    linkageType: ''
    returnType: void
    signature: void redisPollScheduleTimer(void *data, struct timeval tv)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hi_malloc
      Src: /src/hiredis/adapters/poll.h:175,1
    - Dst: memset
      Src: /src/hiredis/adapters/poll.h:178,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 1
    argNames:
    - ac
    argTypes:
    - redisAsyncContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 196
    functionName: redisPollAttach
    functionSourceFile: /src/hiredis/adapters/poll.h
    functionUses: 1
    functionsReached:
    - memset
    - hi_malloc
    linkageType: ''
    returnType: int
    signature: int redisPollAttach(redisAsyncContext *ac)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hi_free
      Src: /src/hiredis/adapters/libevent.h:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - e
    argTypes:
    - redisLibeventEvents*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 51
    functionName: redisLibeventDestroy
    functionSourceFile: /src/hiredis/adapters/libevent.h
    functionUses: 0
    functionsReached:
    - hi_free
    linkageType: ''
    returnType: void
    signature: void redisLibeventDestroy(redisLibeventEvents *e)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: redisAsyncHandleTimeout
      Src: /src/hiredis/adapters/libevent.h:64,1
    - Dst: CHECK_DELETED
      Src: /src/hiredis/adapters/libevent.h:65,1
    - Dst: redisAsyncHandleRead
      Src: /src/hiredis/adapters/libevent.h:69,1
    - Dst: CHECK_DELETED
      Src: /src/hiredis/adapters/libevent.h:70,1
    - Dst: redisAsyncHandleWrite
      Src: /src/hiredis/adapters/libevent.h:74,1
    - Dst: CHECK_DELETED
      Src: /src/hiredis/adapters/libevent.h:75,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 3
    argNames:
    - fd
    - event
    - arg
    argTypes:
    - evutil_socket_t
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 53
    functionDepth: 6
    functionLinenumber: 53
    functionLinenumberEnd: 80
    functionName: redisLibeventHandler
    functionSourceFile: /src/hiredis/adapters/libevent.h
    functionUses: 0
    functionsReached:
    - redisAsyncHandleWrite
    - CHECK_DELETED
    - redisAsyncHandleTimeout
    - redisAsyncHandleRead
    linkageType: ''
    returnType: void
    signature: void redisLibeventHandler(evutil_socket_t fd, short event, void *arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 62
    functionName: CHECK_DELETED
    functionSourceFile: /src/hiredis/adapters/libevent.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CHECK_DELETED()
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: event_del
      Src: /src/hiredis/adapters/libevent.h:100,1
    - Dst: event_assign
      Src: /src/hiredis/adapters/libevent.h:101,1
    - Dst: event_add
      Src: /src/hiredis/adapters/libevent.h:103,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - privdata
    - flag
    - isRemove
    argTypes:
    - void*
    - short
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 104
    functionName: redisLibeventUpdate
    functionSourceFile: /src/hiredis/adapters/libevent.h
    functionUses: 0
    functionsReached:
    - event_assign
    - event_del
    - event_add
    linkageType: ''
    returnType: void
    signature: void redisLibeventUpdate(void *privdata, short flag, int isRemove)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisLibeventUpdate
      Src: /src/hiredis/adapters/libevent.h:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 108
    functionName: redisLibeventAddRead
    functionSourceFile: /src/hiredis/adapters/libevent.h
    functionUses: 0
    functionsReached:
    - redisLibeventUpdate
    linkageType: ''
    returnType: void
    signature: void redisLibeventAddRead(void *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisLibeventUpdate
      Src: /src/hiredis/adapters/libevent.h:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 112
    functionName: redisLibeventDelRead
    functionSourceFile: /src/hiredis/adapters/libevent.h
    functionUses: 0
    functionsReached:
    - redisLibeventUpdate
    linkageType: ''
    returnType: void
    signature: void redisLibeventDelRead(void *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisLibeventUpdate
      Src: /src/hiredis/adapters/libevent.h:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 116
    functionName: redisLibeventAddWrite
    functionSourceFile: /src/hiredis/adapters/libevent.h
    functionUses: 0
    functionsReached:
    - redisLibeventUpdate
    linkageType: ''
    returnType: void
    signature: void redisLibeventAddWrite(void *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisLibeventUpdate
      Src: /src/hiredis/adapters/libevent.h:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 120
    functionName: redisLibeventDelWrite
    functionSourceFile: /src/hiredis/adapters/libevent.h
    functionUses: 0
    functionsReached:
    - redisLibeventUpdate
    linkageType: ''
    returnType: void
    signature: void redisLibeventDelWrite(void *privdata)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: event_del
      Src: /src/hiredis/adapters/libevent.h:127,1
    - Dst: event_free
      Src: /src/hiredis/adapters/libevent.h:128,1
    - Dst: redisLibeventDestroy
      Src: /src/hiredis/adapters/libevent.h:134,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 136
    functionName: redisLibeventCleanup
    functionSourceFile: /src/hiredis/adapters/libevent.h
    functionUses: 0
    functionsReached:
    - redisLibeventDestroy
    - event_free
    - event_del
    linkageType: ''
    returnType: void
    signature: void redisLibeventCleanup(void *privdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisLibeventUpdate
      Src: /src/hiredis/adapters/libevent.h:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - privdata
    - tv
    argTypes:
    - void*
    - struct timeval
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 144
    functionName: redisLibeventSetTimeout
    functionSourceFile: /src/hiredis/adapters/libevent.h
    functionUses: 0
    functionsReached:
    - redisLibeventUpdate
    linkageType: ''
    returnType: void
    signature: void redisLibeventSetTimeout(void *privdata, struct timeval tv)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hi_calloc
      Src: /src/hiredis/adapters/libevent.h:155,1
    - Dst: event_new
      Src: /src/hiredis/adapters/libevent.h:171,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - ac
    - base
    argTypes:
    - redisAsyncContext*
    - struct event_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 174
    functionName: redisLibeventAttach
    functionSourceFile: /src/hiredis/adapters/libevent.h
    functionUses: 5
    functionsReached:
    - event_new
    - hi_calloc
    linkageType: ''
    returnType: int
    signature: int redisLibeventAttach(redisAsyncContext *ac, struct event_base *base)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<RedisQtAdapter *>
      Src: /src/hiredis/adapters/qt.h:43,1
    - Dst: RedisQtAdapter*::addRead
      Src: /src/hiredis/adapters/qt.h:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - adapter
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: RedisQtAdapter::RedisQtAddRead
    functionSourceFile: /src/hiredis/adapters/qt.h
    functionUses: 0
    functionsReached:
    - static_cast<RedisQtAdapter *>
    - RedisQtAdapter*::addRead
    linkageType: ''
    returnType: void
    signature: void RedisQtAddRead(void * adapter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<RedisQtAdapter *>
      Src: /src/hiredis/adapters/qt.h:49,1
    - Dst: RedisQtAdapter*::delRead
      Src: /src/hiredis/adapters/qt.h:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - adapter
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 51
    functionName: RedisQtAdapter::RedisQtDelRead
    functionSourceFile: /src/hiredis/adapters/qt.h
    functionUses: 0
    functionsReached:
    - static_cast<RedisQtAdapter *>
    - RedisQtAdapter*::delRead
    linkageType: ''
    returnType: void
    signature: void RedisQtDelRead(void * adapter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<RedisQtAdapter *>
      Src: /src/hiredis/adapters/qt.h:55,1
    - Dst: RedisQtAdapter*::addWrite
      Src: /src/hiredis/adapters/qt.h:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - adapter
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: RedisQtAdapter::RedisQtAddWrite
    functionSourceFile: /src/hiredis/adapters/qt.h
    functionUses: 0
    functionsReached:
    - static_cast<RedisQtAdapter *>
    - RedisQtAdapter*::addWrite
    linkageType: ''
    returnType: void
    signature: void RedisQtAddWrite(void * adapter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<RedisQtAdapter *>
      Src: /src/hiredis/adapters/qt.h:61,1
    - Dst: RedisQtAdapter*::delWrite
      Src: /src/hiredis/adapters/qt.h:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - adapter
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 63
    functionName: RedisQtAdapter::RedisQtDelWrite
    functionSourceFile: /src/hiredis/adapters/qt.h
    functionUses: 0
    functionsReached:
    - static_cast<RedisQtAdapter *>
    - RedisQtAdapter*::delWrite
    linkageType: ''
    returnType: void
    signature: void RedisQtDelWrite(void * adapter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<RedisQtAdapter *>
      Src: /src/hiredis/adapters/qt.h:67,1
    - Dst: RedisQtAdapter*::cleanup
      Src: /src/hiredis/adapters/qt.h:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - adapter
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 69
    functionName: RedisQtAdapter::RedisQtCleanup
    functionSourceFile: /src/hiredis/adapters/qt.h
    functionUses: 0
    functionsReached:
    - RedisQtAdapter*::cleanup
    - static_cast<RedisQtAdapter *>
    linkageType: ''
    returnType: void
    signature: void RedisQtCleanup(void * adapter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 73
    functionName: RedisQtAdapter::RedisQtAdapter
    functionSourceFile: /src/hiredis/adapters/qt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RedisQtAdapter(QObject * parent = 0)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 79
    functionName: ~RedisQtAdapter()
    functionSourceFile: /src/hiredis/adapters/qt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ~RedisQtAdapter()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - ac
    argTypes:
    - redisAsyncContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 93
    functionName: RedisQtAdapter::setContext
    functionSourceFile: /src/hiredis/adapters/qt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int setContext(redisAsyncContext * ac)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: QSocketNotifier::QSocketNotifier
      Src: /src/hiredis/adapters/qt.h:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 100
    functionName: RedisQtAdapter::addRead
    functionSourceFile: /src/hiredis/adapters/qt.h
    functionUses: 0
    functionsReached:
    - QSocketNotifier::QSocketNotifier
    linkageType: ''
    returnType: void
    signature: void addRead()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 106
    functionName: RedisQtAdapter::delRead
    functionSourceFile: /src/hiredis/adapters/qt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void delRead()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: QSocketNotifier::QSocketNotifier
      Src: /src/hiredis/adapters/qt.h:110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 112
    functionName: RedisQtAdapter::addWrite
    functionSourceFile: /src/hiredis/adapters/qt.h
    functionUses: 0
    functionsReached:
    - QSocketNotifier::QSocketNotifier
    linkageType: ''
    returnType: void
    signature: void addWrite()
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 118
    functionName: RedisQtAdapter::delWrite
    functionSourceFile: /src/hiredis/adapters/qt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void delWrite()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: RedisQtAdapter::delRead
      Src: /src/hiredis/adapters/qt.h:121,1
    - Dst: RedisQtAdapter::delWrite
      Src: /src/hiredis/adapters/qt.h:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 123
    functionName: RedisQtAdapter::cleanup
    functionSourceFile: /src/hiredis/adapters/qt.h
    functionUses: 0
    functionsReached:
    - RedisQtAdapter::delWrite
    - RedisQtAdapter::delRead
    linkageType: ''
    returnType: void
    signature: void cleanup()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisAsyncHandleRead
      Src: /src/hiredis/adapters/qt.h:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 126
    functionDepth: 6
    functionLinenumber: 126
    functionLinenumberEnd: 126
    functionName: RedisQtAdapter::read
    functionSourceFile: /src/hiredis/adapters/qt.h
    functionUses: 0
    functionsReached:
    - redisAsyncHandleRead
    linkageType: ''
    returnType: void
    signature: void read()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: redisAsyncHandleWrite
      Src: /src/hiredis/adapters/qt.h:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 127
    functionDepth: 6
    functionLinenumber: 127
    functionLinenumberEnd: 127
    functionName: RedisQtAdapter::write
    functionSourceFile: /src/hiredis/adapters/qt.h
    functionUses: 0
    functionsReached:
    - redisAsyncHandleWrite
    linkageType: ''
    returnType: void
    signature: void write()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 42
    functionName: panicAbort
    functionSourceFile: /src/hiredis/examples/example-push.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: panicAbort(fmt, ...)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: panicAbort
      Src: /src/hiredis/examples/example-push.c:45,1
    - Dst: fprintf
      Src: /src/hiredis/examples/example-push.c:49,1
    - Dst: panicAbort
      Src: /src/hiredis/examples/example-push.c:51,1
    - Dst: freeReplyObject
      Src: /src/hiredis/examples/example-push.c:54,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - context
    - reply
    - type
    argTypes:
    - redisContext*
    - redisReply*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 43
    functionDepth: 2
    functionLinenumber: 43
    functionLinenumberEnd: 55
    functionName: assertReplyAndFree
    functionSourceFile: /src/hiredis/examples/example-push.c
    functionUses: 0
    functionsReached:
    - fprintf
    - freeReplyObject
    - panicAbort
    linkageType: ''
    returnType: void
    signature: void assertReplyAndFree(redisContext *context, redisReply *reply, int
      type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: redisCommand
      Src: /src/hiredis/examples/example-push.c:59,1
    - Dst: panicAbort
      Src: /src/hiredis/examples/example-push.c:61,1
    - Dst: fprintf
      Src: /src/hiredis/examples/example-push.c:65,1
    - Dst: fprintf
      Src: /src/hiredis/examples/example-push.c:66,1
    - Dst: exit
      Src: /src/hiredis/examples/example-push.c:68,1
    - Dst: freeReplyObject
      Src: /src/hiredis/examples/example-push.c:71,1
    - Dst: redisCommand
      Src: /src/hiredis/examples/example-push.c:74,1
    - Dst: assertReplyAndFree
      Src: /src/hiredis/examples/example-push.c:75,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - c
    argTypes:
    - redisContext*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 58
    functionDepth: 14
    functionLinenumber: 58
    functionLinenumberEnd: 76
    functionName: enableClientTracking
    functionSourceFile: /src/hiredis/examples/example-push.c
    functionUses: 0
    functionsReached:
    - freeReplyObject
    - fprintf
    - assertReplyAndFree
    - redisCommand
    - exit
    - panicAbort
    linkageType: ''
    returnType: void
    signature: void enableClientTracking(redisContext *c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: panicAbort
      Src: /src/hiredis/examples/example-push.c:87,1
    - Dst: printf
      Src: /src/hiredis/examples/example-push.c:93,1
    - Dst: freeReplyObject
      Src: /src/hiredis/examples/example-push.c:96,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - privdata
    - r
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 78
    functionDepth: 2
    functionLinenumber: 78
    functionLinenumberEnd: 97
    functionName: pushReplyHandler
    functionSourceFile: /src/hiredis/examples/example-push.c
    functionUses: 0
    functionsReached:
    - printf
    - freeReplyObject
    - panicAbort
    linkageType: ''
    returnType: void
    signature: void pushReplyHandler(void *privdata, void *r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-push.c:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - privdata
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 104
    functionName: privdata_dtor
    functionSourceFile: /src/hiredis/examples/example-push.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void privdata_dtor(void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: atoi
      Src: /src/hiredis/examples/example-push.c:112,1
    - Dst: REDIS_OPTIONS_SET_TCP
      Src: /src/hiredis/examples/example-push.c:115,1
    - Dst: REDIS_OPTIONS_SET_PRIVDATA
      Src: /src/hiredis/examples/example-push.c:125,1
    - Dst: redisConnectWithOptions
      Src: /src/hiredis/examples/example-push.c:130,1
    - Dst: panicAbort
      Src: /src/hiredis/examples/example-push.c:132,1
    - Dst: enableClientTracking
      Src: /src/hiredis/examples/example-push.c:135,1
    - Dst: redisCommand
      Src: /src/hiredis/examples/example-push.c:140,1
    - Dst: assertReplyAndFree
      Src: /src/hiredis/examples/example-push.c:141,1
    - Dst: redisCommand
      Src: /src/hiredis/examples/example-push.c:143,1
    - Dst: assertReplyAndFree
      Src: /src/hiredis/examples/example-push.c:144,1
    - Dst: printf
      Src: /src/hiredis/examples/example-push.c:149,1
    - Dst: redisCommand
      Src: /src/hiredis/examples/example-push.c:150,1
    - Dst: assertReplyAndFree
      Src: /src/hiredis/examples/example-push.c:151,1
    - Dst: printf
      Src: /src/hiredis/examples/example-push.c:152,1
    - Dst: printf
      Src: /src/hiredis/examples/example-push.c:155,1
    - Dst: redisFree
      Src: /src/hiredis/examples/example-push.c:158,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 106
    functionDepth: 15
    functionLinenumber: 106
    functionLinenumberEnd: 159
    functionName: main
    functionSourceFile: /src/hiredis/examples/example-push.c
    functionUses: 0
    functionsReached:
    - redisFree
    - enableClientTracking
    - atoi
    - REDIS_OPTIONS_SET_TCP
    - printf
    - REDIS_OPTIONS_SET_PRIVDATA
    - assertReplyAndFree
    - redisCommand
    - redisConnectWithOptions
    - panicAbort
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-libsdevent.c:15,1
    - Dst: redisAsyncDisconnect
      Src: /src/hiredis/examples/example-libsdevent.c:19,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - c
    - r
    - privdata
    argTypes:
    - redisAsyncContext*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 10
    functionDepth: 4
    functionLinenumber: 10
    functionLinenumberEnd: 20
    functionName: debugCallback
    functionSourceFile: /src/hiredis/examples/example-libsdevent.c
    functionUses: 0
    functionsReached:
    - printf
    - redisAsyncDisconnect
    linkageType: ''
    returnType: void
    signature: void debugCallback(redisAsyncContext *c, void *r, void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-libsdevent.c:25,1
    - Dst: printf
      Src: /src/hiredis/examples/example-libsdevent.c:28,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-libsdevent.c:31,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - c
    - r
    - privdata
    argTypes:
    - redisAsyncContext*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 22
    functionDepth: 5
    functionLinenumber: 22
    functionLinenumberEnd: 32
    functionName: getCallback
    functionSourceFile: /src/hiredis/examples/example-libsdevent.c
    functionUses: 0
    functionsReached:
    - printf
    - redisAsyncCommand
    linkageType: ''
    returnType: void
    signature: void getCallback(redisAsyncContext *c, void *r, void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-libsdevent.c:36,1
    - Dst: printf
      Src: /src/hiredis/examples/example-libsdevent.c:39,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - c
    - status
    argTypes:
    - redisAsyncContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 40
    functionName: connectCallback
    functionSourceFile: /src/hiredis/examples/example-libsdevent.c
    functionUses: 2
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void connectCallback(const redisAsyncContext *c, int status)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-libsdevent.c:44,1
    - Dst: printf
      Src: /src/hiredis/examples/example-libsdevent.c:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - c
    - status
    argTypes:
    - redisAsyncContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 48
    functionName: disconnectCallback
    functionSourceFile: /src/hiredis/examples/example-libsdevent.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void disconnectCallback(const redisAsyncContext *c, int status)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: signal
      Src: /src/hiredis/examples/example-libsdevent.c:51,1
    - Dst: sd_event_default
      Src: /src/hiredis/examples/example-libsdevent.c:54,1
    - Dst: redisAsyncConnect
      Src: /src/hiredis/examples/example-libsdevent.c:56,1
    - Dst: printf
      Src: /src/hiredis/examples/example-libsdevent.c:58,1
    - Dst: redisAsyncFree
      Src: /src/hiredis/examples/example-libsdevent.c:59,1
    - Dst: redisLibsdeventAttach
      Src: /src/hiredis/examples/example-libsdevent.c:63,1
    - Dst: redisAsyncSetConnectCallback
      Src: /src/hiredis/examples/example-libsdevent.c:64,1
    - Dst: redisAsyncSetDisconnectCallback
      Src: /src/hiredis/examples/example-libsdevent.c:65,1
    - Dst: redisAsyncSetTimeout
      Src: /src/hiredis/examples/example-libsdevent.c:66,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-libsdevent.c:75,1
    - Dst: strlen
      Src: /src/hiredis/examples/example-libsdevent.c:75,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-libsdevent.c:76,1
    - Dst: sd_event_add_time_relative
      Src: /src/hiredis/examples/example-libsdevent.c:80,1
    - Dst: sd_event_loop
      Src: /src/hiredis/examples/example-libsdevent.c:82,1
    - Dst: sd_event_source_disable_unref
      Src: /src/hiredis/examples/example-libsdevent.c:83,1
    - Dst: sd_event_unref
      Src: /src/hiredis/examples/example-libsdevent.c:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 50
    functionDepth: 5
    functionLinenumber: 50
    functionLinenumberEnd: 86
    functionName: main
    functionSourceFile: /src/hiredis/examples/example-libsdevent.c
    functionUses: 0
    functionsReached:
    - signal
    - printf
    - redisAsyncCommand
    - sd_event_source_disable_unref
    - redisAsyncSetDisconnectCallback
    - sd_event_unref
    - redisAsyncSetTimeout
    - sd_event_add_time_relative
    - redisAsyncSetConnectCallback
    - sd_event_default
    - redisAsyncFree
    - redisLibsdeventAttach
    - sd_event_loop
    - strlen
    - redisAsyncConnect
    linkageType: ''
    returnType: int
    signature: int main (int argc, char **argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-redismoduleapi.c:15,1
    - Dst: redisAsyncDisconnect
      Src: /src/hiredis/examples/example-redismoduleapi.c:19,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - c
    - r
    - privdata
    argTypes:
    - redisAsyncContext*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 10
    functionDepth: 4
    functionLinenumber: 10
    functionLinenumberEnd: 20
    functionName: debugCallback
    functionSourceFile: /src/hiredis/examples/example-redismoduleapi.c
    functionUses: 0
    functionsReached:
    - printf
    - redisAsyncDisconnect
    linkageType: ''
    returnType: void
    signature: void debugCallback(redisAsyncContext *c, void *r, void *privdata)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-redismoduleapi.c:26,1
    - Dst: printf
      Src: /src/hiredis/examples/example-redismoduleapi.c:30,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-redismoduleapi.c:33,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - c
    - r
    - privdata
    argTypes:
    - redisAsyncContext*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 22
    functionDepth: 5
    functionLinenumber: 22
    functionLinenumberEnd: 34
    functionName: getCallback
    functionSourceFile: /src/hiredis/examples/example-redismoduleapi.c
    functionUses: 0
    functionsReached:
    - printf
    - redisAsyncCommand
    linkageType: ''
    returnType: void
    signature: void getCallback(redisAsyncContext *c, void *r, void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-redismoduleapi.c:38,1
    - Dst: printf
      Src: /src/hiredis/examples/example-redismoduleapi.c:41,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - c
    - status
    argTypes:
    - redisAsyncContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 42
    functionName: connectCallback
    functionSourceFile: /src/hiredis/examples/example-redismoduleapi.c
    functionUses: 3
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void connectCallback(const redisAsyncContext *c, int status)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-redismoduleapi.c:46,1
    - Dst: printf
      Src: /src/hiredis/examples/example-redismoduleapi.c:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - c
    - status
    argTypes:
    - redisAsyncContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 50
    functionName: disconnectCallback
    functionSourceFile: /src/hiredis/examples/example-redismoduleapi.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void disconnectCallback(const redisAsyncContext *c, int status)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RedisModule_Init
      Src: /src/hiredis/examples/example-redismoduleapi.c:64,1
    - Dst: printf
      Src: /src/hiredis/examples/example-redismoduleapi.c:66,1
    - Dst: redisModuleCompatibilityCheck
      Src: /src/hiredis/examples/example-redismoduleapi.c:70,1
    - Dst: printf
      Src: /src/hiredis/examples/example-redismoduleapi.c:71,1
    - Dst: redisAsyncConnect
      Src: /src/hiredis/examples/example-redismoduleapi.c:75,1
    - Dst: printf
      Src: /src/hiredis/examples/example-redismoduleapi.c:78,1
    - Dst: RedisModule_StringPtrLen
      Src: /src/hiredis/examples/example-redismoduleapi.c:83,1
    - Dst: RedisModule_GetDetachedThreadSafeContext
      Src: /src/hiredis/examples/example-redismoduleapi.c:85,1
    - Dst: redisModuleAttach
      Src: /src/hiredis/examples/example-redismoduleapi.c:86,1
    - Dst: redisAsyncSetConnectCallback
      Src: /src/hiredis/examples/example-redismoduleapi.c:87,1
    - Dst: redisAsyncSetDisconnectCallback
      Src: /src/hiredis/examples/example-redismoduleapi.c:88,1
    - Dst: redisAsyncSetTimeout
      Src: /src/hiredis/examples/example-redismoduleapi.c:89,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-redismoduleapi.c:98,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-redismoduleapi.c:99,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 3
    argNames:
    - ctx
    - argv
    - argc
    argTypes:
    - RedisModuleCtx*
    - RedisModuleString**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 62
    functionDepth: 5
    functionLinenumber: 62
    functionLinenumberEnd: 101
    functionName: RedisModule_OnLoad
    functionSourceFile: /src/hiredis/examples/example-redismoduleapi.c
    functionUses: 0
    functionsReached:
    - RedisModule_StringPtrLen
    - RedisModule_Init
    - redisAsyncCommand
    - printf
    - redisAsyncSetDisconnectCallback
    - RedisModule_GetDetachedThreadSafeContext
    - redisAsyncSetTimeout
    - redisModuleCompatibilityCheck
    - redisAsyncSetConnectCallback
    - redisModuleAttach
    - redisAsyncConnect
    linkageType: ''
    returnType: int
    signature: int RedisModule_OnLoad(RedisModuleCtx *ctx, RedisModuleString **argv,
      int argc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-poll.c:16,1
    - Dst: redisAsyncDisconnect
      Src: /src/hiredis/examples/example-poll.c:19,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - c
    - r
    - privdata
    argTypes:
    - redisAsyncContext*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 13
    functionDepth: 4
    functionLinenumber: 13
    functionLinenumberEnd: 20
    functionName: getCallback
    functionSourceFile: /src/hiredis/examples/example-poll.c
    functionUses: 0
    functionsReached:
    - printf
    - redisAsyncDisconnect
    linkageType: ''
    returnType: void
    signature: void getCallback(redisAsyncContext *c, void *r, void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-poll.c:24,1
    - Dst: printf
      Src: /src/hiredis/examples/example-poll.c:29,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - c
    - status
    argTypes:
    - redisAsyncContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 30
    functionName: connectCallback
    functionSourceFile: /src/hiredis/examples/example-poll.c
    functionUses: 4
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void connectCallback(const redisAsyncContext *c, int status)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-poll.c:35,1
    - Dst: printf
      Src: /src/hiredis/examples/example-poll.c:39,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - c
    - status
    argTypes:
    - redisAsyncContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 40
    functionName: disconnectCallback
    functionSourceFile: /src/hiredis/examples/example-poll.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void disconnectCallback(const redisAsyncContext *c, int status)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: signal
      Src: /src/hiredis/examples/example-poll.c:43,1
    - Dst: redisAsyncConnect
      Src: /src/hiredis/examples/example-poll.c:45,1
    - Dst: printf
      Src: /src/hiredis/examples/example-poll.c:48,1
    - Dst: redisPollAttach
      Src: /src/hiredis/examples/example-poll.c:52,1
    - Dst: redisAsyncSetConnectCallback
      Src: /src/hiredis/examples/example-poll.c:53,1
    - Dst: redisAsyncSetDisconnectCallback
      Src: /src/hiredis/examples/example-poll.c:54,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-poll.c:55,1
    - Dst: strlen
      Src: /src/hiredis/examples/example-poll.c:55,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-poll.c:56,1
    - Dst: redisPollTick
      Src: /src/hiredis/examples/example-poll.c:59,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 42
    functionDepth: 7
    functionLinenumber: 42
    functionLinenumberEnd: 62
    functionName: main
    functionSourceFile: /src/hiredis/examples/example-poll.c
    functionUses: 0
    functionsReached:
    - signal
    - printf
    - redisAsyncCommand
    - redisAsyncSetDisconnectCallback
    - redisAsyncSetConnectCallback
    - redisPollAttach
    - strlen
    - redisPollTick
    - redisAsyncConnect
    linkageType: ''
    returnType: int
    signature: int main (int argc, char **argv)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-libevent.c:14,1
    - Dst: printf
      Src: /src/hiredis/examples/example-libevent.c:18,1
    - Dst: redisAsyncDisconnect
      Src: /src/hiredis/examples/example-libevent.c:21,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - c
    - r
    - privdata
    argTypes:
    - redisAsyncContext*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 10
    functionDepth: 4
    functionLinenumber: 10
    functionLinenumberEnd: 22
    functionName: getCallback
    functionSourceFile: /src/hiredis/examples/example-libevent.c
    functionUses: 0
    functionsReached:
    - printf
    - redisAsyncDisconnect
    linkageType: ''
    returnType: void
    signature: void getCallback(redisAsyncContext *c, void *r, void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-libevent.c:26,1
    - Dst: printf
      Src: /src/hiredis/examples/example-libevent.c:29,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - c
    - status
    argTypes:
    - redisAsyncContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 30
    functionName: connectCallback
    functionSourceFile: /src/hiredis/examples/example-libevent.c
    functionUses: 5
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void connectCallback(const redisAsyncContext *c, int status)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-libevent.c:34,1
    - Dst: printf
      Src: /src/hiredis/examples/example-libevent.c:37,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - c
    - status
    argTypes:
    - redisAsyncContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 38
    functionName: disconnectCallback
    functionSourceFile: /src/hiredis/examples/example-libevent.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void disconnectCallback(const redisAsyncContext *c, int status)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: signal
      Src: /src/hiredis/examples/example-libevent.c:42,1
    - Dst: event_base_new
      Src: /src/hiredis/examples/example-libevent.c:45,1
    - Dst: REDIS_OPTIONS_SET_TCP
      Src: /src/hiredis/examples/example-libevent.c:47,1
    - Dst: redisAsyncConnectWithOptions
      Src: /src/hiredis/examples/example-libevent.c:53,1
    - Dst: printf
      Src: /src/hiredis/examples/example-libevent.c:56,1
    - Dst: redisLibeventAttach
      Src: /src/hiredis/examples/example-libevent.c:60,1
    - Dst: redisAsyncSetConnectCallback
      Src: /src/hiredis/examples/example-libevent.c:61,1
    - Dst: redisAsyncSetDisconnectCallback
      Src: /src/hiredis/examples/example-libevent.c:62,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-libevent.c:63,1
    - Dst: strlen
      Src: /src/hiredis/examples/example-libevent.c:63,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-libevent.c:64,1
    - Dst: event_base_dispatch
      Src: /src/hiredis/examples/example-libevent.c:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 40
    functionDepth: 5
    functionLinenumber: 40
    functionLinenumberEnd: 67
    functionName: main
    functionSourceFile: /src/hiredis/examples/example-libevent.c
    functionUses: 0
    functionsReached:
    - redisAsyncConnectWithOptions
    - redisLibeventAttach
    - REDIS_OPTIONS_SET_TCP
    - printf
    - signal
    - redisAsyncSetDisconnectCallback
    - redisAsyncSetConnectCallback
    - event_base_new
    - strlen
    - redisAsyncCommand
    - event_base_dispatch
    linkageType: ''
    returnType: int
    signature: int main (int argc, char **argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-libevent-ssl.c:14,1
    - Dst: redisAsyncDisconnect
      Src: /src/hiredis/examples/example-libevent-ssl.c:17,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - c
    - r
    - privdata
    argTypes:
    - redisAsyncContext*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 11
    functionDepth: 4
    functionLinenumber: 11
    functionLinenumberEnd: 18
    functionName: getCallback
    functionSourceFile: /src/hiredis/examples/example-libevent-ssl.c
    functionUses: 0
    functionsReached:
    - printf
    - redisAsyncDisconnect
    linkageType: ''
    returnType: void
    signature: void getCallback(redisAsyncContext *c, void *r, void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-libevent-ssl.c:22,1
    - Dst: printf
      Src: /src/hiredis/examples/example-libevent-ssl.c:25,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - c
    - status
    argTypes:
    - redisAsyncContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 26
    functionName: connectCallback
    functionSourceFile: /src/hiredis/examples/example-libevent-ssl.c
    functionUses: 6
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void connectCallback(const redisAsyncContext *c, int status)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-libevent-ssl.c:30,1
    - Dst: printf
      Src: /src/hiredis/examples/example-libevent-ssl.c:33,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - c
    - status
    argTypes:
    - redisAsyncContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 34
    functionName: disconnectCallback
    functionSourceFile: /src/hiredis/examples/example-libevent-ssl.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void disconnectCallback(const redisAsyncContext *c, int status)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: signal
      Src: /src/hiredis/examples/example-libevent-ssl.c:38,1
    - Dst: event_base_new
      Src: /src/hiredis/examples/example-libevent-ssl.c:41,1
    - Dst: fprintf
      Src: /src/hiredis/examples/example-libevent-ssl.c:43,1
    - Dst: exit
      Src: /src/hiredis/examples/example-libevent-ssl.c:45,1
    - Dst: strlen
      Src: /src/hiredis/examples/example-libevent-ssl.c:49,1
    - Dst: atoi
      Src: /src/hiredis/examples/example-libevent-ssl.c:52,1
    - Dst: redisInitOpenSSL
      Src: /src/hiredis/examples/example-libevent-ssl.c:61,1
    - Dst: redisCreateSSLContext
      Src: /src/hiredis/examples/example-libevent-ssl.c:63,1
    - Dst: printf
      Src: /src/hiredis/examples/example-libevent-ssl.c:66,1
    - Dst: redisSSLContextGetError
      Src: /src/hiredis/examples/example-libevent-ssl.c:66,1
    - Dst: redisAsyncConnect
      Src: /src/hiredis/examples/example-libevent-ssl.c:70,1
    - Dst: printf
      Src: /src/hiredis/examples/example-libevent-ssl.c:73,1
    - Dst: redisInitiateSSLWithContext
      Src: /src/hiredis/examples/example-libevent-ssl.c:76,1
    - Dst: printf
      Src: /src/hiredis/examples/example-libevent-ssl.c:77,1
    - Dst: exit
      Src: /src/hiredis/examples/example-libevent-ssl.c:78,1
    - Dst: redisLibeventAttach
      Src: /src/hiredis/examples/example-libevent-ssl.c:81,1
    - Dst: redisAsyncSetConnectCallback
      Src: /src/hiredis/examples/example-libevent-ssl.c:82,1
    - Dst: redisAsyncSetDisconnectCallback
      Src: /src/hiredis/examples/example-libevent-ssl.c:83,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-libevent-ssl.c:84,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-libevent-ssl.c:85,1
    - Dst: event_base_dispatch
      Src: /src/hiredis/examples/example-libevent-ssl.c:86,1
    - Dst: redisFreeSSLContext
      Src: /src/hiredis/examples/example-libevent-ssl.c:88,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 36
    functionDepth: 5
    functionLinenumber: 36
    functionLinenumberEnd: 90
    functionName: main
    functionSourceFile: /src/hiredis/examples/example-libevent-ssl.c
    functionUses: 0
    functionsReached:
    - redisLibeventAttach
    - atoi
    - signal
    - fprintf
    - printf
    - redisInitOpenSSL
    - redisSSLContextGetError
    - redisAsyncCommand
    - redisAsyncSetDisconnectCallback
    - redisCreateSSLContext
    - redisInitiateSSLWithContext
    - redisAsyncSetConnectCallback
    - event_base_new
    - exit
    - redisFreeSSLContext
    - strlen
    - redisAsyncConnect
    - event_base_dispatch
    linkageType: ''
    returnType: int
    signature: int main (int argc, char **argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: g_printerr
      Src: /src/hiredis/examples/example-glib.c:14,1
    - Dst: g_main_loop_quit
      Src: /src/hiredis/examples/example-glib.c:15,1
    - Dst: g_printerr
      Src: /src/hiredis/examples/example-glib.c:17,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - G_GNUC_UNUSED
    - status
    argTypes:
    - redisAsyncContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 19
    functionName: connect_cb
    functionSourceFile: /src/hiredis/examples/example-glib.c
    functionUses: 0
    functionsReached:
    - g_main_loop_quit
    - g_printerr
    linkageType: ''
    returnType: void
    signature: "void connect_cb (const redisAsyncContext *ac G_GNUC_UNUSED,\n            int
      status)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: g_error
      Src: /src/hiredis/examples/example-glib.c:26,1
    - Dst: g_printerr
      Src: /src/hiredis/examples/example-glib.c:28,1
    - Dst: g_main_loop_quit
      Src: /src/hiredis/examples/example-glib.c:29,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - G_GNUC_UNUSED
    - status
    argTypes:
    - redisAsyncContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 31
    functionName: disconnect_cb
    functionSourceFile: /src/hiredis/examples/example-glib.c
    functionUses: 0
    functionsReached:
    - g_main_loop_quit
    - g_printerr
    - g_error
    linkageType: ''
    returnType: void
    signature: "void disconnect_cb (const redisAsyncContext *ac G_GNUC_UNUSED,\n               int
      status)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: g_print
      Src: /src/hiredis/examples/example-glib.c:41,1
    - Dst: redisAsyncDisconnect
      Src: /src/hiredis/examples/example-glib.c:44,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ac
    - r
    - G_GNUC_UNUSED
    argTypes:
    - redisAsyncContext*
    - gpointer
    - gpointer
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 33
    functionDepth: 4
    functionLinenumber: 33
    functionLinenumberEnd: 45
    functionName: command_cb
    functionSourceFile: /src/hiredis/examples/example-glib.c
    functionUses: 0
    functionsReached:
    - g_print
    - redisAsyncDisconnect
    linkageType: ''
    returnType: void
    signature: "void command_cb(redisAsyncContext *ac,\n           gpointer r,\n           gpointer
      user_data G_GNUC_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: redisAsyncConnect
      Src: /src/hiredis/examples/example-glib.c:55,1
    - Dst: g_printerr
      Src: /src/hiredis/examples/example-glib.c:57,1
    - Dst: exit
      Src: /src/hiredis/examples/example-glib.c:58,1
    - Dst: redis_source_new
      Src: /src/hiredis/examples/example-glib.c:61,1
    - Dst: g_main_loop_new
      Src: /src/hiredis/examples/example-glib.c:62,1
    - Dst: g_source_attach
      Src: /src/hiredis/examples/example-glib.c:63,1
    - Dst: redisAsyncSetConnectCallback
      Src: /src/hiredis/examples/example-glib.c:65,1
    - Dst: redisAsyncSetDisconnectCallback
      Src: /src/hiredis/examples/example-glib.c:66,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-glib.c:67,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-glib.c:68,1
    - Dst: g_main_loop_run
      Src: /src/hiredis/examples/example-glib.c:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - G_GNUC_UNUSED
    - G_GNUC_UNUSED
    argTypes:
    - gint
    - gchar*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 47
    functionDepth: 5
    functionLinenumber: 47
    functionLinenumberEnd: 73
    functionName: main
    functionSourceFile: /src/hiredis/examples/example-glib.c
    functionUses: 0
    functionsReached:
    - g_source_attach
    - redisAsyncCommand
    - redisAsyncSetDisconnectCallback
    - g_main_loop_run
    - redisAsyncSetConnectCallback
    - g_printerr
    - g_main_loop_new
    - exit
    - redisAsyncConnect
    - redis_source_new
    linkageType: ''
    returnType: gint
    signature: "gint main (gint argc     G_GNUC_UNUSED,\n      gchar *argv[] G_GNUC_UNUSED)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-macosx.c:43,1
    - Dst: redisAsyncDisconnect
      Src: /src/hiredis/examples/example-macosx.c:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - c
    - r
    - privdata
    argTypes:
    - redisAsyncContext*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 40
    functionDepth: 4
    functionLinenumber: 40
    functionLinenumberEnd: 47
    functionName: getCallback
    functionSourceFile: /src/hiredis/examples/example-macosx.c
    functionUses: 0
    functionsReached:
    - printf
    - redisAsyncDisconnect
    linkageType: ''
    returnType: void
    signature: void getCallback(redisAsyncContext *c, void *r, void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-macosx.c:51,1
    - Dst: printf
      Src: /src/hiredis/examples/example-macosx.c:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - c
    - status
    argTypes:
    - redisAsyncContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 55
    functionName: connectCallback
    functionSourceFile: /src/hiredis/examples/example-macosx.c
    functionUses: 8
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void connectCallback(const redisAsyncContext *c, int status)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-macosx.c:59,1
    - Dst: CFRunLoopStop
      Src: /src/hiredis/examples/example-macosx.c:62,1
    - Dst: CFRunLoopGetCurrent
      Src: /src/hiredis/examples/example-macosx.c:62,1
    - Dst: printf
      Src: /src/hiredis/examples/example-macosx.c:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - c
    - status
    argTypes:
    - redisAsyncContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 64
    functionName: disconnectCallback
    functionSourceFile: /src/hiredis/examples/example-macosx.c
    functionUses: 0
    functionsReached:
    - printf
    - CFRunLoopGetCurrent
    - CFRunLoopStop
    linkageType: ''
    returnType: void
    signature: void disconnectCallback(const redisAsyncContext *c, int status)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: signal
      Src: /src/hiredis/examples/example-macosx.c:67,1
    - Dst: CFRunLoopGetCurrent
      Src: /src/hiredis/examples/example-macosx.c:69,1
    - Dst: printf
      Src: /src/hiredis/examples/example-macosx.c:71,1
    - Dst: redisAsyncConnect
      Src: /src/hiredis/examples/example-macosx.c:75,1
    - Dst: printf
      Src: /src/hiredis/examples/example-macosx.c:78,1
    - Dst: redisMacOSAttach
      Src: /src/hiredis/examples/example-macosx.c:82,1
    - Dst: redisAsyncSetConnectCallback
      Src: /src/hiredis/examples/example-macosx.c:84,1
    - Dst: redisAsyncSetDisconnectCallback
      Src: /src/hiredis/examples/example-macosx.c:85,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-macosx.c:87,1
    - Dst: strlen
      Src: /src/hiredis/examples/example-macosx.c:87,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-macosx.c:88,1
    - Dst: CFRunLoopRun
      Src: /src/hiredis/examples/example-macosx.c:90,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 66
    functionDepth: 5
    functionLinenumber: 66
    functionLinenumberEnd: 93
    functionName: main
    functionSourceFile: /src/hiredis/examples/example-macosx.c
    functionUses: 0
    functionsReached:
    - CFRunLoopRun
    - signal
    - printf
    - redisAsyncCommand
    - CFRunLoopGetCurrent
    - redisAsyncSetDisconnectCallback
    - redisMacOSAttach
    - redisAsyncSetConnectCallback
    - strlen
    - redisAsyncConnect
    linkageType: ''
    returnType: int
    signature: int main (int argc, char **argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-ivykis.c:13,1
    - Dst: redisAsyncDisconnect
      Src: /src/hiredis/examples/example-ivykis.c:16,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - c
    - r
    - privdata
    argTypes:
    - redisAsyncContext*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 10
    functionDepth: 4
    functionLinenumber: 10
    functionLinenumberEnd: 17
    functionName: getCallback
    functionSourceFile: /src/hiredis/examples/example-ivykis.c
    functionUses: 0
    functionsReached:
    - printf
    - redisAsyncDisconnect
    linkageType: ''
    returnType: void
    signature: void getCallback(redisAsyncContext *c, void *r, void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-ivykis.c:21,1
    - Dst: printf
      Src: /src/hiredis/examples/example-ivykis.c:24,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - c
    - status
    argTypes:
    - redisAsyncContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 25
    functionName: connectCallback
    functionSourceFile: /src/hiredis/examples/example-ivykis.c
    functionUses: 9
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void connectCallback(const redisAsyncContext *c, int status)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-ivykis.c:29,1
    - Dst: printf
      Src: /src/hiredis/examples/example-ivykis.c:32,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - c
    - status
    argTypes:
    - redisAsyncContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 33
    functionName: disconnectCallback
    functionSourceFile: /src/hiredis/examples/example-ivykis.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void disconnectCallback(const redisAsyncContext *c, int status)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: signal
      Src: /src/hiredis/examples/example-ivykis.c:37,1
    - Dst: iv_init
      Src: /src/hiredis/examples/example-ivykis.c:40,1
    - Dst: redisAsyncConnect
      Src: /src/hiredis/examples/example-ivykis.c:42,1
    - Dst: printf
      Src: /src/hiredis/examples/example-ivykis.c:45,1
    - Dst: redisIvykisAttach
      Src: /src/hiredis/examples/example-ivykis.c:49,1
    - Dst: redisAsyncSetConnectCallback
      Src: /src/hiredis/examples/example-ivykis.c:50,1
    - Dst: redisAsyncSetDisconnectCallback
      Src: /src/hiredis/examples/example-ivykis.c:51,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-ivykis.c:52,1
    - Dst: strlen
      Src: /src/hiredis/examples/example-ivykis.c:52,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-ivykis.c:53,1
    - Dst: iv_main
      Src: /src/hiredis/examples/example-ivykis.c:55,1
    - Dst: iv_deinit
      Src: /src/hiredis/examples/example-ivykis.c:57,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 35
    functionDepth: 5
    functionLinenumber: 35
    functionLinenumberEnd: 60
    functionName: main
    functionSourceFile: /src/hiredis/examples/example-ivykis.c
    functionUses: 1
    functionsReached:
    - signal
    - printf
    - redisAsyncCommand
    - redisAsyncSetDisconnectCallback
    - redisIvykisAttach
    - iv_deinit
    - redisAsyncSetConnectCallback
    - iv_init
    - iv_main
    - strlen
    - redisAsyncConnect
    linkageType: ''
    returnType: int
    signature: int main (int argc, char **argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-libhv.c:13,1
    - Dst: redisAsyncDisconnect
      Src: /src/hiredis/examples/example-libhv.c:16,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - c
    - r
    - privdata
    argTypes:
    - redisAsyncContext*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 10
    functionDepth: 4
    functionLinenumber: 10
    functionLinenumberEnd: 17
    functionName: getCallback
    functionSourceFile: /src/hiredis/examples/example-libhv.c
    functionUses: 0
    functionsReached:
    - printf
    - redisAsyncDisconnect
    linkageType: ''
    returnType: void
    signature: void getCallback(redisAsyncContext *c, void *r, void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-libhv.c:24,1
    - Dst: redisAsyncDisconnect
      Src: /src/hiredis/examples/example-libhv.c:28,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - c
    - r
    - privdata
    argTypes:
    - redisAsyncContext*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 19
    functionDepth: 4
    functionLinenumber: 19
    functionLinenumberEnd: 29
    functionName: debugCallback
    functionSourceFile: /src/hiredis/examples/example-libhv.c
    functionUses: 0
    functionsReached:
    - printf
    - redisAsyncDisconnect
    linkageType: ''
    returnType: void
    signature: void debugCallback(redisAsyncContext *c, void *r, void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-libhv.c:33,1
    - Dst: printf
      Src: /src/hiredis/examples/example-libhv.c:36,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - c
    - status
    argTypes:
    - redisAsyncContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 37
    functionName: connectCallback
    functionSourceFile: /src/hiredis/examples/example-libhv.c
    functionUses: 10
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void connectCallback(const redisAsyncContext *c, int status)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-libhv.c:41,1
    - Dst: printf
      Src: /src/hiredis/examples/example-libhv.c:44,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - c
    - status
    argTypes:
    - redisAsyncContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 45
    functionName: disconnectCallback
    functionSourceFile: /src/hiredis/examples/example-libhv.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void disconnectCallback(const redisAsyncContext *c, int status)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: signal
      Src: /src/hiredis/examples/example-libhv.c:49,1
    - Dst: redisAsyncConnect
      Src: /src/hiredis/examples/example-libhv.c:52,1
    - Dst: printf
      Src: /src/hiredis/examples/example-libhv.c:55,1
    - Dst: hloop_new
      Src: /src/hiredis/examples/example-libhv.c:59,1
    - Dst: redisLibhvAttach
      Src: /src/hiredis/examples/example-libhv.c:60,1
    - Dst: redisAsyncSetTimeout
      Src: /src/hiredis/examples/example-libhv.c:61,1
    - Dst: redisAsyncSetConnectCallback
      Src: /src/hiredis/examples/example-libhv.c:62,1
    - Dst: redisAsyncSetDisconnectCallback
      Src: /src/hiredis/examples/example-libhv.c:63,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-libhv.c:64,1
    - Dst: strlen
      Src: /src/hiredis/examples/example-libhv.c:64,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-libhv.c:65,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-libhv.c:66,1
    - Dst: hloop_run
      Src: /src/hiredis/examples/example-libhv.c:67,1
    - Dst: hloop_free
      Src: /src/hiredis/examples/example-libhv.c:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 47
    functionDepth: 5
    functionLinenumber: 47
    functionLinenumberEnd: 70
    functionName: main
    functionSourceFile: /src/hiredis/examples/example-libhv.c
    functionUses: 1
    functionsReached:
    - signal
    - printf
    - redisLibhvAttach
    - redisAsyncCommand
    - redisAsyncSetDisconnectCallback
    - redisAsyncSetTimeout
    - hloop_run
    - redisAsyncSetConnectCallback
    - hloop_free
    - strlen
    - hloop_new
    - redisAsyncConnect
    linkageType: ''
    returnType: int
    signature: int main (int argc, char **argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-libev.c:13,1
    - Dst: redisAsyncDisconnect
      Src: /src/hiredis/examples/example-libev.c:16,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - c
    - r
    - privdata
    argTypes:
    - redisAsyncContext*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 10
    functionDepth: 4
    functionLinenumber: 10
    functionLinenumberEnd: 17
    functionName: getCallback
    functionSourceFile: /src/hiredis/examples/example-libev.c
    functionUses: 0
    functionsReached:
    - printf
    - redisAsyncDisconnect
    linkageType: ''
    returnType: void
    signature: void getCallback(redisAsyncContext *c, void *r, void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-libev.c:21,1
    - Dst: printf
      Src: /src/hiredis/examples/example-libev.c:24,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - c
    - status
    argTypes:
    - redisAsyncContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 19
    functionDepth: 0
    functionLinenumber: 19
    functionLinenumberEnd: 25
    functionName: connectCallback
    functionSourceFile: /src/hiredis/examples/example-libev.c
    functionUses: 11
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void connectCallback(const redisAsyncContext *c, int status)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-libev.c:29,1
    - Dst: printf
      Src: /src/hiredis/examples/example-libev.c:32,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - c
    - status
    argTypes:
    - redisAsyncContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 33
    functionName: disconnectCallback
    functionSourceFile: /src/hiredis/examples/example-libev.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void disconnectCallback(const redisAsyncContext *c, int status)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: signal
      Src: /src/hiredis/examples/example-libev.c:37,1
    - Dst: redisAsyncConnect
      Src: /src/hiredis/examples/example-libev.c:40,1
    - Dst: printf
      Src: /src/hiredis/examples/example-libev.c:43,1
    - Dst: redisAsyncSetConnectCallback
      Src: /src/hiredis/examples/example-libev.c:48,1
    - Dst: redisAsyncSetDisconnectCallback
      Src: /src/hiredis/examples/example-libev.c:49,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-libev.c:50,1
    - Dst: strlen
      Src: /src/hiredis/examples/example-libev.c:50,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-libev.c:51,1
    - Dst: ev_loop
      Src: /src/hiredis/examples/example-libev.c:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 35
    functionDepth: 5
    functionLinenumber: 35
    functionLinenumberEnd: 54
    functionName: main
    functionSourceFile: /src/hiredis/examples/example-libev.c
    functionUses: 1
    functionsReached:
    - signal
    - printf
    - redisAsyncCommand
    - ev_loop
    - redisAsyncSetDisconnectCallback
    - redisAsyncSetConnectCallback
    - strlen
    - redisAsyncConnect
    linkageType: ''
    returnType: int
    signature: int main (int argc, char **argv)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-ssl.c:19,1
    - Dst: exit
      Src: /src/hiredis/examples/example-ssl.c:20,1
    - Dst: atoi
      Src: /src/hiredis/examples/example-ssl.c:23,1
    - Dst: redisInitOpenSSL
      Src: /src/hiredis/examples/example-ssl.c:28,1
    - Dst: redisCreateSSLContext
      Src: /src/hiredis/examples/example-ssl.c:29,1
    - Dst: printf
      Src: /src/hiredis/examples/example-ssl.c:31,1
    - Dst: redisSSLContextGetError
      Src: /src/hiredis/examples/example-ssl.c:31,1
    - Dst: exit
      Src: /src/hiredis/examples/example-ssl.c:32,1
    - Dst: REDIS_OPTIONS_SET_TCP
      Src: /src/hiredis/examples/example-ssl.c:37,1
    - Dst: redisConnectWithOptions
      Src: /src/hiredis/examples/example-ssl.c:39,1
    - Dst: printf
      Src: /src/hiredis/examples/example-ssl.c:43,1
    - Dst: redisFree
      Src: /src/hiredis/examples/example-ssl.c:44,1
    - Dst: printf
      Src: /src/hiredis/examples/example-ssl.c:46,1
    - Dst: exit
      Src: /src/hiredis/examples/example-ssl.c:48,1
    - Dst: redisInitiateSSLWithContext
      Src: /src/hiredis/examples/example-ssl.c:51,1
    - Dst: printf
      Src: /src/hiredis/examples/example-ssl.c:52,1
    - Dst: printf
      Src: /src/hiredis/examples/example-ssl.c:53,1
    - Dst: redisFree
      Src: /src/hiredis/examples/example-ssl.c:54,1
    - Dst: exit
      Src: /src/hiredis/examples/example-ssl.c:55,1
    - Dst: redisCommand
      Src: /src/hiredis/examples/example-ssl.c:59,1
    - Dst: printf
      Src: /src/hiredis/examples/example-ssl.c:60,1
    - Dst: freeReplyObject
      Src: /src/hiredis/examples/example-ssl.c:61,1
    - Dst: redisCommand
      Src: /src/hiredis/examples/example-ssl.c:64,1
    - Dst: printf
      Src: /src/hiredis/examples/example-ssl.c:65,1
    - Dst: freeReplyObject
      Src: /src/hiredis/examples/example-ssl.c:66,1
    - Dst: redisCommand
      Src: /src/hiredis/examples/example-ssl.c:69,1
    - Dst: printf
      Src: /src/hiredis/examples/example-ssl.c:70,1
    - Dst: freeReplyObject
      Src: /src/hiredis/examples/example-ssl.c:71,1
    - Dst: redisCommand
      Src: /src/hiredis/examples/example-ssl.c:74,1
    - Dst: printf
      Src: /src/hiredis/examples/example-ssl.c:75,1
    - Dst: freeReplyObject
      Src: /src/hiredis/examples/example-ssl.c:76,1
    - Dst: redisCommand
      Src: /src/hiredis/examples/example-ssl.c:78,1
    - Dst: printf
      Src: /src/hiredis/examples/example-ssl.c:79,1
    - Dst: freeReplyObject
      Src: /src/hiredis/examples/example-ssl.c:80,1
    - Dst: redisCommand
      Src: /src/hiredis/examples/example-ssl.c:82,1
    - Dst: printf
      Src: /src/hiredis/examples/example-ssl.c:83,1
    - Dst: freeReplyObject
      Src: /src/hiredis/examples/example-ssl.c:84,1
    - Dst: redisCommand
      Src: /src/hiredis/examples/example-ssl.c:87,1
    - Dst: freeReplyObject
      Src: /src/hiredis/examples/example-ssl.c:88,1
    - Dst: snprintf
      Src: /src/hiredis/examples/example-ssl.c:92,1
    - Dst: redisCommand
      Src: /src/hiredis/examples/example-ssl.c:93,1
    - Dst: freeReplyObject
      Src: /src/hiredis/examples/example-ssl.c:94,1
    - Dst: redisCommand
      Src: /src/hiredis/examples/example-ssl.c:98,1
    - Dst: printf
      Src: /src/hiredis/examples/example-ssl.c:101,1
    - Dst: freeReplyObject
      Src: /src/hiredis/examples/example-ssl.c:104,1
    - Dst: redisFree
      Src: /src/hiredis/examples/example-ssl.c:107,1
    - Dst: redisFreeSSLContext
      Src: /src/hiredis/examples/example-ssl.c:109,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 64
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 12
    functionDepth: 14
    functionLinenumber: 12
    functionLinenumberEnd: 112
    functionName: main
    functionSourceFile: /src/hiredis/examples/example-ssl.c
    functionUses: 1
    functionsReached:
    - freeReplyObject
    - redisFree
    - atoi
    - REDIS_OPTIONS_SET_TCP
    - printf
    - redisSSLContextGetError
    - redisInitOpenSSL
    - redisCreateSSLContext
    - redisInitiateSSLWithContext
    - redisCommand
    - snprintf
    - redisConnectWithOptions
    - exit
    - redisFreeSSLContext
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-libuv.c:15,1
    - Dst: redisAsyncDisconnect
      Src: /src/hiredis/examples/example-libuv.c:19,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - c
    - r
    - privdata
    argTypes:
    - redisAsyncContext*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 10
    functionDepth: 4
    functionLinenumber: 10
    functionLinenumberEnd: 20
    functionName: debugCallback
    functionSourceFile: /src/hiredis/examples/example-libuv.c
    functionUses: 0
    functionsReached:
    - printf
    - redisAsyncDisconnect
    linkageType: ''
    returnType: void
    signature: void debugCallback(redisAsyncContext *c, void *r, void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-libuv.c:25,1
    - Dst: printf
      Src: /src/hiredis/examples/example-libuv.c:28,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-libuv.c:31,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - c
    - r
    - privdata
    argTypes:
    - redisAsyncContext*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 22
    functionDepth: 5
    functionLinenumber: 22
    functionLinenumberEnd: 32
    functionName: getCallback
    functionSourceFile: /src/hiredis/examples/example-libuv.c
    functionUses: 0
    functionsReached:
    - printf
    - redisAsyncCommand
    linkageType: ''
    returnType: void
    signature: void getCallback(redisAsyncContext *c, void *r, void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-libuv.c:36,1
    - Dst: printf
      Src: /src/hiredis/examples/example-libuv.c:39,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - c
    - status
    argTypes:
    - redisAsyncContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 40
    functionName: connectCallback
    functionSourceFile: /src/hiredis/examples/example-libuv.c
    functionUses: 12
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void connectCallback(const redisAsyncContext *c, int status)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-libuv.c:44,1
    - Dst: printf
      Src: /src/hiredis/examples/example-libuv.c:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - c
    - status
    argTypes:
    - redisAsyncContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 48
    functionName: disconnectCallback
    functionSourceFile: /src/hiredis/examples/example-libuv.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void disconnectCallback(const redisAsyncContext *c, int status)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: signal
      Src: /src/hiredis/examples/example-libuv.c:52,1
    - Dst: uv_default_loop
      Src: /src/hiredis/examples/example-libuv.c:55,1
    - Dst: redisAsyncConnect
      Src: /src/hiredis/examples/example-libuv.c:57,1
    - Dst: printf
      Src: /src/hiredis/examples/example-libuv.c:60,1
    - Dst: redisLibuvAttach
      Src: /src/hiredis/examples/example-libuv.c:64,1
    - Dst: redisAsyncSetConnectCallback
      Src: /src/hiredis/examples/example-libuv.c:65,1
    - Dst: redisAsyncSetDisconnectCallback
      Src: /src/hiredis/examples/example-libuv.c:66,1
    - Dst: redisAsyncSetTimeout
      Src: /src/hiredis/examples/example-libuv.c:67,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-libuv.c:76,1
    - Dst: strlen
      Src: /src/hiredis/examples/example-libuv.c:76,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-libuv.c:77,1
    - Dst: uv_run
      Src: /src/hiredis/examples/example-libuv.c:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 50
    functionDepth: 5
    functionLinenumber: 50
    functionLinenumberEnd: 81
    functionName: main
    functionSourceFile: /src/hiredis/examples/example-libuv.c
    functionUses: 1
    functionsReached:
    - uv_run
    - signal
    - printf
    - redisAsyncCommand
    - redisAsyncSetDisconnectCallback
    - redisLibuvAttach
    - redisAsyncSetTimeout
    - redisAsyncSetConnectCallback
    - uv_default_loop
    - strlen
    - redisAsyncConnect
    linkageType: ''
    returnType: int
    signature: int main (int argc, char **argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-ae.c:16,1
    - Dst: redisAsyncDisconnect
      Src: /src/hiredis/examples/example-ae.c:19,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - c
    - r
    - privdata
    argTypes:
    - redisAsyncContext*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 13
    functionDepth: 4
    functionLinenumber: 13
    functionLinenumberEnd: 20
    functionName: getCallback
    functionSourceFile: /src/hiredis/examples/example-ae.c
    functionUses: 0
    functionsReached:
    - printf
    - redisAsyncDisconnect
    linkageType: ''
    returnType: void
    signature: void getCallback(redisAsyncContext *c, void *r, void *privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-ae.c:24,1
    - Dst: aeStop
      Src: /src/hiredis/examples/example-ae.c:25,1
    - Dst: printf
      Src: /src/hiredis/examples/example-ae.c:29,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - c
    - status
    argTypes:
    - redisAsyncContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 30
    functionName: connectCallback
    functionSourceFile: /src/hiredis/examples/example-ae.c
    functionUses: 13
    functionsReached:
    - printf
    - aeStop
    linkageType: ''
    returnType: void
    signature: void connectCallback(const redisAsyncContext *c, int status)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example-ae.c:34,1
    - Dst: aeStop
      Src: /src/hiredis/examples/example-ae.c:35,1
    - Dst: printf
      Src: /src/hiredis/examples/example-ae.c:39,1
    - Dst: aeStop
      Src: /src/hiredis/examples/example-ae.c:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - c
    - status
    argTypes:
    - redisAsyncContext*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 41
    functionName: disconnectCallback
    functionSourceFile: /src/hiredis/examples/example-ae.c
    functionUses: 0
    functionsReached:
    - printf
    - aeStop
    linkageType: ''
    returnType: void
    signature: void disconnectCallback(const redisAsyncContext *c, int status)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: signal
      Src: /src/hiredis/examples/example-ae.c:44,1
    - Dst: redisAsyncConnect
      Src: /src/hiredis/examples/example-ae.c:46,1
    - Dst: printf
      Src: /src/hiredis/examples/example-ae.c:49,1
    - Dst: aeCreateEventLoop
      Src: /src/hiredis/examples/example-ae.c:53,1
    - Dst: redisAeAttach
      Src: /src/hiredis/examples/example-ae.c:54,1
    - Dst: redisAsyncSetConnectCallback
      Src: /src/hiredis/examples/example-ae.c:55,1
    - Dst: redisAsyncSetDisconnectCallback
      Src: /src/hiredis/examples/example-ae.c:56,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-ae.c:57,1
    - Dst: strlen
      Src: /src/hiredis/examples/example-ae.c:57,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-ae.c:58,1
    - Dst: aeMain
      Src: /src/hiredis/examples/example-ae.c:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 43
    functionDepth: 5
    functionLinenumber: 43
    functionLinenumberEnd: 61
    functionName: main
    functionSourceFile: /src/hiredis/examples/example-ae.c
    functionUses: 1
    functionsReached:
    - redisAeAttach
    - signal
    - printf
    - redisAsyncCommand
    - aeMain
    - redisAsyncSetDisconnectCallback
    - aeCreateEventLoop
    - redisAsyncSetConnectCallback
    - strlen
    - redisAsyncConnect
    linkageType: ''
    returnType: int
    signature: int main (int argc, char **argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 21
    functionName: ExampleQt::finish
    functionSourceFile: /src/hiredis/examples/example-qt.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void finish()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/hiredis/examples/example.c:16,1
    - Dst: malloc
      Src: /src/hiredis/examples/example.c:17,1
    - Dst: snprintf
      Src: /src/hiredis/examples/example.c:29,1
    - Dst: strdup
      Src: /src/hiredis/examples/example.c:30,1
    - Dst: redisCommandArgv
      Src: /src/hiredis/examples/example.c:36,1
    - Dst: fprintf
      Src: /src/hiredis/examples/example.c:39,1
    - Dst: exit
      Src: /src/hiredis/examples/example.c:40,1
    - Dst: printf
      Src: /src/hiredis/examples/example.c:44,1
    - Dst: freeReplyObject
      Src: /src/hiredis/examples/example.c:47,1
    - Dst: free
      Src: /src/hiredis/examples/example.c:51,1
    - Dst: free
      Src: /src/hiredis/examples/example.c:54,1
    - Dst: free
      Src: /src/hiredis/examples/example.c:55,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - c
    - n
    argTypes:
    - redisContext*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 10
    functionDepth: 13
    functionLinenumber: 10
    functionLinenumberEnd: 56
    functionName: example_argv_command
    functionSourceFile: /src/hiredis/examples/example.c
    functionUses: 0
    functionsReached:
    - freeReplyObject
    - fprintf
    - printf
    - malloc
    - strdup
    - free
    - snprintf
    - redisCommandArgv
    - exit
    linkageType: ''
    returnType: void
    signature: void example_argv_command(redisContext *c, size_t n)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/hiredis/examples/example.c:68,1
    - Dst: atoi
      Src: /src/hiredis/examples/example.c:72,1
    - Dst: redisConnectUnixWithTimeout
      Src: /src/hiredis/examples/example.c:76,1
    - Dst: redisConnectWithTimeout
      Src: /src/hiredis/examples/example.c:78,1
    - Dst: printf
      Src: /src/hiredis/examples/example.c:82,1
    - Dst: redisFree
      Src: /src/hiredis/examples/example.c:83,1
    - Dst: printf
      Src: /src/hiredis/examples/example.c:85,1
    - Dst: exit
      Src: /src/hiredis/examples/example.c:87,1
    - Dst: redisCommand
      Src: /src/hiredis/examples/example.c:91,1
    - Dst: printf
      Src: /src/hiredis/examples/example.c:92,1
    - Dst: freeReplyObject
      Src: /src/hiredis/examples/example.c:93,1
    - Dst: redisCommand
      Src: /src/hiredis/examples/example.c:96,1
    - Dst: printf
      Src: /src/hiredis/examples/example.c:97,1
    - Dst: freeReplyObject
      Src: /src/hiredis/examples/example.c:98,1
    - Dst: redisCommand
      Src: /src/hiredis/examples/example.c:101,1
    - Dst: printf
      Src: /src/hiredis/examples/example.c:102,1
    - Dst: freeReplyObject
      Src: /src/hiredis/examples/example.c:103,1
    - Dst: redisCommand
      Src: /src/hiredis/examples/example.c:106,1
    - Dst: printf
      Src: /src/hiredis/examples/example.c:107,1
    - Dst: freeReplyObject
      Src: /src/hiredis/examples/example.c:108,1
    - Dst: redisCommand
      Src: /src/hiredis/examples/example.c:110,1
    - Dst: printf
      Src: /src/hiredis/examples/example.c:111,1
    - Dst: freeReplyObject
      Src: /src/hiredis/examples/example.c:112,1
    - Dst: redisCommand
      Src: /src/hiredis/examples/example.c:114,1
    - Dst: printf
      Src: /src/hiredis/examples/example.c:115,1
    - Dst: freeReplyObject
      Src: /src/hiredis/examples/example.c:116,1
    - Dst: redisCommand
      Src: /src/hiredis/examples/example.c:119,1
    - Dst: freeReplyObject
      Src: /src/hiredis/examples/example.c:120,1
    - Dst: snprintf
      Src: /src/hiredis/examples/example.c:124,1
    - Dst: redisCommand
      Src: /src/hiredis/examples/example.c:125,1
    - Dst: freeReplyObject
      Src: /src/hiredis/examples/example.c:126,1
    - Dst: redisCommand
      Src: /src/hiredis/examples/example.c:130,1
    - Dst: printf
      Src: /src/hiredis/examples/example.c:133,1
    - Dst: freeReplyObject
      Src: /src/hiredis/examples/example.c:136,1
    - Dst: example_argv_command
      Src: /src/hiredis/examples/example.c:139,1
    - Dst: redisFree
      Src: /src/hiredis/examples/example.c:142,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 56
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 58
    functionDepth: 14
    functionLinenumber: 58
    functionLinenumberEnd: 145
    functionName: main
    functionSourceFile: /src/hiredis/examples/example.c
    functionUses: 1
    functionsReached:
    - freeReplyObject
    - redisFree
    - atoi
    - printf
    - redisConnectWithTimeout
    - redisConnectUnixWithTimeout
    - redisCommand
    - snprintf
    - exit
    - example_argv_command
    linkageType: ''
    returnType: int
    signature: int main(int argc, char **argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: static_cast<redisReply *>
      Src: /src/hiredis/examples/example-qt.cpp:11,1
    - Dst: static_cast<ExampleQt *>
      Src: /src/hiredis/examples/example-qt.cpp:12,1
    - Dst: ExampleQt*::finish
      Src: /src/hiredis/examples/example-qt.cpp:17,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - r
    - privdata
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 18
    functionName: getCallback
    functionSourceFile: /src/hiredis/examples/example-qt.cpp
    functionUses: 0
    functionsReached:
    - ExampleQt*::finish
    - static_cast<ExampleQt *>
    - static_cast<redisReply *>
    linkageType: ''
    returnType: void
    signature: void getCallback(redisAsyncContext *, void * r, void * privdata)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: redisAsyncConnect
      Src: /src/hiredis/examples/example-qt.cpp:22,1
    - Dst: redisAsyncFree
      Src: /src/hiredis/examples/example-qt.cpp:26,1
    - Dst: setContext
      Src: /src/hiredis/examples/example-qt.cpp:30,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-qt.cpp:32,1
    - Dst: redisAsyncCommand
      Src: /src/hiredis/examples/example-qt.cpp:33,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 20
    functionDepth: 5
    functionLinenumber: 20
    functionLinenumberEnd: 34
    functionName: ExampleQt::run
    functionSourceFile: /src/hiredis/examples/example-qt.cpp
    functionUses: 0
    functionsReached:
    - redisAsyncCommand
    - setContext
    - redisAsyncConnect
    - redisAsyncFree
    linkageType: ''
    returnType: void
    signature: void ExampleQt::run()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: win32_connect
      Src: /src/hiredis/examples/example-qt.cpp:42,1
    - Dst: SIGNAL
      Src: /src/hiredis/examples/example-qt.cpp:42,1
    - Dst: finished
      Src: /src/hiredis/examples/example-qt.cpp:42,1
    - Dst: SLOT
      Src: /src/hiredis/examples/example-qt.cpp:42,1
    - Dst: quit
      Src: /src/hiredis/examples/example-qt.cpp:42,1
    - Dst: QTimer::singleShot
      Src: /src/hiredis/examples/example-qt.cpp:43,1
    - Dst: SLOT
      Src: /src/hiredis/examples/example-qt.cpp:43,1
    - Dst: run
      Src: /src/hiredis/examples/example-qt.cpp:43,1
    - Dst: QCoreApplication::exec
      Src: /src/hiredis/examples/example-qt.cpp:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 36
    functionDepth: 3
    functionLinenumber: 36
    functionLinenumberEnd: 46
    functionName: main
    functionSourceFile: /src/hiredis/examples/example-qt.cpp
    functionUses: 1
    functionsReached:
    - win32_connect
    - SLOT
    - QTimer::singleShot
    - QCoreApplication::exec
    - quit
    - run
    - finished
    - SIGNAL
    linkageType: ''
    returnType: int
    signature: int main (int argc, char **argv)
Fuzzer filename: empty-file.cpp
Fuzzing method: LLVMFuzzerTestOneInput
included-header-files:
- dict.h
- windows.h
- adapters/ae.h
- iostream
- assert.h
- stdbool.h
- machine/endian.h
- ev.h
- hv/hloop.h
- adapters/redismoduleapi.h
- arm_neon.h
- strings.h
- hiredis.h
- signal.h
- ../sockcompat.h
- adapters/libuv.h
- hiredis_ssl.h
- sys/time.h
- stdarg.h
- ws2tcpip.h
- netinet/tcp.h
- QTimer
- sys/types.h
- emmintrin.h
- read.h
- arpa/inet.h
- netdb.h
- net.h
- async.h
- adapters/libsdevent.h
- sockcompat.h
- netinet/in.h
- time.h
- sds.h
- stddef.h
- adapters/glib.h
- openssl/err.h
- systemd/sd-event.h
- unistd.h
- CoreFoundation/CoreFoundation.h
- ../hiredis.h
- adapters/libevent.h
- stdio.h
- ctype.h
- limits.h
- uv.h
- testhelp.h
- sys/un.h
- redismodule.h
- adapters/macosx.h
- QCoreApplication
- example-qt.h
- errno.h
- sdsalloc.h
- mstcpip.h
- sys/socket.h
- iv.h
- winsock2.h
- float.h
- event2/event.h
- wincrypt.h
- pthread.h
- adapters/ivykis.h
- sys/byteorder.h
- adapters/qt.h
- alloc.h
- endian.h
- sys/endian.h
- string.h
- fmacros.h
- stdint.h
- poll.h
- ffc.h
- win32.h
- ../async.h
- intrin.h
- dict.c
- math.h
- ae.h
- adapters/poll.h
- stdlib.h
- async_private.h
- adapters/libev.h
- QSocketNotifier
- fcntl.h
- sys/select.h
- glib.h
- openssl/ssl.h
- adapters/libhv.h
report: name
sources:
- function_names:
  - _wsaErrorToErrno
  - _updateErrno
  - _initWinsock
  - win32_getaddrinfo
  - win32_gai_strerror
  - win32_freeaddrinfo
  - win32_socket
  - win32_ioctl
  - win32_bind
  - win32_connect
  - win32_getsockopt
  - win32_setsockopt
  - win32_close
  - win32_recv
  - win32_send
  - win32_poll
  - win32_redisKeepAlive
  source_file: /src/hiredis/sockcompat.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DICT_NOTUSED
  - dictFreeEntryVal
  - dictSetHashVal
  - dictFreeEntryKey
  - dictSetHashKey
  - dictCompareHashKeys
  - dictHashKey
  - dictGetEntryKey
  - dictGetEntryVal
  - dictSlots
  - dictSize
  source_file: /src/hiredis/dict.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DICT_OK
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/hiredis/dict.h
      type_or_value: '0'
    - item_type: preproc_def
      name: DICT_ERR
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/hiredis/dict.h
      type_or_value: '1'
    - item_type: preproc_def
      name: DICT_HT_INITIAL_SIZE
      pos:
        line_end: 76
        line_start: 75
        source_file: /src/hiredis/dict.h
      type_or_value: '4'
    structs:
    - fields:
      - name: '*key'
        type: void
      - name: '*val'
        type: void
      - name: '*next'
        type: struct dictEntry
      item_type: struct
      name: dictEntry
      pos:
        line_end: 48
        line_start: 44
        source_file: /src/hiredis/dict.h
    - fields:
      - name: (*hashFunction)(const void *key)
        type: unsigned int
      - name: '*(*keyDup)(void *privdata, const void *key)'
        type: void
      - name: '*(*valDup)(void *privdata, const void *obj)'
        type: void
      - name: (*keyCompare)(void *privdata, const void *key1, const void *key2)
        type: int
      - name: (*keyDestructor)(void *privdata, void *key)
        type: void
      - name: (*valDestructor)(void *privdata, void *obj)
        type: void
      item_type: struct
      name: dictType
      pos:
        line_end: 57
        line_start: 50
        source_file: /src/hiredis/dict.h
    - fields:
      - name: '**table'
        type: dictEntry
      - name: '*type'
        type: dictType
      - name: size
        type: unsigned long
      - name: sizemask
        type: unsigned long
      - name: used
        type: unsigned long
      - name: '*privdata'
        type: void
      item_type: struct
      name: dict
      pos:
        line_end: 66
        line_start: 59
        source_file: /src/hiredis/dict.h
    - fields:
      - name: '*ht'
        type: dict
      - name: index
        type: int
      - name: '*entry'
        type: dictEntry
      item_type: struct
      name: dictIterator
      pos:
        line_end: 72
        line_start: 68
        source_file: /src/hiredis/dict.h
    typedefs: []
    union: []
- function_names:
  - test
  - test_cond
  - test_skipped
  - millisleep
  - usec
  - assert
  - redisTestPanic
  - get_redis_version
  - select_database
  - send_hello
  - send_client_tracking
  - disconnect
  - do_ssl_handshake
  - do_connect
  - do_reconnect
  - test_format_commands
  - INTEGER_WIDTH_TEST
  - FLOAT_WIDTH_TEST
  - test_append_formatted_commands
  - test_tcp_options
  - test_unix_keepalive
  - test_reply_reader
  - test_free_null
  - hi_malloc_fail
  - hi_calloc_fail
  - hi_calloc_insecure
  - hi_realloc_fail
  - test_allocator_injection
  - test_blocking_connection_errors
  - push_handler
  - push_handler_async
  - test_resp3_push_handler
  - get_redis_tcp_options
  - test_resp3_push_options
  - free_privdata
  - test_privdata_hooks
  - test_blocking_connection
  - detect_debug_sleep
  - test_blocking_connection_timeouts
  - test_blocking_io_errors
  - test_invalid_timeout_errors
  - hi_malloc_safe
  - test_throughput
  - async_disconnect
  - timeout_cb
  - unexpected_cb
  - publish_msg
  - integer_cb
  - subscribe_cb
  - array_cb
  - null_cb
  - test_pubsub_handling
  - unexpected_push_cb
  - test_pubsub_handling_resp3
  - subscribe_with_timeout_cb
  - test_command_timeout_during_pubsub
  - subscribe_channel_a_cb
  - subscribe_channel_b_cb
  - test_pubsub_multiple_channels
  - monitor_cb
  - test_monitor
  - asCleanup
  - connectCallback
  - disconnectCallback
  - commandCallback
  - do_aconnect
  - as_printerr
  - ASASSERT
  - test_async_polling
  - main
  source_file: /src/hiredis/test.c
  types:
    enum:
    - enumerators:
      - name: CONN_TCP
      - name: CONN_FD
      - name: CONN_SSL
      - name: CONN_UNIX
      item_type: enum
      name: connection_type
      pos:
        line_end: 33
        line_start: 28
        source_file: /src/hiredis/test.c
    - enumerators:
      - name: ASTEST_CONNECT
        value: '0'
      - name: ASTEST_CONN_TIMEOUT
      - name: ASTEST_PINGPONG
      - name: ASTEST_PINGPONG_TIMEOUT
      - name: ASTEST_ISSUE_931
      - name: ASTEST_ISSUE_931_PING
      item_type: enum
      name: astest_no
      pos:
        line_end: 2114
        line_start: 2106
        source_file: /src/hiredis/test.c
    preproc_defs:
    - item_type: preproc_def
      name: REDIS_VERSION_FIELD
      pos:
        line_end: 115
        line_start: 114
        source_file: /src/hiredis/test.c
      type_or_value: '"redis_version:"'
    - item_type: preproc_def
      name: HIREDIS_BAD_DOMAIN
      pos:
        line_end: 977
        line_start: 976
        source_file: /src/hiredis/test.c
      type_or_value: '"idontexist-noreally.com"'
    structs:
    - fields:
      - name: type
        type: enum connection_type
      - name: connect_timeout
        type: struct timeval
      - name: tcp
        type: "struct {\n        const char *host;\n        int port;\n    }"
      - name: unix_sock
        type: "struct {\n        const char *path;\n    }"
      - name: ssl
        type: "struct {\n        const char *host;\n        int port;\n        const
          char *ca_cert;\n        const char *cert;\n        const char *key;\n    }"
      item_type: struct
      name: config
      pos:
        line_end: 55
        line_start: 35
        source_file: /src/hiredis/test.c
    - fields:
      - name: dtor_counter
        type: int
      item_type: struct
      name: privdata
      pos:
        line_end: 59
        line_start: 57
        source_file: /src/hiredis/test.c
    - fields:
      - name: nil
        type: int
      - name: str
        type: int
      item_type: struct
      name: pushCounters
      pos:
        line_end: 64
        line_start: 61
        source_file: /src/hiredis/test.c
    - fields:
      - name: '*resp'
        type: char
      - name: val
        type: double
      item_type: struct
      name: "dcases[] = {\n            {\",0\\r\\n\", 0.0}, {\",-0\\r\\n\", -0.0},
        {\",1.5\\r\\n\", 1.5},\n            {\",-2.25\\r\\n\", -2.25}, {\",1e308\\r\\n\",
        1e308}, {\",5e-324\\r\\n\", 5e-324},\n            {\",2.2250738585072014e-308\\r\\n\",
        2.2250738585072014e-308},\n            {\",1.7976931348623157e308\\r\\n\",
        1.7976931348623157e308},\n        }"
      pos:
        line_end: 732
        line_start: 732
        source_file: /src/hiredis/test.c
    - fields:
      - name: '*options'
        type: redisOptions
      - name: checkpoint
        type: int
      - name: resp3
        type: int
      - name: disconnect
        type: int
      item_type: struct
      name: TestState
      pos:
        line_end: 1670
        line_start: 1665
        source_file: /src/hiredis/test.c
    - fields:
      - name: '*ac'
        type: redisAsyncContext
      - name: testno
        type: astest_no
      - name: counter
        type: int
      - name: connects
        type: int
      - name: connect_status
        type: int
      - name: disconnects
        type: int
      - name: pongs
        type: int
      - name: disconnect_status
        type: int
      - name: connected
        type: int
      - name: err
        type: int
      - name: errstr[256]
        type: char
      item_type: struct
      name: _astest
      pos:
        line_end: 2129
        line_start: 2117
        source_file: /src/hiredis/test.c
    typedefs: []
    union: []
- function_names:
  - hi_malloc
  - hi_calloc
  - hi_realloc
  - hi_strdup
  - hi_free
  source_file: /src/hiredis/alloc.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*(*mallocFn)(size_t)'
        type: void
      - name: '*(*callocFn)(size_t,size_t)'
        type: void
      - name: '*(*reallocFn)(void*,size_t)'
        type: void
      - name: '*(*strdupFn)(const char*)'
        type: char
      - name: (*freeFn)(void*)
        type: void
      item_type: struct
      name: hiredisAllocFuncs
      pos:
        line_end: 47
        line_start: 41
        source_file: /src/hiredis/alloc.h
    typedefs: []
    union: []
- function_names:
  - redisReaderSetPrivdata
  - redisReaderGetObject
  - redisReaderGetError
  source_file: /src/hiredis/read.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: REDIS_ERR
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/hiredis/read.h
      type_or_value: '-1'
    - item_type: preproc_def
      name: REDIS_OK
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/hiredis/read.h
      type_or_value: '0'
    - item_type: preproc_def
      name: REDIS_ERR_IO
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/hiredis/read.h
      type_or_value: '1 '
    - item_type: preproc_def
      name: REDIS_ERR_EOF
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/hiredis/read.h
      type_or_value: '3 '
    - item_type: preproc_def
      name: REDIS_ERR_PROTOCOL
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/hiredis/read.h
      type_or_value: '4 '
    - item_type: preproc_def
      name: REDIS_ERR_OOM
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/hiredis/read.h
      type_or_value: '5 '
    - item_type: preproc_def
      name: REDIS_ERR_TIMEOUT
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/hiredis/read.h
      type_or_value: '6 '
    - item_type: preproc_def
      name: REDIS_ERR_OTHER
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/hiredis/read.h
      type_or_value: '2 '
    - item_type: preproc_def
      name: REDIS_REPLY_STRING
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/hiredis/read.h
      type_or_value: '1'
    - item_type: preproc_def
      name: REDIS_REPLY_ARRAY
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/hiredis/read.h
      type_or_value: '2'
    - item_type: preproc_def
      name: REDIS_REPLY_INTEGER
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/hiredis/read.h
      type_or_value: '3'
    - item_type: preproc_def
      name: REDIS_REPLY_NIL
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/hiredis/read.h
      type_or_value: '4'
    - item_type: preproc_def
      name: REDIS_REPLY_STATUS
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/hiredis/read.h
      type_or_value: '5'
    - item_type: preproc_def
      name: REDIS_REPLY_ERROR
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/hiredis/read.h
      type_or_value: '6'
    - item_type: preproc_def
      name: REDIS_REPLY_DOUBLE
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/hiredis/read.h
      type_or_value: '7'
    - item_type: preproc_def
      name: REDIS_REPLY_BOOL
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/hiredis/read.h
      type_or_value: '8'
    - item_type: preproc_def
      name: REDIS_REPLY_MAP
      pos:
        line_end: 59
        line_start: 58
        source_file: /src/hiredis/read.h
      type_or_value: '9'
    - item_type: preproc_def
      name: REDIS_REPLY_SET
      pos:
        line_end: 60
        line_start: 59
        source_file: /src/hiredis/read.h
      type_or_value: '10'
    - item_type: preproc_def
      name: REDIS_REPLY_ATTR
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/hiredis/read.h
      type_or_value: '11'
    - item_type: preproc_def
      name: REDIS_REPLY_PUSH
      pos:
        line_end: 62
        line_start: 61
        source_file: /src/hiredis/read.h
      type_or_value: '12'
    - item_type: preproc_def
      name: REDIS_REPLY_BIGNUM
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/hiredis/read.h
      type_or_value: '13'
    - item_type: preproc_def
      name: REDIS_REPLY_VERB
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/hiredis/read.h
      type_or_value: '14'
    - item_type: preproc_def
      name: REDIS_READER_MAX_BUF
      pos:
        line_end: 67
        line_start: 66
        source_file: /src/hiredis/read.h
      type_or_value: (1024*16)
    - item_type: preproc_def
      name: REDIS_READER_MAX_ARRAY_ELEMENTS
      pos:
        line_end: 70
        line_start: 69
        source_file: /src/hiredis/read.h
      type_or_value: ((1LL<<32) - 1)
    structs:
    - fields:
      - name: type
        type: int
      - name: elements
        type: long long
      - name: idx
        type: int
      - name: '*obj'
        type: void
      - name: '*parent'
        type: struct redisReadTask
      - name: '*privdata'
        type: void
      item_type: struct
      name: redisReadTask
      pos:
        line_end: 82
        line_start: 75
        source_file: /src/hiredis/read.h
    - fields:
      - name: '*(*createString)(const redisReadTask*, char*, size_t)'
        type: void
      - name: '*(*createArray)(const redisReadTask*, size_t)'
        type: void
      - name: '*(*createInteger)(const redisReadTask*, long long)'
        type: void
      - name: '*(*createDouble)(const redisReadTask*, double, char*, size_t)'
        type: void
      - name: '*(*createNil)(const redisReadTask*)'
        type: void
      - name: '*(*createBool)(const redisReadTask*, int)'
        type: void
      - name: (*freeObject)(void*)
        type: void
      item_type: struct
      name: redisReplyObjectFunctions
      pos:
        line_end: 92
        line_start: 84
        source_file: /src/hiredis/read.h
    - fields:
      - name: err
        type: int
      - name: errstr[128]
        type: char
      - name: '*buf'
        type: char
      - name: pos
        type: size_t
      - name: len
        type: size_t
      - name: maxbuf
        type: size_t
      - name: maxelements
        type: long long
      - name: '**task'
        type: redisReadTask
      - name: tasks
        type: int
      - name: ridx
        type: int
      - name: '*reply'
        type: void
      - name: '*fn'
        type: redisReplyObjectFunctions
      - name: '*privdata'
        type: void
      item_type: struct
      name: redisReader
      pos:
        line_end: 112
        line_start: 94
        source_file: /src/hiredis/read.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/hiredis/async.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*next'
        type: struct redisCallback
      - name: '*fn'
        type: redisCallbackFn
      - name: pending_subs
        type: int
      - name: unsubscribe_sent
        type: int
      - name: '*privdata'
        type: void
      item_type: struct
      name: redisCallback
      pos:
        line_end: 50
        line_start: 44
        source_file: /src/hiredis/async.h
    - fields:
      - name: '*head'
        type: redisCallback
      item_type: struct
      name: redisCallbackList
      pos:
        line_end: 55
        line_start: 53
        source_file: /src/hiredis/async.h
    - fields:
      - name: c
        type: redisContext
      - name: err
        type: int
      - name: '*errstr'
        type: char
      - name: '*data'
        type: void
      - name: (*dataCleanup)(void *privdata)
        type: void
      - name: ev
        type: "struct {\n        void *data;\n\n        /* Hooks that are called when
          the library expects to start\n         * reading/writing. These functions
          should be idempotent. */\n        void (*addRead)(void *privdata);\n        void
          (*delRead)(void *privdata);\n        void (*addWrite)(void *privdata);\n
          \       void (*delWrite)(void *privdata);\n        void (*cleanup)(void
          *privdata);\n        void (*scheduleTimer)(void *privdata, struct timeval
          tv);\n    }"
      - name: '*onDisconnect'
        type: redisDisconnectCallback
      - name: '*onConnect'
        type: redisConnectCallback
      - name: '*onConnectNC'
        type: redisConnectCallbackNC
      - name: replies
        type: redisCallbackList
      - name: '*saddr'
        type: struct sockaddr
      - name: addrlen
        type: size_t
      - name: sub
        type: "struct {\n        redisCallbackList replies;\n        struct dict *channels;\n
          \       struct dict *patterns;\n        int pending_unsubs;\n    }"
      - name: '*push_cb'
        type: redisAsyncPushFn
      item_type: struct
      name: redisAsyncContext
      pos:
        line_end: 115
        line_start: 64
        source_file: /src/hiredis/async.h
    typedefs:
    - item_type: typedef
      name: (redisCallbackFn)(struct redisAsyncContext*, void*, void*)
      pos:
        line_end: 43
        line_start: 43
        source_file: /src/hiredis/async.h
      type: void
    - item_type: typedef
      name: (redisDisconnectCallback)(const struct redisAsyncContext*, int status)
      pos:
        line_end: 58
        line_start: 58
        source_file: /src/hiredis/async.h
      type: void
    - item_type: typedef
      name: (redisConnectCallback)(const struct redisAsyncContext*, int status)
      pos:
        line_end: 59
        line_start: 59
        source_file: /src/hiredis/async.h
      type: void
    - item_type: typedef
      name: (redisConnectCallbackNC)(struct redisAsyncContext *, int status)
      pos:
        line_end: 60
        line_start: 60
        source_file: /src/hiredis/async.h
      type: void
    - item_type: typedef
      name: (redisTimerCallback)(void *timer, void *privdata)
      pos:
        line_end: 61
        line_start: 61
        source_file: /src/hiredis/async.h
      type: void
    union: []
- function_names:
  - sdsHdrSize
  - sdsReqType
  - sdsnewlen
  - sdsempty
  - sdsnew
  - sdsdup
  - sdsfree
  - sdsupdatelen
  - sdsclear
  - sdsMakeRoomFor
  - sdsRemoveFreeSpace
  - sdsAllocSize
  - sdsAllocPtr
  - sdsIncrLen
  - sdsgrowzero
  - sdscatlen
  - sdscat
  - sdscatsds
  - sdscpylen
  - sdscpy
  - sdsll2str
  - sdsull2str
  - sdsfromlonglong
  - sdscatvprintf
  - sdscatprintf
  - sdscatfmt
  - sdstrim
  - sdsrange
  - sdstolower
  - sdstoupper
  - sdscmp
  - sdssplitlen
  - sdsfreesplitres
  - sdscatrepr
  - hex_digit_to_int
  - sdssplitargs
  - sdsmapchars
  - sdsjoin
  - sdsjoinsds
  - sds_malloc
  - sds_realloc
  - sds_free
  - UNUSED
  - sdsTest
  - main
  source_file: /src/hiredis/sds.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SDS_LLSTR_SIZE
      pos:
        line_end: 433
        line_start: 432
        source_file: /src/hiredis/sds.c
      type_or_value: '21'
    structs: []
    typedefs: []
    union: []
- function_names:
  - redisIsPushReply
  - REDIS_OPTIONS_SET_TCP
  - REDIS_OPTIONS_SET_UNIX
  - REDIS_OPTIONS_SET_PRIVDATA
  source_file: /src/hiredis/hiredis.h
  types:
    enum:
    - enumerators:
      - name: REDIS_CONN_TCP
      - name: REDIS_CONN_USERFD
      - name: REDIS_CONN_UNIX
      item_type: enum
      name: redisConnectionType
      pos:
        line_end: 150
        line_start: 146
        source_file: /src/hiredis/hiredis.h
    preproc_defs:
    - item_type: preproc_def
      name: HIREDIS_MAJOR
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/hiredis/hiredis.h
      type_or_value: '1'
    - item_type: preproc_def
      name: HIREDIS_MINOR
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/hiredis/hiredis.h
      type_or_value: '5'
    - item_type: preproc_def
      name: HIREDIS_PATCH
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/hiredis/hiredis.h
      type_or_value: '0'
    - item_type: preproc_def
      name: HIREDIS_SONAME
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/hiredis/hiredis.h
      type_or_value: 1.5.0-dev
    - item_type: preproc_def
      name: REDIS_BLOCK
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/hiredis/hiredis.h
      type_or_value: '0x1'
    - item_type: preproc_def
      name: REDIS_CONNECTED
      pos:
        line_end: 59
        line_start: 58
        source_file: /src/hiredis/hiredis.h
      type_or_value: '0x2'
    - item_type: preproc_def
      name: REDIS_DISCONNECTING
      pos:
        line_end: 65
        line_start: 64
        source_file: /src/hiredis/hiredis.h
      type_or_value: '0x4'
    - item_type: preproc_def
      name: REDIS_FREEING
      pos:
        line_end: 69
        line_start: 68
        source_file: /src/hiredis/hiredis.h
      type_or_value: '0x8'
    - item_type: preproc_def
      name: REDIS_IN_CALLBACK
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/hiredis/hiredis.h
      type_or_value: '0x10'
    - item_type: preproc_def
      name: REDIS_SUBSCRIBED
      pos:
        line_end: 75
        line_start: 74
        source_file: /src/hiredis/hiredis.h
      type_or_value: '0x20'
    - item_type: preproc_def
      name: REDIS_MONITORING
      pos:
        line_end: 78
        line_start: 77
        source_file: /src/hiredis/hiredis.h
      type_or_value: '0x40'
    - item_type: preproc_def
      name: REDIS_REUSEADDR
      pos:
        line_end: 81
        line_start: 80
        source_file: /src/hiredis/hiredis.h
      type_or_value: '0x80'
    - item_type: preproc_def
      name: REDIS_SUPPORTS_PUSH
      pos:
        line_end: 84
        line_start: 83
        source_file: /src/hiredis/hiredis.h
      type_or_value: '0x100'
    - item_type: preproc_def
      name: REDIS_NO_AUTO_FREE
      pos:
        line_end: 90
        line_start: 89
        source_file: /src/hiredis/hiredis.h
      type_or_value: '0x200'
    - item_type: preproc_def
      name: REDIS_NO_AUTO_FREE_REPLIES
      pos:
        line_end: 93
        line_start: 92
        source_file: /src/hiredis/hiredis.h
      type_or_value: '0x400'
    - item_type: preproc_def
      name: REDIS_PREFER_IPV4
      pos:
        line_end: 97
        line_start: 96
        source_file: /src/hiredis/hiredis.h
      type_or_value: '0x800'
    - item_type: preproc_def
      name: REDIS_PREFER_IPV6
      pos:
        line_end: 98
        line_start: 97
        source_file: /src/hiredis/hiredis.h
      type_or_value: '0x1000'
    - item_type: preproc_def
      name: REDIS_KEEPALIVE_INTERVAL
      pos:
        line_end: 100
        line_start: 99
        source_file: /src/hiredis/hiredis.h
      type_or_value: '15 '
    - item_type: preproc_def
      name: REDIS_CONNECT_RETRIES
      pos:
        line_end: 104
        line_start: 103
        source_file: /src/hiredis/hiredis.h
      type_or_value: '10'
    - item_type: preproc_def
      name: REDIS_OPT_NONBLOCK
      pos:
        line_end: 155
        line_start: 154
        source_file: /src/hiredis/hiredis.h
      type_or_value: '0x01'
    - item_type: preproc_def
      name: REDIS_OPT_REUSEADDR
      pos:
        line_end: 156
        line_start: 155
        source_file: /src/hiredis/hiredis.h
      type_or_value: '0x02'
    - item_type: preproc_def
      name: REDIS_OPT_NOAUTOFREE
      pos:
        line_end: 161
        line_start: 156
        source_file: /src/hiredis/hiredis.h
      type_or_value: '0x04        '
    - item_type: preproc_def
      name: REDIS_OPT_NO_PUSH_AUTOFREE
      pos:
        line_end: 163
        line_start: 161
        source_file: /src/hiredis/hiredis.h
      type_or_value: '0x08  '
    - item_type: preproc_def
      name: REDIS_OPT_NOAUTOFREEREPLIES
      pos:
        line_end: 164
        line_start: 163
        source_file: /src/hiredis/hiredis.h
      type_or_value: '0x10 '
    - item_type: preproc_def
      name: REDIS_OPT_PREFER_IPV4
      pos:
        line_end: 165
        line_start: 164
        source_file: /src/hiredis/hiredis.h
      type_or_value: '0x20       '
    - item_type: preproc_def
      name: REDIS_OPT_PREFER_IPV6
      pos:
        line_end: 166
        line_start: 165
        source_file: /src/hiredis/hiredis.h
      type_or_value: '0x40       '
    - item_type: preproc_def
      name: REDIS_OPT_PREFER_IP_UNSPEC
      pos:
        line_end: 167
        line_start: 166
        source_file: /src/hiredis/hiredis.h
      type_or_value: (REDIS_OPT_PREFER_IPV4 | REDIS_OPT_PREFER_IPV6)
    - item_type: preproc_def
      name: REDIS_OPT_SET_SOCK_CLOEXEC
      pos:
        line_end: 168
        line_start: 167
        source_file: /src/hiredis/hiredis.h
      type_or_value: '0x80  '
    - item_type: preproc_def
      name: REDIS_INVALID_FD
      pos:
        line_end: 176
        line_start: 175
        source_file: /src/hiredis/hiredis.h
      type_or_value: '-1'
    - item_type: preproc_def
      name: REDIS_INVALID_FD
      pos:
        line_end: 183
        line_start: 182
        source_file: /src/hiredis/hiredis.h
      type_or_value: '((redisFD)(~0)) '
    structs:
    - fields:
      - name: type
        type: int
      - name: integer
        type: long long
      - name: dval
        type: double
      - name: len
        type: size_t
      - name: '*str'
        type: char
      - name: vtype[4]
        type: char
      - name: elements
        type: size_t
      - name: '**element'
        type: struct redisReply
      item_type: struct
      name: redisReply
      pos:
        line_end: 131
        line_start: 119
        source_file: /src/hiredis/hiredis.h
    - fields:
      - name: type
        type: int
      - name: options
        type: int
      - name: '*connect_timeout'
        type: struct timeval
      - name: '*command_timeout'
        type: struct timeval
      - name: endpoint
        type: "union {\n        /** use this field for tcp/ip connections */\n        struct
          {\n            const char *source_addr;\n            const char *ip;\n            int
          port;\n        } tcp;\n        /** use this field for unix domain sockets
          */\n        const char *unix_socket;\n        /**\n         * use this field
          to have hiredis operate an already-open\n         * file descriptor */\n
          \       redisFD fd;\n    }"
      - name: '*privdata'
        type: void
      - name: (*free_privdata)(void *)
        type: void
      - name: '*push_cb'
        type: redisPushFn
      - name: '*async_push_cb'
        type: redisAsyncPushFn
      item_type: struct
      name: redisOptions
      pos:
        line_end: 220
        line_start: 185
        source_file: /src/hiredis/hiredis.h
    - fields:
      - name: (*close)(struct redisContext *)
        type: void
      - name: (*free_privctx)(void *)
        type: void
      - name: (*async_read)(struct redisAsyncContext *)
        type: void
      - name: (*async_write)(struct redisAsyncContext *)
        type: void
      - name: (*read)(struct redisContext *, char *, size_t)
        type: ssize_t
      - name: (*write)(struct redisContext *)
        type: ssize_t
      item_type: struct
      name: redisContextFuncs
      pos:
        line_end: 253
        line_start: 241
        source_file: /src/hiredis/hiredis.h
    - fields:
      - name: '*funcs'
        type: redisContextFuncs
      - name: err
        type: int
      - name: errstr[128]
        type: char
      - name: fd
        type: redisFD
      - name: flags
        type: int
      - name: '*obuf'
        type: char
      - name: '*reader'
        type: redisReader
      - name: connection_type
        type: enum redisConnectionType
      - name: '*connect_timeout'
        type: struct timeval
      - name: '*command_timeout'
        type: struct timeval
      - name: tcp
        type: "struct {\n        char *host;\n        char *source_addr;\n        int
          port;\n    }"
      - name: unix_sock
        type: "struct {\n        char *path;\n    }"
      - name: '*saddr'
        type: struct sockaddr
      - name: addrlen
        type: size_t
      - name: '*privdata'
        type: void
      - name: (*free_privdata)(void *)
        type: void
      - name: '*privctx'
        type: void
      - name: '*push_cb'
        type: redisPushFn
      item_type: struct
      name: redisContext
      pos:
        line_end: 296
        line_start: 257
        source_file: /src/hiredis/hiredis.h
    typedefs:
    - item_type: typedef
      name: ssize_t
      pos:
        line_end: 41
        line_start: 41
        source_file: /src/hiredis/hiredis.h
      type: intptr_t
    - item_type: typedef
      name: (redisPushFn)(void *, void *)
      pos:
        line_end: 111
        line_start: 111
        source_file: /src/hiredis/hiredis.h
      type: void
    - item_type: typedef
      name: (redisAsyncPushFn)(struct redisAsyncContext *, void *)
      pos:
        line_end: 112
        line_start: 112
        source_file: /src/hiredis/hiredis.h
      type: void
    - item_type: typedef
      name: redisFD
      pos:
        line_end: 174
        line_start: 174
        source_file: /src/hiredis/hiredis.h
      type: int
    - item_type: typedef
      name: redisFD
      pos:
        line_end: 178
        line_start: 178
        source_file: /src/hiredis/hiredis.h
      type: unsigned long long
    - item_type: typedef
      name: redisFD
      pos:
        line_end: 180
        line_start: 180
        source_file: /src/hiredis/hiredis.h
      type: unsigned long
    union: []
- function_names:
  - assert
  - callbackHash
  - callbackValDup
  - callbackKeyCompare
  - callbackKeyDestructor
  - callbackValDestructor
  - redisAsyncInitialize
  - __redisAsyncCopyError
  - redisAsyncConnectWithOptions
  - redisAsyncConnect
  - redisAsyncConnectBind
  - redisAsyncConnectBindWithReuse
  - redisAsyncConnectUnix
  - redisAsyncSetConnectCallbackImpl
  - redisAsyncSetConnectCallback
  - redisAsyncSetConnectCallbackNC
  - redisAsyncSetDisconnectCallback
  - __redisPushCallback
  - __redisShiftCallback
  - __redisRunCallback
  - __redisRunPushCallback
  - __redisRunConnectCallback
  - __redisRunDisconnectCallback
  - __redisAsyncFree
  - redisAsyncFree
  - __redisAsyncDisconnect
  - redisAsyncDisconnect
  - __redisGetSubscribeCallback
  - redisIsSpontaneousPushReply
  - redisIsSubscribeReply
  - redisProcessCallbacks
  - __redisAsyncHandleConnectFailure
  - __redisAsyncHandleConnect
  - redisAsyncRead
  - redisAsyncHandleRead
  - redisAsyncWrite
  - redisAsyncHandleWrite
  - redisAsyncHandleTimeout
  - nextArgument
  - __redisAsyncCommand
  - redisvAsyncCommand
  - redisAsyncCommand
  - redisAsyncCommandArgv
  - redisAsyncFormattedCommand
  - redisAsyncSetPushCallback
  - redisAsyncSetTimeout
  source_file: /src/hiredis/async.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/hiredis/sdsalloc.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: s_malloc
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/hiredis/sdsalloc.h
      type_or_value: hi_malloc
    - item_type: preproc_def
      name: s_realloc
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/hiredis/sdsalloc.h
      type_or_value: hi_realloc
    - item_type: preproc_def
      name: s_free
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/hiredis/sdsalloc.h
      type_or_value: hi_free
    structs: []
    typedefs: []
    union: []
- function_names:
  - SDS_HDR_VAR
  - SDS_HDR
  - SDS_TYPE_5_LEN
  - sdslen
  - sdsavail
  - sdssetlen
  - sdsinclen
  - sdsalloc
  - sdssetalloc
  source_file: /src/hiredis/sds.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SDS_MAX_PREALLOC
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/hiredis/sds.h
      type_or_value: (1024*1024)
    - item_type: preproc_def
      name: SSIZE_MAX
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/hiredis/sds.h
      type_or_value: INTPTR_MAX
    - item_type: preproc_def
      name: SDS_TYPE_5
      pos:
        line_end: 86
        line_start: 85
        source_file: /src/hiredis/sds.h
      type_or_value: '0'
    - item_type: preproc_def
      name: SDS_TYPE_8
      pos:
        line_end: 87
        line_start: 86
        source_file: /src/hiredis/sds.h
      type_or_value: '1'
    - item_type: preproc_def
      name: SDS_TYPE_16
      pos:
        line_end: 88
        line_start: 87
        source_file: /src/hiredis/sds.h
      type_or_value: '2'
    - item_type: preproc_def
      name: SDS_TYPE_32
      pos:
        line_end: 89
        line_start: 88
        source_file: /src/hiredis/sds.h
      type_or_value: '3'
    - item_type: preproc_def
      name: SDS_TYPE_64
      pos:
        line_end: 90
        line_start: 89
        source_file: /src/hiredis/sds.h
      type_or_value: '4'
    - item_type: preproc_def
      name: SDS_TYPE_MASK
      pos:
        line_end: 91
        line_start: 90
        source_file: /src/hiredis/sds.h
      type_or_value: '7'
    - item_type: preproc_def
      name: SDS_TYPE_BITS
      pos:
        line_end: 92
        line_start: 91
        source_file: /src/hiredis/sds.h
      type_or_value: '3'
    structs:
    - fields:
      - name: flags
        type: unsigned char
      - name: buf[]
        type: char
      item_type: struct
      name: sdshdr5
      pos:
        line_end: 59
        line_start: 56
        source_file: /src/hiredis/sds.h
    - fields:
      - name: len
        type: uint8_t
      - name: alloc
        type: uint8_t
      - name: flags
        type: unsigned char
      - name: buf[]
        type: char
      item_type: struct
      name: sdshdr8
      pos:
        line_end: 65
        line_start: 60
        source_file: /src/hiredis/sds.h
    - fields:
      - name: len
        type: uint16_t
      - name: alloc
        type: uint16_t
      - name: flags
        type: unsigned char
      - name: buf[]
        type: char
      item_type: struct
      name: sdshdr16
      pos:
        line_end: 71
        line_start: 66
        source_file: /src/hiredis/sds.h
    - fields:
      - name: len
        type: uint32_t
      - name: alloc
        type: uint32_t
      - name: flags
        type: unsigned char
      - name: buf[]
        type: char
      item_type: struct
      name: sdshdr32
      pos:
        line_end: 77
        line_start: 72
        source_file: /src/hiredis/sds.h
    - fields:
      - name: len
        type: uint64_t
      - name: alloc
        type: uint64_t
      - name: flags
        type: unsigned char
      - name: buf[]
        type: char
      item_type: struct
      name: sdshdr64
      pos:
        line_end: 83
        line_start: 78
        source_file: /src/hiredis/sds.h
    typedefs:
    - item_type: typedef
      name: ssize_t
      pos:
        line_end: 37
        line_start: 37
        source_file: /src/hiredis/sds.h
      type: intptr_t
    - item_type: typedef
      name: '*sds'
      pos:
        line_end: 52
        line_start: 52
        source_file: /src/hiredis/sds.h
      type: char
    union: []
- function_names:
  - __redisReaderSetError
  - chrtos
  - __redisReaderSetErrorProtocolByte
  - __redisReaderSetErrorOOM
  - readBytes
  - seekNewline
  - string2ll
  - readLine
  - moveToNextTask
  - processLineItem
  - processBulkItem
  - redisReaderGrow
  - processAggregateItem
  - processItem
  - redisReaderCreateWithFunctions
  - redisReaderFree
  - redisReaderFeed
  - redisReaderGetReply
  source_file: /src/hiredis/read.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: REDIS_READER_STACK_SIZE
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/hiredis/read.c
      type_or_value: '9'
    structs: []
    typedefs: []
    union: []
- function_names:
  - dictGenHashFunction
  - _dictReset
  - dictCreate
  - _dictInit
  - dictExpand
  - dictAdd
  - dictReplace
  - dictDelete
  - _dictClear
  - dictRelease
  - dictFind
  - dictInitIterator
  - dictNext
  - _dictExpandIfNeeded
  - _dictNextPower
  - _dictKeyIndex
  source_file: /src/hiredis/dict.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - FFC_VERSION_STRINGIFY_
  - FFC_VERSION_STRINGIFY
  - ffc_debug
  - ffc_debug
  - ffc_get_double_bits
  - ffc_get_float_bits
  - ffc_int_kind_is_signed
  - ffc_get_value_bits
  - ffc_int_value_max
  - ffc_set_value
  - ffc_read_value
  - ffc_get_value_size
  - ffc_count_leading_zeroes
  - ffc_mul_u64
  - ffc_emulu
  - ffc_umul128_generic
  - ffc_full_multiplication
  - ffc_const
  - ffc_is_space
  - ffc_char_to_digit
  - ffc_max_digits_u64
  - ffc_is_integer
  - ffc_min_safe_u64_of_base
  - ffc_strncasecmp3
  - ffc_strncasecmp5
  - ffc_rounds_to_nearest
  - ffc_am_to_float
  - FFC_ASSERT
  - FFC_DEBUG_ASSERT
  - ffc_byteswap
  - ffc_byteswap_32
  - ffc_read8_to_u64
  - ffc_read4_to_u32
  - ffc_simd_read8_to_u64_simdreg
  - ffc_simd_read8_to_u64
  - ffc_simd_read8_to_u64_simdreg
  - ffc_simd_read8_to_u64
  - ffc_parse_eight_digits_unrolled_swar
  - ffc_parse_eight_digits_unrolled
  - ffc_is_made_of_eight_digits_fast
  - ffc_is_made_of_four_digits_fast
  - ffc_parse_four_digits_unrolled
  - ffc_simd_parse_if_eight_digits_unrolled_simd
  - ffc_digit_acc10
  - FFC_DIGIT_ACC10
  - FFC_DIGIT_ACC10
  - ffc_loop_parse_if_eight_digits
  - ffc_parse_options_default
  - ffc_report_parse_error
  - ffc_parse_number_string
  - ffc_parse_infnan
  - ffc_parse_int_string
  - ffc_dump_parsed
  - FFC_TRY
  - ffc_limb_span_index
  - ffc_span_index
  - ffc_sv_extend_unchecked
  - ffc_sv_try_extend
  - ffc_sv_create
  - ffc_sv_index
  - ffc_sv_rindex
  - ffc_sv_push_unchecked
  - ffc_sv_try_push
  - ffc_sv_try_reserve
  - ffc_sv_exists_nonzero_after
  - ffc_sv_normalize
  - ffc_uint64_hi64_1
  - ffc_uint64_hi64_2
  - ffc_uint32_hi64_1
  - ffc_uint32_hi64_2
  - ffc_uint32_hi64_3
  - ffc_bigint_scalar_add
  - ffc_bigint_scalar_mul
  - ffc_bigint_small_add_from
  - ffc_bigint_small_add
  - ffc_bigint_small_mul
  - ffc_bigint_large_add_from
  - ffc_sv_large_add_from_zero
  - ffc_bigint_long_mul
  - ffc_bigint_large_mul
  - ffc_bigint_empty
  - ffc_bigint_make
  - ffc_bigint_hi64
  - ffc_bigint_compare
  - ffc_bigint_shl_bits
  - ffc_bigint_shl_limbs
  - ffc_bigint_shl
  - ffc_bigint_ctlz
  - ffc_bigint_bit_length
  - ffc_bigint_mul
  - ffc_bigint_add
  - ffc_bigint_pow2
  - ffc_bigint_pow5
  - ffc_bigint_pow10
  - ffc_scientific_exponent
  - ffc_to_extended
  - ffc_to_extended_halfway
  - ffc_round_down_impl
  - ffc_round_nearest_tie_even_truncated
  - ffc_round_nearest_tie_even_cmp
  - ffc_round_finish
  - ffc_round_core
  - ffc_round_down
  - ffc_round_tie_even_truncated
  - ffc_round_double_tie_even_cmp
  - ffc_char_eq_zero
  - ffc_skip_zeros
  - ffc_is_truncated
  - ffc_parse_eight_digits
  - ffc_parse_one_digit
  - ffc_add_native
  - ffc_round_up_bigint
  - ffc_parse_mantissa
  - ffc_positive_digit_comp
  - ffc_negative_digit_comp
  - ffc_adjusted_mantissa::ffc_digit_comp
  - ffc_compute_product_approximation
  - ffc_b10_to_b2
  - ffc_compute_float
  - ffc_compute_error_scaled
  - ffc_compute_error
  - ffc_clinger_fast_path_impl
  - ffc_from_chars_advanced
  - ffc_from_chars
  - ffc_from_chars_double_options
  - ffc_from_chars_double
  - ffc_parse_double
  - ffc_parse_double_simple
  - ffc_from_chars_float_options
  - ffc_from_chars_float
  - ffc_parse_float
  - ffc_parse_float_simple
  - ffc_parse_i64
  - ffc_parse_u64
  - ffc_parse_i32
  - ffc_parse_u32
  - ffc_parse_i64_simple
  - ffc_parse_u64_simple
  - ffc_parse_i32_simple
  - ffc_parse_u32_simple
  - ffc_parse_json_number
  source_file: /src/hiredis/ffc.h
  types:
    enum:
    - enumerators:
      - name: FFC_OUTCOME_OK
        value: '0'
      - name: FFC_OUTCOME_INVALID_INPUT
        value: '1'
      - name: FFC_OUTCOME_OUT_OF_RANGE
        value: '2'
      item_type: enum
      name: ffc_outcome_bits
      pos:
        line_end: 143
        line_start: 139
        source_file: /src/hiredis/ffc.h
    - enumerators:
      - name: FFC_FORMAT_FLAG_SCIENTIFIC
        value: 1ULL << 0
      - name: FFC_FORMAT_FLAG_NO_INFNAN
        value: 1ULL << 4
      - name: FFC_FORMAT_FLAG_BASIC_JSON
        value: 1ULL << 5
      - name: FFC_FORMAT_FLAG_HEX
        value: 1ULL << 3
      - name: FFC_FORMAT_FLAG_FIXED
        value: 1ULL << 2
      - name: FFC_FORMAT_FLAG_BASIC_FORTRAN
        value: 1ULL << 6
      - name: FFC_FORMAT_FLAG_ALLOW_LEADING_PLUS
        value: 1ULL << 7
      - name: FFC_FORMAT_FLAG_SKIP_WHITE_SPACE
        value: 1ULL << 8
      - name: FFC_PRESET_GENERAL
        value: FFC_FORMAT_FLAG_FIXED | FFC_FORMAT_FLAG_SCIENTIFIC
      - name: FFC_PRESET_JSON
        value: "FFC_FORMAT_FLAG_BASIC_JSON | \n                       FFC_PRESET_GENERAL
          | \n                       FFC_FORMAT_FLAG_NO_INFNAN"
      - name: FFC_PRESET_JSON_OR_INFNAN
        value: "FFC_FORMAT_FLAG_BASIC_JSON | \n                                 FFC_PRESET_GENERAL"
      - name: FFC_PRESET_FORTRAN
        value: "FFC_FORMAT_FLAG_BASIC_FORTRAN | \n                          FFC_PRESET_GENERAL"
      item_type: enum
      name: ffc_format_bits
      pos:
        line_end: 175
        line_start: 153
        source_file: /src/hiredis/ffc.h
    - enumerators:
      - name: FFC_PARSE_OUTCOME_NO_ERROR
        value: '0'
      - name: FFC_PARSE_OUTCOME_JSON_LEADING_ZEROS_IN_INTEGER_PART
        value: '3'
      - name: FFC_PARSE_OUTCOME_MISSING_INTEGER_OR_DOT_AFTER_SIGN
        value: '2'
      - name: FFC_PARSE_OUTCOME_JSON_NO_DIGITS_IN_INTEGER_PART
        value: '4'
      - name: FFC_PARSE_OUTCOME_JSON_MISSING_INTEGER_AFTER_SIGN
        value: '1'
      - name: FFC_PARSE_OUTCOME_JSON_NO_DIGITS_IN_FRACTIONAL_PART
        value: '5'
      - name: FFC_PARSE_OUTCOME_NO_DIGITS_IN_MANTISSA
        value: '6'
      - name: FFC_PARSE_OUTCOME_MISSING_EXPONENTIAL_PART
        value: '7'
      item_type: enum
      name: ffc_parse_outcome
      pos:
        line_end: 203
        line_start: 186
        source_file: /src/hiredis/ffc.h
    - enumerators:
      - name: FFC_JSON_NUM_KIND_INT64
        value: '0'
      - name: FFC_JSON_NUM_KIND_DOUBLE
        value: '1'
      item_type: enum
      name: ffc_json_number_kind_bits
      pos:
        line_end: 293
        line_start: 290
        source_file: /src/hiredis/ffc.h
    - enumerators:
      - name: FFC_VALUE_KIND_FLOAT
        value: '0'
      - name: FFC_VALUE_KIND_DOUBLE
        value: '1'
      item_type: enum
      name: ffc_value_kind_bits
      pos:
        line_end: 365
        line_start: 362
        source_file: /src/hiredis/ffc.h
    - enumerators:
      - name: FFC_INT_KIND_S64
        value: '0'
      - name: FFC_INT_KIND_U32
        value: '3'
      - name: FFC_INT_KIND_U64
        value: '2'
      - name: FFC_INT_KIND_S32
        value: '1'
      item_type: enum
      name: ffc_int_kind_bits
      pos:
        line_end: 380
        line_start: 375
        source_file: /src/hiredis/ffc.h
    preproc_defs:
    - item_type: preproc_def
      name: FFC_VERSION_YEAR
      pos:
        line_end: 125
        line_start: 124
        source_file: /src/hiredis/ffc.h
      type_or_value: '26'
    - item_type: preproc_def
      name: FFC_VERSION_MONTH
      pos:
        line_end: 126
        line_start: 125
        source_file: /src/hiredis/ffc.h
      type_or_value: '04'
    - item_type: preproc_def
      name: FFC_VERSION_BUILD
      pos:
        line_end: 127
        line_start: 126
        source_file: /src/hiredis/ffc.h
      type_or_value: '01'
    - item_type: preproc_def
      name: FFC_VERSION
      pos:
        line_end: 128
        line_start: 127
        source_file: /src/hiredis/ffc.h
      type_or_value: ((FFC_VERSION_YEAR << 16) | (FFC_VERSION_MONTH << 8) | (FFC_VERSION_BUILD))
    - item_type: preproc_def
      name: FFC_VERSION_STRING
      pos:
        line_end: 134
        line_start: 130
        source_file: /src/hiredis/ffc.h
      type_or_value: "FFC_VERSION_STRINGIFY(FFC_VERSION_YEAR) \".\" \\\n  FFC_VERSION_STRINGIFY(FFC_VERSION_MONTH)
        \".\" \\\n  FFC_VERSION_STRINGIFY(FFC_VERSION_BUILD)"
    - item_type: preproc_def
      name: FFC_IMPL_INLINE
      pos:
        line_end: 244
        line_start: 243
        source_file: /src/hiredis/ffc.h
      type_or_value: __attribute__((always_inline)) inline
    - item_type: preproc_def
      name: FFC_IMPL_INLINE
      pos:
        line_end: 246
        line_start: 245
        source_file: /src/hiredis/ffc.h
      type_or_value: __forceinline
    - item_type: preproc_def
      name: FFC_IMPL_INLINE
      pos:
        line_end: 248
        line_start: 247
        source_file: /src/hiredis/ffc.h
      type_or_value: inline
    - item_type: preproc_def
      name: ffc_internal
      pos:
        line_end: 319
        line_start: 318
        source_file: /src/hiredis/ffc.h
      type_or_value: static
    - item_type: preproc_def
      name: ffc_inline
      pos:
        line_end: 323
        line_start: 322
        source_file: /src/hiredis/ffc.h
      type_or_value: __forceinline
    - item_type: preproc_def
      name: ffc_inline
      pos:
        line_end: 325
        line_start: 324
        source_file: /src/hiredis/ffc.h
      type_or_value: __attribute__((always_inline)) inline
    - item_type: preproc_def
      name: ffc_inline
      pos:
        line_end: 327
        line_start: 326
        source_file: /src/hiredis/ffc.h
      type_or_value: inline
    - item_type: preproc_def
      name: FFC_INVALID_AM_BIAS
      pos:
        line_end: 431
        line_start: 430
        source_file: /src/hiredis/ffc.h
      type_or_value: ((int32_t)-0x8000)
    - item_type: preproc_def
      name: FFC_64BIT
      pos:
        line_end: 441
        line_start: 440
        source_file: /src/hiredis/ffc.h
      type_or_value: '1'
    - item_type: preproc_def
      name: FFC_32BIT
      pos:
        line_end: 446
        line_start: 445
        source_file: /src/hiredis/ffc.h
      type_or_value: '1'
    - item_type: preproc_def
      name: FFC_32BIT
      pos:
        line_end: 455
        line_start: 454
        source_file: /src/hiredis/ffc.h
      type_or_value: '1'
    - item_type: preproc_def
      name: FFC_64BIT
      pos:
        line_end: 457
        line_start: 456
        source_file: /src/hiredis/ffc.h
      type_or_value: '1'
    - item_type: preproc_def
      name: FFC_VISUAL_STUDIO
      pos:
        line_end: 470
        line_start: 469
        source_file: /src/hiredis/ffc.h
      type_or_value: '1'
    - item_type: preproc_def
      name: FFC_IS_BIG_ENDIAN
      pos:
        line_end: 475
        line_start: 474
        source_file: /src/hiredis/ffc.h
      type_or_value: (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
    - item_type: preproc_def
      name: FFC_IS_BIG_ENDIAN
      pos:
        line_end: 477
        line_start: 476
        source_file: /src/hiredis/ffc.h
      type_or_value: '0'
    - item_type: preproc_def
      name: FFC_IS_BIG_ENDIAN
      pos:
        line_end: 495
        line_start: 494
        source_file: /src/hiredis/ffc.h
      type_or_value: '0'
    - item_type: preproc_def
      name: FFC_IS_BIG_ENDIAN
      pos:
        line_end: 500
        line_start: 499
        source_file: /src/hiredis/ffc.h
      type_or_value: '0'
    - item_type: preproc_def
      name: FFC_IS_BIG_ENDIAN
      pos:
        line_end: 504
        line_start: 503
        source_file: /src/hiredis/ffc.h
      type_or_value: '0'
    - item_type: preproc_def
      name: FFC_IS_BIG_ENDIAN
      pos:
        line_end: 506
        line_start: 505
        source_file: /src/hiredis/ffc.h
      type_or_value: '1'
    - item_type: preproc_def
      name: FFC_SSE2
      pos:
        line_end: 514
        line_start: 513
        source_file: /src/hiredis/ffc.h
      type_or_value: '1'
    - item_type: preproc_def
      name: FFC_NEON
      pos:
        line_end: 518
        line_start: 517
        source_file: /src/hiredis/ffc.h
      type_or_value: '1'
    - item_type: preproc_def
      name: FFC_HAS_SIMD
      pos:
        line_end: 522
        line_start: 521
        source_file: /src/hiredis/ffc.h
      type_or_value: '1'
    - item_type: preproc_def
      name: FFC_SIMD_DISABLE_WARNINGS
      pos:
        line_end: 539
        line_start: 536
        source_file: /src/hiredis/ffc.h
      type_or_value: "_Pragma(\"GCC diagnostic push\")                                               \\\n
        \     _Pragma(\"GCC diagnostic ignored \\\"-Wcast-align\\\"\")"
    - item_type: preproc_def
      name: FFC_SIMD_RESTORE_WARNINGS
      pos:
        line_end: 545
        line_start: 544
        source_file: /src/hiredis/ffc.h
      type_or_value: _Pragma("GCC diagnostic pop")
    - item_type: preproc_def
      name: FFC_DOUBLE_SMALLEST_POWER_OF_10
      pos:
        line_end: 634
        line_start: 633
        source_file: /src/hiredis/ffc.h
      type_or_value: '-342'
    - item_type: preproc_def
      name: FFC_DOUBLE_LARGEST_POWER_OF_10
      pos:
        line_end: 635
        line_start: 634
        source_file: /src/hiredis/ffc.h
      type_or_value: '308'
    - item_type: preproc_def
      name: FFC_DOUBLE_SIGN_INDEX
      pos:
        line_end: 636
        line_start: 635
        source_file: /src/hiredis/ffc.h
      type_or_value: '63'
    - item_type: preproc_def
      name: FFC_DOUBLE_INFINITE_POWER
      pos:
        line_end: 637
        line_start: 636
        source_file: /src/hiredis/ffc.h
      type_or_value: '0x7FF'
    - item_type: preproc_def
      name: FFC_DOUBLE_MANTISSA_EXPLICIT_BITS
      pos:
        line_end: 638
        line_start: 637
        source_file: /src/hiredis/ffc.h
      type_or_value: '52'
    - item_type: preproc_def
      name: FFC_DOUBLE_MINIMUM_EXPONENT
      pos:
        line_end: 639
        line_start: 638
        source_file: /src/hiredis/ffc.h
      type_or_value: '-1023'
    - item_type: preproc_def
      name: FFC_DOUBLE_MIN_EXPONENT_ROUND_TO_EVEN
      pos:
        line_end: 640
        line_start: 639
        source_file: /src/hiredis/ffc.h
      type_or_value: '-4'
    - item_type: preproc_def
      name: FFC_DOUBLE_MAX_EXPONENT_ROUND_TO_EVEN
      pos:
        line_end: 641
        line_start: 640
        source_file: /src/hiredis/ffc.h
      type_or_value: '23'
    - item_type: preproc_def
      name: FFC_DOUBLE_MAX_EXPONENT_FAST_PATH
      pos:
        line_end: 642
        line_start: 641
        source_file: /src/hiredis/ffc.h
      type_or_value: '22'
    - item_type: preproc_def
      name: FFC_DOUBLE_MAX_MANTISSA_FAST_PATH
      pos:
        line_end: 643
        line_start: 642
        source_file: /src/hiredis/ffc.h
      type_or_value: ((uint64_t)(2) << FFC_DOUBLE_MANTISSA_EXPLICIT_BITS)
    - item_type: preproc_def
      name: FFC_DOUBLE_EXPONENT_MASK
      pos:
        line_end: 644
        line_start: 643
        source_file: /src/hiredis/ffc.h
      type_or_value: '0x7FF0000000000000'
    - item_type: preproc_def
      name: FFC_DOUBLE_MANTISSA_MASK
      pos:
        line_end: 645
        line_start: 644
        source_file: /src/hiredis/ffc.h
      type_or_value: '0x000FFFFFFFFFFFFF'
    - item_type: preproc_def
      name: FFC_DOUBLE_HIDDEN_BIT_MASK
      pos:
        line_end: 646
        line_start: 645
        source_file: /src/hiredis/ffc.h
      type_or_value: '0x0010000000000000'
    - item_type: preproc_def
      name: FFC_DOUBLE_MAX_DIGITS
      pos:
        line_end: 647
        line_start: 646
        source_file: /src/hiredis/ffc.h
      type_or_value: '769'
    - item_type: preproc_def
      name: FFC_FLOAT_SMALLEST_POWER_OF_10
      pos:
        line_end: 649
        line_start: 648
        source_file: /src/hiredis/ffc.h
      type_or_value: '-64'
    - item_type: preproc_def
      name: FFC_FLOAT_LARGEST_POWER_OF_10
      pos:
        line_end: 650
        line_start: 649
        source_file: /src/hiredis/ffc.h
      type_or_value: '38'
    - item_type: preproc_def
      name: FFC_FLOAT_SIGN_INDEX
      pos:
        line_end: 651
        line_start: 650
        source_file: /src/hiredis/ffc.h
      type_or_value: '31'
    - item_type: preproc_def
      name: FFC_FLOAT_INFINITE_POWER
      pos:
        line_end: 652
        line_start: 651
        source_file: /src/hiredis/ffc.h
      type_or_value: '0xFF'
    - item_type: preproc_def
      name: FFC_FLOAT_MANTISSA_EXPLICIT_BITS
      pos:
        line_end: 653
        line_start: 652
        source_file: /src/hiredis/ffc.h
      type_or_value: '23'
    - item_type: preproc_def
      name: FFC_FLOAT_MINIMUM_EXPONENT
      pos:
        line_end: 654
        line_start: 653
        source_file: /src/hiredis/ffc.h
      type_or_value: '-127'
    - item_type: preproc_def
      name: FFC_FLOAT_MIN_EXPONENT_ROUND_TO_EVEN
      pos:
        line_end: 655
        line_start: 654
        source_file: /src/hiredis/ffc.h
      type_or_value: '-17'
    - item_type: preproc_def
      name: FFC_FLOAT_MAX_EXPONENT_ROUND_TO_EVEN
      pos:
        line_end: 656
        line_start: 655
        source_file: /src/hiredis/ffc.h
      type_or_value: '10'
    - item_type: preproc_def
      name: FFC_FLOAT_MAX_EXPONENT_FAST_PATH
      pos:
        line_end: 657
        line_start: 656
        source_file: /src/hiredis/ffc.h
      type_or_value: '10'
    - item_type: preproc_def
      name: FFC_FLOAT_MAX_MANTISSA_FAST_PATH
      pos:
        line_end: 658
        line_start: 657
        source_file: /src/hiredis/ffc.h
      type_or_value: ((uint64_t)(2) << FFC_FLOAT_MANTISSA_EXPLICIT_BITS)
    - item_type: preproc_def
      name: FFC_FLOAT_EXPONENT_MASK
      pos:
        line_end: 659
        line_start: 658
        source_file: /src/hiredis/ffc.h
      type_or_value: '0x7F800000'
    - item_type: preproc_def
      name: FFC_FLOAT_MANTISSA_MASK
      pos:
        line_end: 660
        line_start: 659
        source_file: /src/hiredis/ffc.h
      type_or_value: '0x007FFFFF'
    - item_type: preproc_def
      name: FFC_FLOAT_HIDDEN_BIT_MASK
      pos:
        line_end: 661
        line_start: 660
        source_file: /src/hiredis/ffc.h
      type_or_value: '0x00800000'
    - item_type: preproc_def
      name: FFC_FLOAT_MAX_DIGITS
      pos:
        line_end: 662
        line_start: 661
        source_file: /src/hiredis/ffc.h
      type_or_value: '114'
    - item_type: preproc_def
      name: FFC_DOUBLE_MIN_EXPONENT_FAST_PATH
      pos:
        line_end: 665
        line_start: 664
        source_file: /src/hiredis/ffc.h
      type_or_value: '0'
    - item_type: preproc_def
      name: FFC_FLOAT_MIN_EXPONENT_FAST_PATH
      pos:
        line_end: 666
        line_start: 665
        source_file: /src/hiredis/ffc.h
      type_or_value: '0'
    - item_type: preproc_def
      name: FFC_DOUBLE_MIN_EXPONENT_FAST_PATH
      pos:
        line_end: 668
        line_start: 667
        source_file: /src/hiredis/ffc.h
      type_or_value: '-22'
    - item_type: preproc_def
      name: FFC_FLOAT_MIN_EXPONENT_FAST_PATH
      pos:
        line_end: 669
        line_start: 668
        source_file: /src/hiredis/ffc.h
      type_or_value: '-10'
    - item_type: preproc_def
      name: FFC_POWERS_OF_5_NUMBER_OF_ENTRIES
      pos:
        line_end: 674
        line_start: 673
        source_file: /src/hiredis/ffc.h
      type_or_value: (2 * (FFC_DOUBLE_LARGEST_POWER_OF_10 - FFC_DOUBLE_SMALLEST_POWER_OF_10
        + 1))
    - item_type: preproc_def
      name: FFC_55555
      pos:
        line_end: 927
        line_start: 926
        source_file: /src/hiredis/ffc.h
      type_or_value: (5LL * 5LL * 5LL * 5LL * 5LL)
    - item_type: preproc_def
      name: FFC_64BIT_LIMB
      pos:
        line_end: 1732
        line_start: 1731
        source_file: /src/hiredis/ffc.h
      type_or_value: '1'
    - item_type: preproc_def
      name: FFC_LIMB_BITS
      pos:
        line_end: 1734
        line_start: 1733
        source_file: /src/hiredis/ffc.h
      type_or_value: '64'
    - item_type: preproc_def
      name: FFC_LIMB_BITS
      pos:
        line_end: 1738
        line_start: 1737
        source_file: /src/hiredis/ffc.h
      type_or_value: '32'
    - item_type: preproc_def
      name: FFC_BIGINT_BITS
      pos:
        line_end: 1754
        line_start: 1753
        source_file: /src/hiredis/ffc.h
      type_or_value: '4000'
    - item_type: preproc_def
      name: SV_LIMB_COUNT
      pos:
        line_end: 1760
        line_start: 1759
        source_file: /src/hiredis/ffc.h
      type_or_value: FFC_BIGINT_BITS / FFC_LIMB_BITS
    - item_type: preproc_def
      name: FFC_INT_CMP_ZEROS_1
      pos:
        line_end: 2579
        line_start: 2578
        source_file: /src/hiredis/ffc.h
      type_or_value: 0x3030303030303030ULL
    - item_type: preproc_def
      name: FFC_INT_CMP_LEN_1
      pos:
        line_end: 2580
        line_start: 2579
        source_file: /src/hiredis/ffc.h
      type_or_value: '8'
    - item_type: preproc_def
      name: FFC_INT_CMP_ZEROS_2
      pos:
        line_end: 2583
        line_start: 2582
        source_file: /src/hiredis/ffc.h
      type_or_value: 0x0030003000300030ULL
    - item_type: preproc_def
      name: FFC_INT_CMP_LEN_2
      pos:
        line_end: 2584
        line_start: 2583
        source_file: /src/hiredis/ffc.h
      type_or_value: '4'
    - item_type: preproc_def
      name: FFC_INT_CMP_ZEROS_4
      pos:
        line_end: 2587
        line_start: 2586
        source_file: /src/hiredis/ffc.h
      type_or_value: 0x0000003000000030ULL
    - item_type: preproc_def
      name: FFC_INT_CMP_LEN_4
      pos:
        line_end: 2588
        line_start: 2587
        source_file: /src/hiredis/ffc.h
      type_or_value: '2'
    structs:
    - fields:
      - name: '*ptr'
        type: char
      - name: outcome
        type: ffc_outcome
      item_type: struct
      name: ffc_result
      pos:
        line_end: 150
        line_start: 145
        source_file: /src/hiredis/ffc.h
    - fields:
      - name: format
        type: ffc_format
      - name: decimal_point
        type: char
      item_type: struct
      name: ffc_parse_options
      pos:
        line_end: 182
        line_start: 177
        source_file: /src/hiredis/ffc.h
    - fields:
      - name: kind
        type: ffc_json_number_kind
      - name: value
        type: "union {\n    int64_t i64;\n    double  f64;\n  }"
      item_type: struct
      name: ffc_json_number
      pos:
        line_end: 301
        line_start: 295
        source_file: /src/hiredis/ffc.h
    - fields:
      - name: mantissa
        type: uint64_t
      - name: power2
        type: int32_t
      item_type: struct
      name: ffc_adjusted_mantissa
      pos:
        line_end: 419
        line_start: 416
        source_file: /src/hiredis/ffc.h
    - fields:
      - name: low
        type: uint64_t
      - name: high
        type: uint64_t
      item_type: struct
      name: ffc_u128
      pos:
        line_end: 566
        line_start: 566
        source_file: /src/hiredis/ffc.h
    - fields:
      - name: exponent
        type: int64_t
      - name: mantissa
        type: uint64_t
      - name: '*lastmatch'
        type: char
      - name: negative
        type: bool
      - name: valid
        type: bool
      - name: too_many_digits
        type: bool
      - name: '*    int_part_start'
        type: char
      - name: int_part_len
        type: size_t
      - name: '*    fraction_part_start'
        type: char
      - name: fraction_part_len
        type: size_t
      - name: outcome
        type: ffc_parse_outcome
      item_type: struct
      name: ffc_parsed
      pos:
        line_end: 1246
        line_start: 1232
        source_file: /src/hiredis/ffc.h
    - fields:
      - name: '* ptr'
        type: ffc_bigint_limb
      - name: len
        type: size_t
      item_type: struct
      name: ffc_bigint_limb_span
      pos:
        line_end: 1740
        line_start: 1740
        source_file: /src/hiredis/ffc.h
    - fields:
      - name: data[SV_LIMB_COUNT]
        type: ffc_bigint_limb
      - name: len
        type: uint16_t
      item_type: struct
      name: ffc_sv
      pos:
        line_end: 1765
        line_start: 1761
        source_file: /src/hiredis/ffc.h
    - fields:
      - name: vec
        type: ffc_sv
      item_type: struct
      name: ffc_bigint
      pos:
        line_end: 2133
        line_start: 2130
        source_file: /src/hiredis/ffc.h
    typedefs:
    - item_type: typedef
      name: ffc_outcome
      pos:
        line_end: 138
        line_start: 138
        source_file: /src/hiredis/ffc.h
      type: uint32_t
    - item_type: typedef
      name: ffc_format
      pos:
        line_end: 152
        line_start: 152
        source_file: /src/hiredis/ffc.h
      type: uint64_t
    - item_type: typedef
      name: ffc_json_number_kind
      pos:
        line_end: 289
        line_start: 289
        source_file: /src/hiredis/ffc.h
      type: uint32_t
    - item_type: typedef
      name: ffc_value_kind
      pos:
        line_end: 361
        line_start: 361
        source_file: /src/hiredis/ffc.h
      type: uint8_t
    - item_type: typedef
      name: ffc_int_kind
      pos:
        line_end: 374
        line_start: 374
        source_file: /src/hiredis/ffc.h
      type: uint8_t
    - item_type: typedef
      name: ffc_bigint_limb
      pos:
        line_end: 1732
        line_start: 1732
        source_file: /src/hiredis/ffc.h
      type: uint64_t
    - item_type: typedef
      name: ffc_bigint_limb
      pos:
        line_end: 1736
        line_start: 1736
        source_file: /src/hiredis/ffc.h
      type: uint32_t
    union:
    - fields:
      - name: d
        type: double
      - name: f
        type: float
      item_type: union
      name: ffc_value
      pos:
        line_end: 354
        line_start: 351
        source_file: /src/hiredis/ffc.h
    - fields:
      - name: di
        type: uint64_t
      - name: fi
        type: uint32_t
      item_type: union
      name: ffc_value_bits
      pos:
        line_end: 359
        line_start: 356
        source_file: /src/hiredis/ffc.h
    - fields:
      - name: s64
        type: int64_t
      - name: s32
        type: int32_t
      - name: u64
        type: uint64_t
      - name: u32
        type: uint32_t
      item_type: union
      name: ffc_int_value
      pos:
        line_end: 372
        line_start: 367
        source_file: /src/hiredis/ffc.h
- function_names: []
  source_file: /src/hiredis/hiredis_ssl.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: REDIS_SSL_VERIFY_NONE
      pos:
        line_end: 70
        line_start: 69
        source_file: /src/hiredis/hiredis_ssl.h
      type_or_value: '0x00'
    - item_type: preproc_def
      name: REDIS_SSL_VERIFY_PEER
      pos:
        line_end: 71
        line_start: 70
        source_file: /src/hiredis/hiredis_ssl.h
      type_or_value: '0x01'
    - item_type: preproc_def
      name: REDIS_SSL_VERIFY_FAIL_IF_NO_PEER_CERT
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/hiredis/hiredis_ssl.h
      type_or_value: '0x02'
    - item_type: preproc_def
      name: REDIS_SSL_VERIFY_CLIENT_ONCE
      pos:
        line_end: 73
        line_start: 72
        source_file: /src/hiredis/hiredis_ssl.h
      type_or_value: '0x04'
    - item_type: preproc_def
      name: REDIS_SSL_VERIFY_POST_HANDSHAKE
      pos:
        line_end: 74
        line_start: 73
        source_file: /src/hiredis/hiredis_ssl.h
      type_or_value: '0x08'
    structs:
    - fields:
      - name: '*cacert_filename'
        type: char
      - name: '*capath'
        type: char
      - name: '*cert_filename'
        type: char
      - name: '*private_key_filename'
        type: char
      - name: '*server_name'
        type: char
      - name: verify_mode
        type: int
      item_type: struct
      name: redisSSLOptions
      pos:
        line_end: 83
        line_start: 76
        source_file: /src/hiredis/hiredis_ssl.h
    typedefs:
    - item_type: typedef
      name: redisSSLContext
      pos:
        line_end: 46
        line_start: 46
        source_file: /src/hiredis/hiredis_ssl.h
      type: redisSSLContext
    union: []
- function_names:
  - _EL_ADD_READ
  - _EL_DEL_READ
  - _EL_ADD_WRITE
  - _EL_DEL_WRITE
  - _EL_CLEANUP
  - refreshTimeout
  - REDIS_TIMER_ISSET
  - REDIS_EL_TIMER
  source_file: /src/hiredis/async_private.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/hiredis/fmacros.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: _XOPEN_SOURCE
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/hiredis/fmacros.h
      type_or_value: '600'
    - item_type: preproc_def
      name: _POSIX_C_SOURCE
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/hiredis/fmacros.h
      type_or_value: 200112L
    structs: []
    typedefs: []
    union: []
- function_names:
  - getaddrinfo
  - gai_strerror
  - freeaddrinfo
  - socket
  - ioctl
  - bind
  - connect
  - getsockopt
  - setsockopt
  - close
  - recv
  - send
  - poll
  source_file: /src/hiredis/sockcompat.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: _WIN32_WINNT
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/hiredis/sockcompat.h
      type_or_value: '0x0600 '
    structs: []
    typedefs:
    - item_type: typedef
      name: ssize_t
      pos:
        line_end: 55
        line_start: 55
        source_file: /src/hiredis/sockcompat.h
      type: intptr_t
    - item_type: typedef
      name: nfds_t
      pos:
        line_end: 71
        line_start: 71
        source_file: /src/hiredis/sockcompat.h
      type: ULONG
    union: []
- function_names: []
  source_file: /src/hiredis/net.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - va_copy
  - c99_vsnprintf
  - c99_snprintf
  - strerror_r
  source_file: /src/hiredis/win32.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: inline
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/hiredis/win32.h
      type_or_value: __inline
    - item_type: preproc_def
      name: strcasecmp
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/hiredis/win32.h
      type_or_value: stricmp
    - item_type: preproc_def
      name: strncasecmp
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/hiredis/win32.h
      type_or_value: strnicmp
    - item_type: preproc_def
      name: snprintf
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/hiredis/win32.h
      type_or_value: c99_snprintf
    structs: []
    typedefs: []
    union: []
- function_names:
  - sslLockInit
  - sslLockAcquire
  - sslLockRelease
  - sslLockInit
  - sslLockAcquire
  - sslLockRelease
  - opensslDoLock
  - initOpensslLocks
  - redisInitOpenSSL
  - redisSSLContextGetError
  - redisFreeSSLContext
  - redisCreateSSLContext
  - redisCreateSSLContextWithOptions
  - redisSSLConnect
  - redisInitiateSSL
  - redisInitiateSSLWithContext
  - maybeCheckWant
  - redisSSLFree
  - redisSSLRead
  - redisSSLWrite
  - redisSSLAsyncRead
  - redisSSLAsyncWrite
  source_file: /src/hiredis/ssl.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: OPENSSL_1_1_0
      pos:
        line_end: 62
        line_start: 61
        source_file: /src/hiredis/ssl.c
      type_or_value: 0x10100000L
    structs:
    - fields:
      - name: '*ssl_ctx'
        type: SSL_CTX
      - name: '*server_name'
        type: char
      item_type: struct
      name: redisSSLContext
      pos:
        line_end: 71
        line_start: 65
        source_file: /src/hiredis/ssl.c
    - fields:
      - name: '*ssl'
        type: SSL
      - name: lastLen
        type: size_t
      - name: wantRead
        type: int
      - name: pendingWrite
        type: int
      item_type: struct
      name: redisSSL
      pos:
        line_end: 94
        line_start: 74
        source_file: /src/hiredis/ssl.c
    typedefs:
    - item_type: typedef
      name: sslLockType
      pos:
        line_end: 110
        line_start: 110
        source_file: /src/hiredis/ssl.c
      type: CRITICAL_SECTION
    - item_type: typedef
      name: sslLockType
      pos:
        line_end: 121
        line_start: 121
        source_file: /src/hiredis/ssl.c
      type: pthread_mutex_t
    union: []
- function_names:
  - redisNetClose
  - redisNetRead
  - redisNetWrite
  - __redisSetErrorFromErrno
  - redisSetReuseAddr
  - redisCreateSocket
  - redisSetBlocking
  - redisKeepAlive
  - redisSetTcpNoDelay
  - redisContextSetTcpUserTimeout
  - redisContextTimeoutMsec
  - redisPollMillis
  - redisContextWaitReady
  - redisCheckConnectDone
  - redisCheckSocketError
  - redisContextSetTimeout
  - redisContextUpdateConnectTimeout
  - redisContextUpdateCommandTimeout
  - _redisContextConnectTcp
  - redisContextConnectTcp
  - redisContextConnectBindTcp
  - redisContextConnectUnix
  source_file: /src/hiredis/net.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: __MAX_MSEC
      pos:
        line_end: 262
        line_start: 261
        source_file: /src/hiredis/net.c
      type_or_value: (((LONG_MAX) - 999) / 1000)
    structs: []
    typedefs: []
    union: []
- function_names:
  - hiredisSetAllocators
  - hiredisResetAllocators
  - hi_malloc
  - hi_calloc
  - hi_realloc
  - hi_strdup
  - hi_free
  source_file: /src/hiredis/alloc.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - createReplyObject
  - freeReplyObject
  - createStringObject
  - createArrayObject
  - createIntegerObject
  - createDoubleObject
  - createNilObject
  - createBoolObject
  - countDigits
  - bulklen
  - redisvFormatCommand
  - redisFormatCommand
  - redisFormatSdsCommandArgv
  - redisFreeSdsCommand
  - redisFormatCommandArgv
  - redisFreeCommand
  - __redisSetError
  - redisReaderCreate
  - redisPushAutoFree
  - redisContextInit
  - redisFree
  - redisFreeKeepFd
  - redisReconnect
  - redisConnectWithOptions
  - redisConnect
  - redisConnectWithTimeout
  - redisConnectNonBlock
  - redisConnectBindNonBlock
  - redisConnectBindNonBlockWithReuse
  - redisConnectUnix
  - redisConnectUnixWithTimeout
  - redisConnectUnixNonBlock
  - redisConnectFd
  - redisSetTimeout
  - redisEnableKeepAliveWithInterval
  - redisEnableKeepAlive
  - redisSetTcpUserTimeout
  - redisSetPushCallback
  - redisBufferRead
  - redisBufferWrite
  - redisHandledPushReply
  - redisGetReplyFromReader
  - redisNextInBandReplyFromReader
  - redisGetReply
  - __redisAppendCommand
  - redisAppendFormattedCommand
  - redisvAppendCommand
  - redisAppendCommand
  - redisAppendCommandArgv
  - __redisBlockForReply
  - redisvCommand
  - redisCommand
  - redisCommandArgv
  source_file: /src/hiredis/hiredis.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - freeRedisRunLoop
  - redisMacOSAddRead
  - redisMacOSDelRead
  - redisMacOSAddWrite
  - redisMacOSDelWrite
  - redisMacOSCleanup
  - redisMacOSAsyncCallback
  - redisMacOSAttach
  source_file: /src/hiredis/adapters/macosx.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*context'
        type: redisAsyncContext
      - name: socketRef
        type: CFSocketRef
      - name: sourceRef
        type: CFRunLoopSourceRef
      item_type: struct
      name: RedisRunLoop
      pos:
        line_end: 45
        line_start: 41
        source_file: /src/hiredis/adapters/macosx.h
    typedefs: []
    union: []
- function_names:
  - redis_source_add_read
  - redis_source_del_read
  - redis_source_add_write
  - redis_source_del_write
  - redis_source_cleanup
  - redis_source_prepare
  - redis_source_check
  - redis_source_dispatch
  - redis_source_finalize
  - redis_source_new
  source_file: /src/hiredis/adapters/glib.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: source
        type: GSource
      - name: '*ac'
        type: redisAsyncContext
      - name: poll_fd
        type: GPollFD
      item_type: struct
      name: RedisSource
      pos:
        line_end: 13
        line_start: 8
        source_file: /src/hiredis/adapters/glib.h
    typedefs: []
    union: []
- function_names:
  - redisModuleReadEvent
  - redisModuleWriteEvent
  - redisModuleAddRead
  - redisModuleDelRead
  - redisModuleAddWrite
  - redisModuleDelWrite
  - redisModuleStopTimer
  - redisModuleCleanup
  - redisModuleTimeout
  - redisModuleSetTimeout
  - redisModuleCompatibilityCheck
  - redisModuleAttach
  source_file: /src/hiredis/adapters/redismoduleapi.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*context'
        type: redisAsyncContext
      - name: '*module_ctx'
        type: RedisModuleCtx
      - name: fd
        type: int
      - name: reading
        type: int
      - name: timer_active
        type: int
      - name: timer_id
        type: RedisModuleTimerID
      item_type: struct
      name: redisModuleEvents
      pos:
        line_end: 17
        line_start: 10
        source_file: /src/hiredis/adapters/redismoduleapi.h
    typedefs: []
    union: []
- function_names:
  - redisLibsdeventDestroy
  - redisLibsdeventTimeoutHandler
  - redisLibsdeventHandler
  - CHECK_DELETED
  - redisLibsdeventAddRead
  - redisLibsdeventDelRead
  - redisLibsdeventAddWrite
  - redisLibsdeventDelWrite
  - redisLibsdeventCleanup
  - redisLibsdeventSetTimeout
  - redisLibsdeventAttach
  source_file: /src/hiredis/adapters/libsdevent.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: REDIS_LIBSDEVENT_DELETED
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/hiredis/adapters/libsdevent.h
      type_or_value: '0x01'
    - item_type: preproc_def
      name: REDIS_LIBSDEVENT_ENTERED
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/hiredis/adapters/libsdevent.h
      type_or_value: '0x02'
    structs:
    - fields:
      - name: '*context'
        type: redisAsyncContext
      - name: '*event'
        type: struct sd_event
      - name: '*fdSource'
        type: struct sd_event_source
      - name: '*timerSource'
        type: struct sd_event_source
      - name: fd
        type: int
      - name: flags
        type: short
      - name: state
        type: short
      item_type: struct
      name: redisLibsdeventEvents
      pos:
        line_end: 17
        line_start: 9
        source_file: /src/hiredis/adapters/libsdevent.h
    typedefs: []
    union: []
- function_names:
  - redisIvykisReadEvent
  - redisIvykisWriteEvent
  - redisIvykisAddRead
  - redisIvykisDelRead
  - redisIvykisAddWrite
  - redisIvykisDelWrite
  - redisIvykisCleanup
  - redisIvykisAttach
  source_file: /src/hiredis/adapters/ivykis.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*context'
        type: redisAsyncContext
      - name: fd
        type: struct iv_fd
      item_type: struct
      name: redisIvykisEvents
      pos:
        line_end: 9
        line_start: 6
        source_file: /src/hiredis/adapters/ivykis.h
    typedefs: []
    union: []
- function_names:
  - redisLibevReadEvent
  - redisLibevWriteEvent
  - redisLibevAddRead
  - redisLibevDelRead
  - redisLibevAddWrite
  - redisLibevDelWrite
  - redisLibevStopTimer
  - redisLibevCleanup
  - redisLibevTimeout
  - redisLibevSetTimeout
  - redisLibevAttach
  source_file: /src/hiredis/adapters/libev.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*context'
        type: redisAsyncContext
      - name: '*loop'
        type: struct ev_loop
      - name: reading
        type: int
      - name: rev
        type: ev_io
      - name: timer
        type: ev_timer
      item_type: struct
      name: redisLibevEvents
      pos:
        line_end: 44
        line_start: 38
        source_file: /src/hiredis/adapters/libev.h
    typedefs: []
    union: []
- function_names:
  - redisAeReadEvent
  - redisAeWriteEvent
  - redisAeAddRead
  - redisAeDelRead
  - redisAeAddWrite
  - redisAeDelWrite
  - redisAeCleanup
  - redisAeAttach
  source_file: /src/hiredis/adapters/ae.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*context'
        type: redisAsyncContext
      - name: '*loop'
        type: aeEventLoop
      - name: fd
        type: int
      - name: reading
        type: int
      item_type: struct
      name: redisAeEvents
      pos:
        line_end: 42
        line_start: 37
        source_file: /src/hiredis/adapters/ae.h
    typedefs: []
    union: []
- function_names:
  - redisLibhvHandleEvents
  - redisLibhvAddRead
  - redisLibhvDelRead
  - redisLibhvAddWrite
  - redisLibhvDelWrite
  - redisLibhvCleanup
  - redisLibhvTimeout
  - redisLibhvSetTimeout
  - redisLibhvAttach
  source_file: /src/hiredis/adapters/libhv.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*io'
        type: hio_t
      - name: '*timer'
        type: htimer_t
      item_type: struct
      name: redisLibhvEvents
      pos:
        line_end: 10
        line_start: 7
        source_file: /src/hiredis/adapters/libhv.h
    typedefs: []
    union: []
- function_names:
  - redisLibuvPoll
  - redisLibuvAddRead
  - redisLibuvDelRead
  - redisLibuvAddWrite
  - redisLibuvDelWrite
  - on_timer_close
  - on_handle_close
  - redisLibuvTimeout
  - redisLibuvSetTimeout
  - redisLibuvCleanup
  - redisLibuvAttach
  source_file: /src/hiredis/adapters/libuv.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '* context'
        type: redisAsyncContext
      - name: handle
        type: uv_poll_t
      - name: timer
        type: uv_timer_t
      - name: events
        type: int
      item_type: struct
      name: redisLibuvEvents
      pos:
        line_end: 13
        line_start: 8
        source_file: /src/hiredis/adapters/libuv.h
    typedefs: []
    union: []
- function_names:
  - redisPollTimevalToDouble
  - redisPollGetNow
  - redisPollTick
  - redisPollAddRead
  - redisPollDelRead
  - redisPollAddWrite
  - redisPollDelWrite
  - redisPollCleanup
  - redisPollScheduleTimer
  - redisPollAttach
  source_file: /src/hiredis/adapters/poll.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: REDIS_POLL_HANDLED_READ
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/hiredis/adapters/poll.h
      type_or_value: '1'
    - item_type: preproc_def
      name: REDIS_POLL_HANDLED_WRITE
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/hiredis/adapters/poll.h
      type_or_value: '2'
    - item_type: preproc_def
      name: REDIS_POLL_HANDLED_TIMEOUT
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/hiredis/adapters/poll.h
      type_or_value: '4'
    structs:
    - fields:
      - name: '*context'
        type: redisAsyncContext
      - name: fd
        type: redisFD
      - name: reading
        type: char
      - name: in_tick
        type: char
      - name: deleted
        type: char
      - name: deadline
        type: double
      item_type: struct
      name: redisPollEvents
      pos:
        line_end: 25
        line_start: 18
        source_file: /src/hiredis/adapters/poll.h
    typedefs: []
    union: []
- function_names:
  - redisLibeventDestroy
  - redisLibeventHandler
  - CHECK_DELETED
  - redisLibeventUpdate
  - redisLibeventAddRead
  - redisLibeventDelRead
  - redisLibeventAddWrite
  - redisLibeventDelWrite
  - redisLibeventCleanup
  - redisLibeventSetTimeout
  - redisLibeventAttach
  source_file: /src/hiredis/adapters/libevent.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: REDIS_LIBEVENT_DELETED
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/hiredis/adapters/libevent.h
      type_or_value: '0x01'
    - item_type: preproc_def
      name: REDIS_LIBEVENT_ENTERED
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/hiredis/adapters/libevent.h
      type_or_value: '0x02'
    structs:
    - fields:
      - name: '*context'
        type: redisAsyncContext
      - name: '*ev'
        type: struct event
      - name: '*base'
        type: struct event_base
      - name: tv
        type: struct timeval
      - name: flags
        type: short
      - name: state
        type: short
      item_type: struct
      name: redisLibeventEvents
      pos:
        line_end: 46
        line_start: 39
        source_file: /src/hiredis/adapters/libevent.h
    typedefs: []
    union: []
- function_names:
  - RedisQtAdapter::RedisQtAddRead
  - RedisQtAdapter::RedisQtDelRead
  - RedisQtAdapter::RedisQtAddWrite
  - RedisQtAdapter::RedisQtDelWrite
  - RedisQtAdapter::RedisQtCleanup
  - RedisQtAdapter::RedisQtAdapter
  - ~RedisQtAdapter()
  - RedisQtAdapter::setContext
  - RedisQtAdapter::addRead
  - RedisQtAdapter::delRead
  - RedisQtAdapter::addWrite
  - RedisQtAdapter::delWrite
  - RedisQtAdapter::cleanup
  - RedisQtAdapter::read
  - RedisQtAdapter::write
  source_file: /src/hiredis/adapters/qt.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - panicAbort
  - assertReplyAndFree
  - enableClientTracking
  - pushReplyHandler
  - privdata_dtor
  - main
  source_file: /src/hiredis/examples/example-push.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: KEY_COUNT
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/hiredis/examples/example-push.c
      type_or_value: '5'
    structs: []
    typedefs: []
    union: []
- function_names:
  - debugCallback
  - getCallback
  - connectCallback
  - disconnectCallback
  - main
  source_file: /src/hiredis/examples/example-libsdevent.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - debugCallback
  - getCallback
  - connectCallback
  - disconnectCallback
  - RedisModule_OnLoad
  source_file: /src/hiredis/examples/example-redismoduleapi.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - getCallback
  - connectCallback
  - disconnectCallback
  - main
  source_file: /src/hiredis/examples/example-poll.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - getCallback
  - connectCallback
  - disconnectCallback
  - main
  source_file: /src/hiredis/examples/example-libevent.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - getCallback
  - connectCallback
  - disconnectCallback
  - main
  source_file: /src/hiredis/examples/example-libevent-ssl.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - connect_cb
  - disconnect_cb
  - command_cb
  - main
  source_file: /src/hiredis/examples/example-glib.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - getCallback
  - connectCallback
  - disconnectCallback
  - main
  source_file: /src/hiredis/examples/example-macosx.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - getCallback
  - connectCallback
  - disconnectCallback
  - main
  source_file: /src/hiredis/examples/example-ivykis.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - getCallback
  - debugCallback
  - connectCallback
  - disconnectCallback
  - main
  source_file: /src/hiredis/examples/example-libhv.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - getCallback
  - connectCallback
  - disconnectCallback
  - main
  source_file: /src/hiredis/examples/example-libev.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/hiredis/examples/example-ssl.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - debugCallback
  - getCallback
  - connectCallback
  - disconnectCallback
  - main
  source_file: /src/hiredis/examples/example-libuv.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - getCallback
  - connectCallback
  - disconnectCallback
  - main
  source_file: /src/hiredis/examples/example-ae.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ExampleQt::finish
  source_file: /src/hiredis/examples/example-qt.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - example_argv_command
  - main
  source_file: /src/hiredis/examples/example.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - getCallback
  - ExampleQt::run
  - main
  source_file: /src/hiredis/examples/example-qt.cpp
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
