All functions:
  Elements:
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: putchar
      Src: /src/lwan/src/bin/tools/configdump.c:29,1
    - Dst: putchar
      Src: /src/lwan/src/bin/tools/configdump.c:30,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - level
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 32
    functionName: indent
    functionSourceFile: /src/lwan/src/bin/tools/configdump.c
    functionUses: 0
    functionsReached:
    - putchar
    linkageType: ''
    returnType: void
    signature: void indent(int level)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lwan_log_critical
      Src: /src/lwan/src/bin/tools/configdump.c:40,1
    - Dst: config_read_line
      Src: /src/lwan/src/bin/tools/configdump.c:45,1
    - Dst: indent
      Src: /src/lwan/src/bin/tools/configdump.c:48,1
    - Dst: strchr
      Src: /src/lwan/src/bin/tools/configdump.c:50,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/configdump.c:51,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/configdump.c:53,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/bin/tools/configdump.c:58,1
    - Dst: indent
      Src: /src/lwan/src/bin/tools/configdump.c:62,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/configdump.c:63,1
    - Dst: dump
      Src: /src/lwan/src/bin/tools/configdump.c:65,1
    - Dst: indent
      Src: /src/lwan/src/bin/tools/configdump.c:67,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/configdump.c:68,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 2
    argNames:
    - config
    - indent_level
    argTypes:
    - struct config*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 72
    functionName: dump
    functionSourceFile: /src/lwan/src/bin/tools/configdump.c
    functionUses: 1
    functionsReached:
    - strchr
    - lwan_log_critical
    - dump
    - printf
    - indent
    - config_read_line
    linkageType: ''
    returnType: void
    signature: void dump(struct config *config, int indent_level)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lwan_log_critical
      Src: /src/lwan/src/bin/tools/configdump.c:79,1
    - Dst: config_open
      Src: /src/lwan/src/bin/tools/configdump.c:83,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/bin/tools/configdump.c:85,1
    - Dst: dump
      Src: /src/lwan/src/bin/tools/configdump.c:90,1
    - Dst: config_last_error
      Src: /src/lwan/src/bin/tools/configdump.c:92,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/bin/tools/configdump.c:93,1
    - Dst: config_cur_line
      Src: /src/lwan/src/bin/tools/configdump.c:94,1
    - Dst: config_last_error
      Src: /src/lwan/src/bin/tools/configdump.c:95,1
    - Dst: config_close
      Src: /src/lwan/src/bin/tools/configdump.c:98,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 101
    functionName: main
    functionSourceFile: /src/lwan/src/bin/tools/configdump.c
    functionUses: 0
    functionsReached:
    - config_cur_line
    - lwan_log_critical
    - config_close
    - dump
    - config_last_error
    - lwan_log_critical_perror
    - config_open
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - symbol_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: Z
    functionSourceFile: /src/lwan/src/bin/tools/mimegen.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Z(symbol_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - symbol_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: Z
    functionSourceFile: /src/lwan/src/bin/tools/mimegen.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Z(symbol_)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: realloc
      Src: /src/lwan/src/bin/tools/mimegen.c:68,1
    - Dst: memcpy
      Src: /src/lwan/src/bin/tools/mimegen.c:75,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - output
    - str
    - str_len
    argTypes:
    - struct output*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 79
    functionName: output_append_full
    functionSourceFile: /src/lwan/src/bin/tools/mimegen.c
    functionUses: 0
    functionsReached:
    - memcpy
    - realloc
    linkageType: ''
    returnType: int
    signature: int output_append_full(struct output *output, const char *str, size_t
      str_len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: output_append_full
      Src: /src/lwan/src/bin/tools/mimegen.c:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - output
    - value
    argTypes:
    - struct output*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 84
    functionName: output_append_u64
    functionSourceFile: /src/lwan/src/bin/tools/mimegen.c
    functionUses: 0
    functionsReached:
    - output_append_full
    linkageType: ''
    returnType: int
    signature: int output_append_u64(struct output *output, uint64_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: output_append_full
      Src: /src/lwan/src/bin/tools/mimegen.c:88,1
    - Dst: strlen
      Src: /src/lwan/src/bin/tools/mimegen.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - output
    - str
    argTypes:
    - struct output*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 89
    functionName: output_append
    functionSourceFile: /src/lwan/src/bin/tools/mimegen.c
    functionUses: 0
    functionsReached:
    - output_append_full
    - strlen
    linkageType: ''
    returnType: int
    signature: int output_append(struct output *output, const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/lwan/src/bin/tools/mimegen.c:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 97
    functionName: compare_ext
    functionSourceFile: /src/lwan/src/bin/tools/mimegen.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: int compare_ext(const void *a, const void *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/lwan/src/bin/tools/mimegen.c:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - str
    - ch
    argTypes:
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 107
    functionName: strend
    functionSourceFile: /src/lwan/src/bin/tools/mimegen.c
    functionUses: 0
    functionsReached:
    - strchr
    linkageType: ''
    returnType: char
    signature: char *strend(char *str, char ch)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: BrotliEncoderMaxCompressedSize
      Src: /src/lwan/src/bin/tools/mimegen.c:114,1
    - Dst: malloc
      Src: /src/lwan/src/bin/tools/mimegen.c:116,1
    - Dst: fprintf
      Src: /src/lwan/src/bin/tools/mimegen.c:118,1
    - Dst: exit
      Src: /src/lwan/src/bin/tools/mimegen.c:119,1
    - Dst: BrotliEncoderCompress
      Src: /src/lwan/src/bin/tools/mimegen.c:122,1
    - Dst: fprintf
      Src: /src/lwan/src/bin/tools/mimegen.c:126,1
    - Dst: exit
      Src: /src/lwan/src/bin/tools/mimegen.c:127,1
    - Dst: ZSTD_compressBound
      Src: /src/lwan/src/bin/tools/mimegen.c:130,1
    - Dst: malloc
      Src: /src/lwan/src/bin/tools/mimegen.c:132,1
    - Dst: fprintf
      Src: /src/lwan/src/bin/tools/mimegen.c:134,1
    - Dst: exit
      Src: /src/lwan/src/bin/tools/mimegen.c:135,1
    - Dst: ZSTD_compress
      Src: /src/lwan/src/bin/tools/mimegen.c:138,1
    - Dst: ZSTD_maxCLevel
      Src: /src/lwan/src/bin/tools/mimegen.c:139,1
    - Dst: ZSTD_isError
      Src: /src/lwan/src/bin/tools/mimegen.c:140,1
    - Dst: fprintf
      Src: /src/lwan/src/bin/tools/mimegen.c:141,1
    - Dst: exit
      Src: /src/lwan/src/bin/tools/mimegen.c:142,1
    - Dst: ZopfliInitOptions
      Src: /src/lwan/src/bin/tools/mimegen.c:149,1
    - Dst: ZopfliCompress
      Src: /src/lwan/src/bin/tools/mimegen.c:150,1
    - Dst: libdeflate_alloc_compressor
      Src: /src/lwan/src/bin/tools/mimegen.c:154,1
    - Dst: libdeflate_deflate_compress_bound
      Src: /src/lwan/src/bin/tools/mimegen.c:155,1
    - Dst: malloc
      Src: /src/lwan/src/bin/tools/mimegen.c:157,1
    - Dst: fprintf
      Src: /src/lwan/src/bin/tools/mimegen.c:159,1
    - Dst: exit
      Src: /src/lwan/src/bin/tools/mimegen.c:160,1
    - Dst: libdeflate_deflate_compress
      Src: /src/lwan/src/bin/tools/mimegen.c:163,1
    - Dst: fprintf
      Src: /src/lwan/src/bin/tools/mimegen.c:166,1
    - Dst: exit
      Src: /src/lwan/src/bin/tools/mimegen.c:167,1
    - Dst: libdeflate_free_compressor
      Src: /src/lwan/src/bin/tools/mimegen.c:171,1
    - Dst: Z
      Src: /src/lwan/src/bin/tools/mimegen.c:173,1
    - Dst: malloc
      Src: /src/lwan/src/bin/tools/mimegen.c:174,1
    - Dst: fprintf
      Src: /src/lwan/src/bin/tools/mimegen.c:176,1
    - Dst: exit
      Src: /src/lwan/src/bin/tools/mimegen.c:177,1
    - Dst: Z
      Src: /src/lwan/src/bin/tools/mimegen.c:179,1
    - Dst: fprintf
      Src: /src/lwan/src/bin/tools/mimegen.c:181,1
    - Dst: exit
      Src: /src/lwan/src/bin/tools/mimegen.c:182,1
    - Dst: free
      Src: /src/lwan/src/bin/tools/mimegen.c:186,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 52
    argCount: 2
    argNames:
    - output
    - outlen
    argTypes:
    - struct output*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 191
    functionName: compress_output
    functionSourceFile: /src/lwan/src/bin/tools/mimegen.c
    functionUses: 0
    functionsReached:
    - fprintf
    - libdeflate_free_compressor
    - BrotliEncoderMaxCompressedSize
    - libdeflate_deflate_compress
    - ZSTD_isError
    - ZSTD_compressBound
    - free
    - BrotliEncoderCompress
    - ZopfliInitOptions
    - ZSTD_compress
    - libdeflate_alloc_compressor
    - ZSTD_maxCLevel
    - ZopfliCompress
    - exit
    - malloc
    - Z
    - libdeflate_deflate_compress_bound
    linkageType: ''
    returnType: char
    signature: char *compress_output(const struct output *output, size_t *outlen)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/lwan/src/bin/tools/mimegen.c:200,1
    - Dst: fgets
      Src: /src/lwan/src/bin/tools/mimegen.c:205,1
    - Dst: strstr
      Src: /src/lwan/src/bin/tools/mimegen.c:208,1
    - Dst: strlen
      Src: /src/lwan/src/bin/tools/mimegen.c:210,1
    - Dst: strend
      Src: /src/lwan/src/bin/tools/mimegen.c:211,1
    - Dst: free
      Src: /src/lwan/src/bin/tools/mimegen.c:212,1
    - Dst: strdup
      Src: /src/lwan/src/bin/tools/mimegen.c:213,1
    - Dst: strstr
      Src: /src/lwan/src/bin/tools/mimegen.c:217,1
    - Dst: strlen
      Src: /src/lwan/src/bin/tools/mimegen.c:219,1
    - Dst: strend
      Src: /src/lwan/src/bin/tools/mimegen.c:220,1
    - Dst: hash_add_unique
      Src: /src/lwan/src/bin/tools/mimegen.c:222,1
    - Dst: strdup
      Src: /src/lwan/src/bin/tools/mimegen.c:222,1
    - Dst: strdup
      Src: /src/lwan/src/bin/tools/mimegen.c:223,1
    - Dst: free
      Src: /src/lwan/src/bin/tools/mimegen.c:229,1
    - Dst: fclose
      Src: /src/lwan/src/bin/tools/mimegen.c:230,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - ext_mime
    argTypes:
    - struct hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 233
    functionName: parse_shared_mime_info
    functionSourceFile: /src/lwan/src/bin/tools/mimegen.c
    functionUses: 0
    functionsReached:
    - fclose
    - strdup
    - free
    - strstr
    - fopen
    - strlen
    - fgets
    - strend
    - hash_add_unique
    linkageType: ''
    returnType: int
    signature: int parse_shared_mime_info(struct hash *ext_mime)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/lwan/src/bin/tools/mimegen.c:250,1
    - Dst: fopen
      Src: /src/lwan/src/bin/tools/mimegen.c:254,1
    - Dst: fprintf
      Src: /src/lwan/src/bin/tools/mimegen.c:256,1
    - Dst: strerror
      Src: /src/lwan/src/bin/tools/mimegen.c:256,1
    - Dst: hash_str_new
      Src: /src/lwan/src/bin/tools/mimegen.c:260,1
    - Dst: fprintf
      Src: /src/lwan/src/bin/tools/mimegen.c:262,1
    - Dst: fclose
      Src: /src/lwan/src/bin/tools/mimegen.c:263,1
    - Dst: fgets
      Src: /src/lwan/src/bin/tools/mimegen.c:267,1
    - Dst: isspace
      Src: /src/lwan/src/bin/tools/mimegen.c:270,1
    - Dst: strend
      Src: /src/lwan/src/bin/tools/mimegen.c:275,1
    - Dst: strend
      Src: /src/lwan/src/bin/tools/mimegen.c:276,1
    - Dst: strend
      Src: /src/lwan/src/bin/tools/mimegen.c:277,1
    - Dst: streq
      Src: /src/lwan/src/bin/tools/mimegen.c:285,1
    - Dst: strchr
      Src: /src/lwan/src/bin/tools/mimegen.c:295,1
    - Dst: strchr
      Src: /src/lwan/src/bin/tools/mimegen.c:297,1
    - Dst: assert
      Src: /src/lwan/src/bin/tools/mimegen.c:302,1
    - Dst: strdup
      Src: /src/lwan/src/bin/tools/mimegen.c:309,1
    - Dst: strdup
      Src: /src/lwan/src/bin/tools/mimegen.c:310,1
    - Dst: fprintf
      Src: /src/lwan/src/bin/tools/mimegen.c:313,1
    - Dst: fclose
      Src: /src/lwan/src/bin/tools/mimegen.c:314,1
    - Dst: hash_add_unique
      Src: /src/lwan/src/bin/tools/mimegen.c:318,1
    - Dst: free
      Src: /src/lwan/src/bin/tools/mimegen.c:320,1
    - Dst: free
      Src: /src/lwan/src/bin/tools/mimegen.c:321,1
    - Dst: fprintf
      Src: /src/lwan/src/bin/tools/mimegen.c:324,1
    - Dst: fclose
      Src: /src/lwan/src/bin/tools/mimegen.c:325,1
    - Dst: strdup
      Src: /src/lwan/src/bin/tools/mimegen.c:333,1
    - Dst: strdup
      Src: /src/lwan/src/bin/tools/mimegen.c:334,1
    - Dst: fprintf
      Src: /src/lwan/src/bin/tools/mimegen.c:336,1
    - Dst: fclose
      Src: /src/lwan/src/bin/tools/mimegen.c:337,1
    - Dst: hash_add_unique
      Src: /src/lwan/src/bin/tools/mimegen.c:340,1
    - Dst: fprintf
      Src: /src/lwan/src/bin/tools/mimegen.c:342,1
    - Dst: fclose
      Src: /src/lwan/src/bin/tools/mimegen.c:343,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/mimegen.c:348,1
    - Dst: hash_get_count
      Src: /src/lwan/src/bin/tools/mimegen.c:348,1
    - Dst: parse_shared_mime_info
      Src: /src/lwan/src/bin/tools/mimegen.c:350,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/mimegen.c:351,1
    - Dst: exts_init
      Src: /src/lwan/src/bin/tools/mimegen.c:354,1
    - Dst: HASH_FOREACH
      Src: /src/lwan/src/bin/tools/mimegen.c:356,1
    - Dst: exts_append
      Src: /src/lwan/src/bin/tools/mimegen.c:357,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 74
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts:
    - condition: (end != ext)
      pos:
        line_end: 301
        line_start: 301
        source_file: /src/lwan/src/bin/tools/mimegen.c
    constantsTouched: []
    func_position:
      end: 358
      start: 235
    functionDepth: 2
    functionLinenumber: 235
    functionLinenumberEnd: 358
    functionName: main
    functionSourceFile: /src/lwan/src/bin/tools/mimegen.c
    functionUses: 0
    functionsReached:
    - free
    - printf
    - fopen
    - assert
    - hash_str_new
    - hash_get_count
    - HASH_FOREACH
    - fgets
    - streq
    - fclose
    - fprintf
    - strdup
    - strerror
    - isspace
    - strchr
    - exts_init
    - exts_append
    - strend
    - hash_add_unique
    - parse_shared_mime_info
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - v
    - n
    argTypes:
    - uint32_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 14
    functionName: rotate
    functionSourceFile: /src/lwan/src/bin/tools/statuslookupgen.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t rotate(uint32_t v, int n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - value
    - n
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 19
    functionName: map_0_to_n
    functionSourceFile: /src/lwan/src/bin/tools/statuslookupgen.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t map_0_to_n(uint32_t value, uint32_t n)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: FOR_EACH_HTTP_STATUS
      Src: /src/lwan/src/bin/tools/statuslookupgen.c:32,1
    - Dst: FOR_EACH_HTTP_STATUS
      Src: /src/lwan/src/bin/tools/statuslookupgen.c:36,1
    - Dst: fprintf
      Src: /src/lwan/src/bin/tools/statuslookupgen.c:46,1
    - Dst: map_0_to_n
      Src: /src/lwan/src/bin/tools/statuslookupgen.c:57,1
    - Dst: rotate
      Src: /src/lwan/src/bin/tools/statuslookupgen.c:58,1
    - Dst: fprintf
      Src: /src/lwan/src/bin/tools/statuslookupgen.c:77,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/statuslookupgen.c:82,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/statuslookupgen.c:83,1
    - Dst: FOR_EACH_HTTP_STATUS
      Src: /src/lwan/src/bin/tools/statuslookupgen.c:95,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/statuslookupgen.c:100,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/statuslookupgen.c:103,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/statuslookupgen.c:105,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/statuslookupgen.c:106,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/statuslookupgen.c:107,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/statuslookupgen.c:108,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/statuslookupgen.c:109,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/statuslookupgen.c:110,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/statuslookupgen.c:111,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/statuslookupgen.c:112,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/statuslookupgen.c:114,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/statuslookupgen.c:116,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/statuslookupgen.c:117,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/statuslookupgen.c:118,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/statuslookupgen.c:119,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/statuslookupgen.c:120,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/statuslookupgen.c:121,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/statuslookupgen.c:122,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 51
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 21
    functionDepth: 1
    functionLinenumber: 21
    functionLinenumberEnd: 123
    functionName: main
    functionSourceFile: /src/lwan/src/bin/tools/statuslookupgen.c
    functionUses: 0
    functionsReached:
    - fprintf
    - FOR_EACH_HTTP_STATUS
    - printf
    - map_0_to_n
    - rotate
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - ignore1
    - ','
    - key
    - ','
    - ignore2
    - ','
    - ignore3
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 32
    functionName: COMPARE_MAX
    functionSourceFile: /src/lwan/src/bin/tools/statuslookupgen.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPARE_MAX(ignore1, key, ignore2, ignore3)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - ignore1
    - ','
    - key
    - ','
    - ignore2
    - ','
    - ignore3
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 36
    functionName: SELECT_KEY
    functionSourceFile: /src/lwan/src/bin/tools/statuslookupgen.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SELECT_KEY(ignore1, key, ignore2, ignore3)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - ignored1
    - ','
    - key
    - ','
    - short_desc
    - ','
    - long_desc
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 94
    functionName: PRINT_V
    functionSourceFile: /src/lwan/src/bin/tools/statuslookupgen.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PRINT_V(ignored1, key, short_desc, long_desc)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/lwan/src/bin/tools/bin2hex.c:33,1
    - Dst: fstat
      Src: /src/lwan/src/bin/tools/bin2hex.c:41,1
    - Dst: close
      Src: /src/lwan/src/bin/tools/bin2hex.c:42,1
    - Dst: mmap
      Src: /src/lwan/src/bin/tools/bin2hex.c:46,1
    - Dst: close
      Src: /src/lwan/src/bin/tools/bin2hex.c:47,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:51,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:52,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:56,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:60,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:63,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:67,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:69,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:73,1
    - Dst: munmap
      Src: /src/lwan/src/bin/tools/bin2hex.c:75,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 2
    argNames:
    - path
    - identifier
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 78
    functionName: bin2hex_mmap
    functionSourceFile: /src/lwan/src/bin/tools/bin2hex.c
    functionUses: 0
    functionsReached:
    - fstat
    - munmap
    - open
    - printf
    - close
    - mmap
    linkageType: ''
    returnType: int
    signature: int bin2hex_mmap(const char *path, const char *identifier)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:82,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:83,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:84,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:85,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:86,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:87,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:88,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:89,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:90,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - path
    - identifier
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 94
    functionName: bin2hex_incbin
    functionSourceFile: /src/lwan/src/bin/tools/bin2hex.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: int
    signature: int bin2hex_incbin(const char *path, const char *identifier)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:100,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:102,1
    - Dst: bin2hex_incbin
      Src: /src/lwan/src/bin/tools/bin2hex.c:103,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:104,1
    - Dst: bin2hex_mmap
      Src: /src/lwan/src/bin/tools/bin2hex.c:105,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - path
    - identifier
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 109
    functionName: bin2hex
    functionSourceFile: /src/lwan/src/bin/tools/bin2hex.c
    functionUses: 0
    functionsReached:
    - bin2hex_incbin
    - printf
    - bin2hex_mmap
    linkageType: ''
    returnType: int
    signature: int bin2hex(const char *path, const char *identifier)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/lwan/src/bin/tools/bin2hex.c:116,1
    - Dst: fprintf
      Src: /src/lwan/src/bin/tools/bin2hex.c:122,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:126,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:127,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:128,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:130,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:131,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:132,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:133,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:134,1
    - Dst: bin2hex
      Src: /src/lwan/src/bin/tools/bin2hex.c:139,1
    - Dst: fprintf
      Src: /src/lwan/src/bin/tools/bin2hex.c:142,1
    - Dst: strerror
      Src: /src/lwan/src/bin/tools/bin2hex.c:142,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:147,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:148,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:149,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:153,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:157,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/bin2hex.c:158,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 111
    functionDepth: 2
    functionLinenumber: 111
    functionLinenumberEnd: 161
    functionName: main
    functionSourceFile: /src/lwan/src/bin/tools/bin2hex.c
    functionUses: 0
    functionsReached:
    - bin2hex
    - fprintf
    - strerror
    - printf
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 86
    functionName: __attribute_format__
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: __attribute_format__(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 90
    functionName: __builtin_expect
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: __builtin_expect(x, y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: puts
      Src: /src/lwan/src/bin/tools/weighttp.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 119
    functionName: __attribute_noinline__
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached:
    - puts
    linkageType: ''
    returnType: __attribute_cold__
    signature: '__attribute_cold__ __attribute_noinline__

      static void

      show_version (void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: puts
      Src: /src/lwan/src/bin/tools/weighttp.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 158
    functionName: __attribute_noinline__
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached:
    - puts
    linkageType: ''
    returnType: __attribute_cold__
    signature: '__attribute_cold__ __attribute_noinline__

      static void

      show_help (void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 3
    argNames:
    - worker
    - config
    - i
    argTypes:
    - Worker*
    - Config*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 321
    functionName: client_init
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __attribute_cold__
    signature: "__attribute_cold__ client_init (Worker * const restrict worker,\n
      \            const Config * const restrict config,\n             const int i)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/lwan/src/bin/tools/weighttp.c:329,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - client
    argTypes:
    - Client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 324
    functionDepth: 0
    functionLinenumber: 324
    functionLinenumberEnd: 330
    functionName: client_delete
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: __attribute_cold__
    signature: __attribute_cold__ client_delete (const Client * const restrict client)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/lwan/src/bin/tools/weighttp.c:340,1
    - Dst: memcpy
      Src: /src/lwan/src/bin/tools/weighttp.c:341,1
    - Dst: memcpy
      Src: /src/lwan/src/bin/tools/weighttp.c:342,1
    - Dst: memcpy
      Src: /src/lwan/src/bin/tools/weighttp.c:345,1
    - Dst: memcpy
      Src: /src/lwan/src/bin/tools/weighttp.c:348,1
    - Dst: calloc
      Src: /src/lwan/src/bin/tools/weighttp.c:352,1
    - Dst: calloc
      Src: /src/lwan/src/bin/tools/weighttp.c:353,1
    - Dst: client_init
      Src: /src/lwan/src/bin/tools/weighttp.c:355,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - worker
    - wconf
    argTypes:
    - Worker*
    - Worker_Config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 333
    functionDepth: 1
    functionLinenumber: 333
    functionLinenumberEnd: 356
    functionName: __attribute_noinline__
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached:
    - memcpy
    - client_init
    - memset
    - calloc
    linkageType: ''
    returnType: __attribute_cold__
    signature: "__attribute_cold__ __attribute_noinline__\nstatic void\nworker_init
      (Worker * const restrict worker,\n             Worker_Config * const restrict
      wconf)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/lwan/src/bin/tools/weighttp.c:377,1
    - Dst: client_delete
      Src: /src/lwan/src/bin/tools/weighttp.c:379,1
    - Dst: free
      Src: /src/lwan/src/bin/tools/weighttp.c:380,1
    - Dst: free
      Src: /src/lwan/src/bin/tools/weighttp.c:381,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - worker
    - wconf
    argTypes:
    - Worker*
    - Worker_Config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 359
    functionDepth: 1
    functionLinenumber: 359
    functionLinenumberEnd: 382
    functionName: __attribute_noinline__
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached:
    - memcpy
    - free
    - client_delete
    linkageType: ''
    returnType: __attribute_cold__
    signature: "__attribute_cold__ __attribute_noinline__\nstatic void\nworker_delete
      (Worker * const restrict worker,\n               Worker_Config * const restrict
      wconf)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/lwan/src/bin/tools/weighttp.c:392,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/weighttp.c:412,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - config
    argTypes:
    - Config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 385
    functionDepth: 0
    functionLinenumber: 385
    functionLinenumberEnd: 422
    functionName: __attribute_noinline__
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached:
    - calloc
    - printf
    linkageType: ''
    returnType: __attribute_cold__
    signature: '__attribute_cold__ __attribute_noinline__

      static void

      wconfs_init (Config * const restrict config)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/lwan/src/bin/tools/weighttp.c:430,1
    - Dst: free
      Src: /src/lwan/src/bin/tools/weighttp.c:433,1
    - Dst: freeaddrinfo
      Src: /src/lwan/src/bin/tools/weighttp.c:437,1
    - Dst: free
      Src: /src/lwan/src/bin/tools/weighttp.c:438,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - config
    argTypes:
    - Config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 425
    functionDepth: 0
    functionLinenumber: 425
    functionLinenumberEnd: 440
    functionName: __attribute_noinline__
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached:
    - freeaddrinfo
    - free
    linkageType: ''
    returnType: __attribute_cold__
    signature: '__attribute_cold__ __attribute_noinline__

      static void

      wconfs_delete (const Config * const restrict config)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_expect
      Src: /src/lwan/src/bin/tools/weighttp.c:451,1
    - Dst: memmove
      Src: /src/lwan/src/bin/tools/weighttp.c:468,1
    - Dst: close
      Src: /src/lwan/src/bin/tools/weighttp.c:484,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 2
    argNames:
    - client
    - success
    argTypes:
    - Client*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 443
    functionDepth: 1
    functionLinenumber: 443
    functionLinenumberEnd: 490
    functionName: client_reset
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached:
    - memmove
    - close
    - __builtin_expect
    linkageType: ''
    returnType: __attribute_hot__
    signature: __attribute_hot__ client_reset (Client * const restrict client, const
      int success)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_reset
      Src: /src/lwan/src/bin/tools/weighttp.c:508,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - client
    argTypes:
    - Client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 493
    functionDepth: 2
    functionLinenumber: 493
    functionLinenumberEnd: 509
    functionName: __attribute_noinline__
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached:
    - client_reset
    linkageType: ''
    returnType: __attribute_cold__
    signature: '__attribute_cold__ __attribute_noinline__

      static void

      client_error (Client * const restrict client)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strerror_r
      Src: /src/lwan/src/bin/tools/weighttp.c:521,1
    - Dst: strerror_r
      Src: /src/lwan/src/bin/tools/weighttp.c:524,1
    - Dst: fprintf
      Src: /src/lwan/src/bin/tools/weighttp.c:526,1
    - Dst: client_error
      Src: /src/lwan/src/bin/tools/weighttp.c:527,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - client
    - tag
    argTypes:
    - Client*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 528
      start: 512
    functionDepth: 0
    functionLinenumber: 512
    functionLinenumberEnd: 528
    functionName: __attribute_noinline__
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached:
    - strerror_r
    - fprintf
    - client_error
    linkageType: ''
    returnType: __attribute_cold__
    signature: '__attribute_cold__ __attribute_noinline__

      static void

      client_perror (Client * const restrict client, const char * const restrict tag)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - client
    argTypes:
    - Client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 532
    functionDepth: 0
    functionLinenumber: 532
    functionLinenumberEnd: 543
    functionName: client_connected
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void client_connected (Client * const restrict client)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/lwan/src/bin/tools/weighttp.c:558,1
    - Dst: __builtin_expect
      Src: /src/lwan/src/bin/tools/weighttp.c:559,1
    - Dst: fcntl
      Src: /src/lwan/src/bin/tools/weighttp.c:563,1
    - Dst: client_perror
      Src: /src/lwan/src/bin/tools/weighttp.c:568,1
    - Dst: setsockopt
      Src: /src/lwan/src/bin/tools/weighttp.c:578,1
    - Dst: setsockopt
      Src: /src/lwan/src/bin/tools/weighttp.c:583,1
    - Dst: client_perror
      Src: /src/lwan/src/bin/tools/weighttp.c:584,1
    - Dst: setsockopt
      Src: /src/lwan/src/bin/tools/weighttp.c:585,1
    - Dst: client_perror
      Src: /src/lwan/src/bin/tools/weighttp.c:586,1
    - Dst: setsockopt
      Src: /src/lwan/src/bin/tools/weighttp.c:592,1
    - Dst: client_perror
      Src: /src/lwan/src/bin/tools/weighttp.c:593,1
    - Dst: bind
      Src: /src/lwan/src/bin/tools/weighttp.c:597,1
    - Dst: client_perror
      Src: /src/lwan/src/bin/tools/weighttp.c:598,1
    - Dst: sendto
      Src: /src/lwan/src/bin/tools/weighttp.c:607,1
    - Dst: client_connected
      Src: /src/lwan/src/bin/tools/weighttp.c:611,1
    - Dst: connect
      Src: /src/lwan/src/bin/tools/weighttp.c:635,1
    - Dst: __builtin_expect
      Src: /src/lwan/src/bin/tools/weighttp.c:636,1
    - Dst: client_perror
      Src: /src/lwan/src/bin/tools/weighttp.c:647,1
    - Dst: getsockopt
      Src: /src/lwan/src/bin/tools/weighttp.c:655,1
    - Dst: client_perror
      Src: /src/lwan/src/bin/tools/weighttp.c:657,1
    - Dst: client_connected
      Src: /src/lwan/src/bin/tools/weighttp.c:663,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 82
    argCount: 1
    argNames:
    - client
    argTypes:
    - Client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 546
    functionDepth: 1
    functionLinenumber: 546
    functionLinenumberEnd: 665
    functionName: client_connect
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached:
    - fcntl
    - __builtin_expect
    - sendto
    - client_perror
    - connect
    - getsockopt
    - setsockopt
    - client_connected
    - socket
    - bind
    linkageType: ''
    returnType: __attribute_noinline__
    signature: __attribute_noinline__ client_connect (Client * const restrict client)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: memchr
      Src: /src/lwan/src/bin/tools/weighttp.c:679,1
    - Dst: client_error
      Src: /src/lwan/src/bin/tools/weighttp.c:698,1
    - Dst: client_reset
      Src: /src/lwan/src/bin/tools/weighttp.c:716,1
    - Dst: client_error
      Src: /src/lwan/src/bin/tools/weighttp.c:733,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 52
    argCount: 1
    argNames:
    - client
    argTypes:
    - Client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 669
    functionDepth: 2
    functionLinenumber: 669
    functionLinenumberEnd: 751
    functionName: client_parse_chunks
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached:
    - memchr
    - client_reset
    - client_error
    linkageType: ''
    returnType: int
    signature: int client_parse_chunks (Client * const restrict client)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 754
    functionDepth: 0
    functionLinenumber: 754
    functionLinenumberEnd: 769
    functionName: client_parse_uint64
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: __attribute_hot__
    signature: __attribute_hot__ client_parse_uint64 (const char * const restrict
      str)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: memchr
      Src: /src/lwan/src/bin/tools/weighttp.c:791,1
    - Dst: client_error
      Src: /src/lwan/src/bin/tools/weighttp.c:796,1
    - Dst: client_error
      Src: /src/lwan/src/bin/tools/weighttp.c:824,1
    - Dst: memchr
      Src: /src/lwan/src/bin/tools/weighttp.c:838,1
    - Dst: memcmp
      Src: /src/lwan/src/bin/tools/weighttp.c:853,1
    - Dst: strncasecmp
      Src: /src/lwan/src/bin/tools/weighttp.c:855,1
    - Dst: __builtin_expect
      Src: /src/lwan/src/bin/tools/weighttp.c:858,1
    - Dst: __builtin_expect
      Src: /src/lwan/src/bin/tools/weighttp.c:860,1
    - Dst: __builtin_expect
      Src: /src/lwan/src/bin/tools/weighttp.c:861,1
    - Dst: client_parse_uint64
      Src: /src/lwan/src/bin/tools/weighttp.c:863,1
    - Dst: memcmp
      Src: /src/lwan/src/bin/tools/weighttp.c:866,1
    - Dst: strncasecmp
      Src: /src/lwan/src/bin/tools/weighttp.c:868,1
    - Dst: __builtin_expect
      Src: /src/lwan/src/bin/tools/weighttp.c:871,1
    - Dst: __builtin_expect
      Src: /src/lwan/src/bin/tools/weighttp.c:873,1
    - Dst: __builtin_expect
      Src: /src/lwan/src/bin/tools/weighttp.c:874,1
    - Dst: memcmp
      Src: /src/lwan/src/bin/tools/weighttp.c:880,1
    - Dst: strncasecmp
      Src: /src/lwan/src/bin/tools/weighttp.c:882,1
    - Dst: client_parse_chunks
      Src: /src/lwan/src/bin/tools/weighttp.c:905,1
    - Dst: client_reset
      Src: /src/lwan/src/bin/tools/weighttp.c:914,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 96
    argCount: 1
    argNames:
    - client
    argTypes:
    - Client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 772
    functionDepth: 3
    functionLinenumber: 772
    functionLinenumberEnd: 929
    functionName: __attribute_noinline__
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached:
    - memchr
    - client_parse_chunks
    - client_reset
    - strncasecmp
    - __builtin_expect
    - client_parse_uint64
    - client_error
    - memcmp
    linkageType: ''
    returnType: __attribute_hot__
    signature: '__attribute_hot__ __attribute_noinline__

      static int

      client_parse (Client * const restrict client)'
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: client_parse
      Src: /src/lwan/src/bin/tools/weighttp.c:938,1
    - Dst: recv
      Src: /src/lwan/src/bin/tools/weighttp.c:943,1
    - Dst: __builtin_expect
      Src: /src/lwan/src/bin/tools/weighttp.c:946,1
    - Dst: __builtin_expect
      Src: /src/lwan/src/bin/tools/weighttp.c:947,1
    - Dst: client_parse
      Src: /src/lwan/src/bin/tools/weighttp.c:953,1
    - Dst: __builtin_expect
      Src: /src/lwan/src/bin/tools/weighttp.c:961,1
    - Dst: client_error
      Src: /src/lwan/src/bin/tools/weighttp.c:964,1
    - Dst: memmove
      Src: /src/lwan/src/bin/tools/weighttp.c:968,1
    - Dst: client_perror
      Src: /src/lwan/src/bin/tools/weighttp.c:987,1
    - Dst: client_reset
      Src: /src/lwan/src/bin/tools/weighttp.c:994,1
    - Dst: client_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1010,1
    - Dst: __builtin_expect
      Src: /src/lwan/src/bin/tools/weighttp.c:1016,1
    - Dst: client_reset
      Src: /src/lwan/src/bin/tools/weighttp.c:1018,1
    - Dst: client_connect
      Src: /src/lwan/src/bin/tools/weighttp.c:1023,1
    - Dst: send
      Src: /src/lwan/src/bin/tools/weighttp.c:1027,1
    - Dst: __builtin_expect
      Src: /src/lwan/src/bin/tools/weighttp.c:1031,1
    - Dst: __builtin_expect
      Src: /src/lwan/src/bin/tools/weighttp.c:1032,1
    - Dst: client_perror
      Src: /src/lwan/src/bin/tools/weighttp.c:1062,1
    - Dst: client_reset
      Src: /src/lwan/src/bin/tools/weighttp.c:1066,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 85
    argCount: 1
    argNames:
    - client
    argTypes:
    - Client*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1070
      start: 933
    functionDepth: 2
    functionLinenumber: 933
    functionLinenumberEnd: 1070
    functionName: client_revents
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached:
    - client_reset
    - send
    - __builtin_expect
    - client_perror
    - recv
    - client_connect
    - client_parse
    - memmove
    - client_error
    linkageType: ''
    returnType: void
    signature: void client_revents (Client * const restrict client)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: worker_init
      Src: /src/lwan/src/bin/tools/weighttp.c:1080,1
    - Dst: client_revents
      Src: /src/lwan/src/bin/tools/weighttp.c:1093,1
    - Dst: poll
      Src: /src/lwan/src/bin/tools/weighttp.c:1099,1
    - Dst: __builtin_expect
      Src: /src/lwan/src/bin/tools/weighttp.c:1100,1
    - Dst: __builtin_expect
      Src: /src/lwan/src/bin/tools/weighttp.c:1101,1
    - Dst: client_perror
      Src: /src/lwan/src/bin/tools/weighttp.c:1103,1
    - Dst: client_revents
      Src: /src/lwan/src/bin/tools/weighttp.c:1113,1
    - Dst: __builtin_expect
      Src: /src/lwan/src/bin/tools/weighttp.c:1119,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/weighttp.c:1120,1
    - Dst: __builtin_expect
      Src: /src/lwan/src/bin/tools/weighttp.c:1125,1
    - Dst: worker_delete
      Src: /src/lwan/src/bin/tools/weighttp.c:1131,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 37
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1133
      start: 1074
    functionDepth: 3
    functionLinenumber: 1074
    functionLinenumberEnd: 1133
    functionName: worker_thread
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached:
    - __builtin_expect
    - client_perror
    - worker_delete
    - printf
    - worker_init
    - client_revents
    - poll
    linkageType: ''
    returnType: void
    signature: 'void *

      worker_thread (void * const arg)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: show_version
      Src: /src/lwan/src/bin/tools/weighttp.c:1143,1
    - Dst: show_help
      Src: /src/lwan/src/bin/tools/weighttp.c:1144,1
    - Dst: fflush
      Src: /src/lwan/src/bin/tools/weighttp.c:1145,1
    - Dst: fprintf
      Src: /src/lwan/src/bin/tools/weighttp.c:1147,1
    - Dst: vfprintf
      Src: /src/lwan/src/bin/tools/weighttp.c:1148,1
    - Dst: fprintf
      Src: /src/lwan/src/bin/tools/weighttp.c:1151,1
    - Dst: strerror_r
      Src: /src/lwan/src/bin/tools/weighttp.c:1156,1
    - Dst: strerror_r
      Src: /src/lwan/src/bin/tools/weighttp.c:1159,1
    - Dst: fprintf
      Src: /src/lwan/src/bin/tools/weighttp.c:1162,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - errfmt
    - perr
    - ap
    argTypes:
    - char*
    - int
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1164
      start: 1136
    functionDepth: 0
    functionLinenumber: 1136
    functionLinenumberEnd: 1164
    functionName: config_error_diagnostic
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached:
    - fprintf
    - fflush
    - vfprintf
    - strerror_r
    - show_version
    - show_help
    linkageType: ''
    returnType: __attribute_cold__
    signature: "__attribute_cold__ config_error_diagnostic (const char * const restrict
      errfmt,\n                         const int perr, va_list ap)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/lwan/src/bin/tools/weighttp.c:1175,1
    - Dst: config_error_diagnostic
      Src: /src/lwan/src/bin/tools/weighttp.c:1176,1
    - Dst: va_end
      Src: /src/lwan/src/bin/tools/weighttp.c:1177,1
    - Dst: exit
      Src: /src/lwan/src/bin/tools/weighttp.c:1178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - errfmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1179
      start: 1169
    functionDepth: 1
    functionLinenumber: 1169
    functionLinenumberEnd: 1179
    functionName: __attribute_noreturn__
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached:
    - config_error_diagnostic
    - va_end
    - va_start
    - exit
    linkageType: ''
    returnType: __attribute_noinline__
    signature: '__attribute_noinline__ __attribute_noreturn__

      static void

      config_error (const char * const restrict errfmt, ...)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/lwan/src/bin/tools/weighttp.c:1190,1
    - Dst: config_error_diagnostic
      Src: /src/lwan/src/bin/tools/weighttp.c:1191,1
    - Dst: va_end
      Src: /src/lwan/src/bin/tools/weighttp.c:1192,1
    - Dst: exit
      Src: /src/lwan/src/bin/tools/weighttp.c:1193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - errfmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1194
      start: 1184
    functionDepth: 1
    functionLinenumber: 1184
    functionLinenumberEnd: 1194
    functionName: __attribute_noreturn__
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached:
    - config_error_diagnostic
    - va_end
    - va_start
    - exit
    linkageType: ''
    returnType: __attribute_noinline__
    signature: '__attribute_noinline__ __attribute_noreturn__

      static void

      config_perror (const char * const restrict errfmt, ...)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/lwan/src/bin/tools/weighttp.c:1219,1
    - Dst: getaddrinfo
      Src: /src/lwan/src/bin/tools/weighttp.c:1224,1
    - Dst: memcpy
      Src: /src/lwan/src/bin/tools/weighttp.c:1232,1
    - Dst: freeaddrinfo
      Src: /src/lwan/src/bin/tools/weighttp.c:1234,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - config
    - laddrstr
    argTypes:
    - Config*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1236
      start: 1213
    functionDepth: 0
    functionLinenumber: 1213
    functionLinenumberEnd: 1236
    functionName: config_laddr
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached:
    - memcpy
    - memset
    - getaddrinfo
    - freeaddrinfo
    linkageType: ''
    returnType: __attribute_cold__
    signature: "__attribute_cold__ config_laddr (Config * const restrict config,\n
      \             const char * const restrict laddrstr)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/lwan/src/bin/tools/weighttp.c:1246,1
    - Dst: config_laddr
      Src: /src/lwan/src/bin/tools/weighttp.c:1247,1
    - Dst: memset
      Src: /src/lwan/src/bin/tools/weighttp.c:1250,1
    - Dst: calloc
      Src: /src/lwan/src/bin/tools/weighttp.c:1257,1
    - Dst: strchr
      Src: /src/lwan/src/bin/tools/weighttp.c:1261,1
    - Dst: getaddrinfo
      Src: /src/lwan/src/bin/tools/weighttp.c:1265,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 2
    argNames:
    - config
    - laddrstr
    argTypes:
    - Config*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1274
      start: 1239
    functionDepth: 1
    functionLinenumber: 1239
    functionLinenumberEnd: 1274
    functionName: config_laddrs
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached:
    - strchr
    - config_laddr
    - calloc
    - memset
    - getaddrinfo
    linkageType: ''
    returnType: __attribute_cold__
    signature: "__attribute_cold__ config_laddrs (Config * const restrict config,\n
      \              char * const restrict laddrstr)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/lwan/src/bin/tools/weighttp.c:1286,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1288,1
    - Dst: memset
      Src: /src/lwan/src/bin/tools/weighttp.c:1297,1
    - Dst: memcpy
      Src: /src/lwan/src/bin/tools/weighttp.c:1299,1
    - Dst: strrchr
      Src: /src/lwan/src/bin/tools/weighttp.c:1306,1
    - Dst: strtoul
      Src: /src/lwan/src/bin/tools/weighttp.c:1309,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1313,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1317,1
    - Dst: memcpy
      Src: /src/lwan/src/bin/tools/weighttp.c:1318,1
    - Dst: memset
      Src: /src/lwan/src/bin/tools/weighttp.c:1329,1
    - Dst: snprintf
      Src: /src/lwan/src/bin/tools/weighttp.c:1335,1
    - Dst: getaddrinfo
      Src: /src/lwan/src/bin/tools/weighttp.c:1337,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1338,1
    - Dst: memcpy
      Src: /src/lwan/src/bin/tools/weighttp.c:1347,1
    - Dst: freeaddrinfo
      Src: /src/lwan/src/bin/tools/weighttp.c:1352,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1354,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 49
    argCount: 4
    argNames:
    - config
    - hostname
    - port
    - use_ipv6
    argTypes:
    - Config*
    - char*
    - uint16_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1355
      start: 1277
    functionDepth: 1
    functionLinenumber: 1277
    functionLinenumberEnd: 1355
    functionName: config_raddr
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached:
    - strrchr
    - strtoul
    - memcpy
    - freeaddrinfo
    - memset
    - strlen
    - getaddrinfo
    - snprintf
    - config_error
    linkageType: ''
    returnType: __attribute_cold__
    signature: "__attribute_cold__ config_raddr (Config * const restrict config,\n
      \             const char * restrict hostname, uint16_t port, const int use_ipv6)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/lwan/src/bin/tools/weighttp.c:1366,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 3
    argNames:
    - dst
    - dstsz
    - ssrc
    argTypes:
    - char*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1410
      start: 1358
    functionDepth: 0
    functionLinenumber: 1358
    functionLinenumberEnd: 1410
    functionName: config_base64_encode_pad
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: __attribute_cold__
    signature: "__attribute_cold__ config_base64_encode_pad (char * const restrict
      dst, const size_t dstsz,\n                          const char * const restrict
      ssrc)"
  - BBCount: 49
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/lwan/src/bin/tools/weighttp.c:1423,1
    - Dst: strncmp
      Src: /src/lwan/src/bin/tools/weighttp.c:1425,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1428,1
    - Dst: strchr
      Src: /src/lwan/src/bin/tools/weighttp.c:1433,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1435,1
    - Dst: memcpy
      Src: /src/lwan/src/bin/tools/weighttp.c:1436,1
    - Dst: strtoul
      Src: /src/lwan/src/bin/tools/weighttp.c:1440,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1446,1
    - Dst: strchr
      Src: /src/lwan/src/bin/tools/weighttp.c:1449,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1451,1
    - Dst: memcpy
      Src: /src/lwan/src/bin/tools/weighttp.c:1452,1
    - Dst: strlen
      Src: /src/lwan/src/bin/tools/weighttp.c:1457,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1459,1
    - Dst: memcpy
      Src: /src/lwan/src/bin/tools/weighttp.c:1460,1
    - Dst: config_raddr
      Src: /src/lwan/src/bin/tools/weighttp.c:1467,1
    - Dst: strncasecmp
      Src: /src/lwan/src/bin/tools/weighttp.c:1476,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1478,1
    - Dst: strncasecmp
      Src: /src/lwan/src/bin/tools/weighttp.c:1481,1
    - Dst: strncasecmp
      Src: /src/lwan/src/bin/tools/weighttp.c:1483,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1484,1
    - Dst: strncasecmp
      Src: /src/lwan/src/bin/tools/weighttp.c:1486,1
    - Dst: strncasecmp
      Src: /src/lwan/src/bin/tools/weighttp.c:1489,1
    - Dst: strncasecmp
      Src: /src/lwan/src/bin/tools/weighttp.c:1492,1
    - Dst: snprintf
      Src: /src/lwan/src/bin/tools/weighttp.c:1502,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1507,1
    - Dst: snprintf
      Src: /src/lwan/src/bin/tools/weighttp.c:1510,1
    - Dst: snprintf
      Src: /src/lwan/src/bin/tools/weighttp.c:1512,1
    - Dst: snprintf
      Src: /src/lwan/src/bin/tools/weighttp.c:1513,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1515,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1521,1
    - Dst: memcpy
      Src: /src/lwan/src/bin/tools/weighttp.c:1522,1
    - Dst: open
      Src: /src/lwan/src/bin/tools/weighttp.c:1538,1
    - Dst: config_perror
      Src: /src/lwan/src/bin/tools/weighttp.c:1541,1
    - Dst: fstat
      Src: /src/lwan/src/bin/tools/weighttp.c:1543,1
    - Dst: config_perror
      Src: /src/lwan/src/bin/tools/weighttp.c:1544,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1547,1
    - Dst: snprintf
      Src: /src/lwan/src/bin/tools/weighttp.c:1554,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1557,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1562,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1567,1
    - Dst: snprintf
      Src: /src/lwan/src/bin/tools/weighttp.c:1568,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1571,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1577,1
    - Dst: memcpy
      Src: /src/lwan/src/bin/tools/weighttp.c:1578,1
    - Dst: snprintf
      Src: /src/lwan/src/bin/tools/weighttp.c:1586,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1588,1
    - Dst: snprintf
      Src: /src/lwan/src/bin/tools/weighttp.c:1593,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1595,1
    - Dst: config_base64_encode_pad
      Src: /src/lwan/src/bin/tools/weighttp.c:1598,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1601,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1605,1
    - Dst: memcpy
      Src: /src/lwan/src/bin/tools/weighttp.c:1606,1
    - Dst: snprintf
      Src: /src/lwan/src/bin/tools/weighttp.c:1611,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1613,1
    - Dst: config_base64_encode_pad
      Src: /src/lwan/src/bin/tools/weighttp.c:1616,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1619,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1623,1
    - Dst: memcpy
      Src: /src/lwan/src/bin/tools/weighttp.c:1624,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1631,1
    - Dst: memcpy
      Src: /src/lwan/src/bin/tools/weighttp.c:1632,1
    - Dst: snprintf
      Src: /src/lwan/src/bin/tools/weighttp.c:1639,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1641,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1646,1
    - Dst: memcpy
      Src: /src/lwan/src/bin/tools/weighttp.c:1647,1
    - Dst: malloc
      Src: /src/lwan/src/bin/tools/weighttp.c:1656,1
    - Dst: memcpy
      Src: /src/lwan/src/bin/tools/weighttp.c:1657,1
    - Dst: read
      Src: /src/lwan/src/bin/tools/weighttp.c:1661,1
    - Dst: config_perror
      Src: /src/lwan/src/bin/tools/weighttp.c:1665,1
    CyclomaticComplexity: 57
    EdgeCount: 57
    ICount: 162
    argCount: 2
    argNames:
    - config
    - params
    argTypes:
    - Config*
    - config_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1667
      start: 1413
    functionDepth: 2
    functionLinenumber: 1413
    functionLinenumberEnd: 1667
    functionName: config_request
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached:
    - strchr
    - read
    - strncasecmp
    - fstat
    - strtoul
    - open
    - config_base64_encode_pad
    - memcpy
    - strlen
    - strncmp
    - config_perror
    - malloc
    - snprintf
    - config_error
    - config_raddr
    linkageType: ''
    returnType: __attribute_cold__
    signature: "__attribute_cold__ config_request (Config * const restrict config,\n
      \               const config_params * const restrict params)"
  - BBCount: 56
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/lwan/src/bin/tools/weighttp.c:1678,1
    - Dst: setlocale
      Src: /src/lwan/src/bin/tools/weighttp.c:1692,1
    - Dst: signal
      Src: /src/lwan/src/bin/tools/weighttp.c:1693,1
    - Dst: getopt
      Src: /src/lwan/src/bin/tools/weighttp.c:1697,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1710,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1718,1
    - Dst: strtoul
      Src: /src/lwan/src/bin/tools/weighttp.c:1722,1
    - Dst: strtoul
      Src: /src/lwan/src/bin/tools/weighttp.c:1736,1
    - Dst: strtoul
      Src: /src/lwan/src/bin/tools/weighttp.c:1739,1
    - Dst: strcasecmp
      Src: /src/lwan/src/bin/tools/weighttp.c:1749,1
    - Dst: strtoull
      Src: /src/lwan/src/bin/tools/weighttp.c:1752,1
    - Dst: strtoul
      Src: /src/lwan/src/bin/tools/weighttp.c:1768,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1776,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1779,1
    - Dst: show_version
      Src: /src/lwan/src/bin/tools/weighttp.c:1791,1
    - Dst: show_help
      Src: /src/lwan/src/bin/tools/weighttp.c:1794,1
    - Dst: exit
      Src: /src/lwan/src/bin/tools/weighttp.c:1797,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1800,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1802,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1807,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1809,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1811,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1813,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1815,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1817,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1819,1
    - Dst: config_request
      Src: /src/lwan/src/bin/tools/weighttp.c:1825,1
    - Dst: config_laddrs
      Src: /src/lwan/src/bin/tools/weighttp.c:1830,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1831,1
    - Dst: open
      Src: /src/lwan/src/bin/tools/weighttp.c:1837,1
    - Dst: read
      Src: /src/lwan/src/bin/tools/weighttp.c:1841,1
    - Dst: strtoul
      Src: /src/lwan/src/bin/tools/weighttp.c:1846,1
    - Dst: strtoul
      Src: /src/lwan/src/bin/tools/weighttp.c:1848,1
    - Dst: close
      Src: /src/lwan/src/bin/tools/weighttp.c:1855,1
    - Dst: config_error
      Src: /src/lwan/src/bin/tools/weighttp.c:1860,1
    CyclomaticComplexity: 63
    EdgeCount: 63
    ICount: 160
    argCount: 3
    argNames:
    - config
    - argc
    - argv
    argTypes:
    - Config*
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1869
      start: 1670
    functionDepth: 3
    functionLinenumber: 1670
    functionLinenumberEnd: 1869
    functionName: __attribute_noinline__
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached:
    - read
    - exit
    - getopt
    - strtoul
    - strtoull
    - setlocale
    - config_request
    - open
    - config_laddrs
    - show_version
    - memset
    - close
    - show_help
    - strcasecmp
    - config_error
    - signal
    linkageType: ''
    returnType: __attribute_cold__
    signature: '__attribute_cold__ __attribute_noinline__

      static void

      weighttp_setup (Config * const restrict config, const int argc, char *argv[])'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/lwan/src/bin/tools/weighttp.c:1879,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/weighttp.c:1907,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/weighttp.c:1912,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/weighttp.c:1918,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/weighttp.c:1924,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/weighttp.c:1931,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/weighttp.c:1940,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/weighttp.c:1943,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/weighttp.c:1948,1
    - Dst: printf
      Src: /src/lwan/src/bin/tools/weighttp.c:1952,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 1
    argNames:
    - config
    argTypes:
    - Config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1956
      start: 1872
    functionDepth: 0
    functionLinenumber: 1872
    functionLinenumberEnd: 1956
    functionName: __attribute_noinline__
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached:
    - memset
    - printf
    linkageType: ''
    returnType: __attribute_cold__
    signature: '__attribute_cold__ __attribute_noinline__

      static void

      weighttp_report (const Config * const restrict config)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: weighttp_setup
      Src: /src/lwan/src/bin/tools/weighttp.c:1962,1
    - Dst: wconfs_init
      Src: /src/lwan/src/bin/tools/weighttp.c:1963,1
    - Dst: calloc
      Src: /src/lwan/src/bin/tools/weighttp.c:1968,1
    - Dst: puts
      Src: /src/lwan/src/bin/tools/weighttp.c:1972,1
    - Dst: gettimeofday
      Src: /src/lwan/src/bin/tools/weighttp.c:1973,1
    - Dst: pthread_create
      Src: /src/lwan/src/bin/tools/weighttp.c:1976,1
    - Dst: __builtin_expect
      Src: /src/lwan/src/bin/tools/weighttp.c:1978,1
    - Dst: fprintf
      Src: /src/lwan/src/bin/tools/weighttp.c:1979,1
    - Dst: pthread_join
      Src: /src/lwan/src/bin/tools/weighttp.c:1986,1
    - Dst: __builtin_expect
      Src: /src/lwan/src/bin/tools/weighttp.c:1987,1
    - Dst: fprintf
      Src: /src/lwan/src/bin/tools/weighttp.c:1988,1
    - Dst: gettimeofday
      Src: /src/lwan/src/bin/tools/weighttp.c:1994,1
    - Dst: free
      Src: /src/lwan/src/bin/tools/weighttp.c:1997,1
    - Dst: weighttp_report
      Src: /src/lwan/src/bin/tools/weighttp.c:1999,1
    - Dst: wconfs_delete
      Src: /src/lwan/src/bin/tools/weighttp.c:2000,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2003
      start: 1959
    functionDepth: 1
    functionLinenumber: 1959
    functionLinenumberEnd: 2003
    functionName: main
    functionSourceFile: /src/lwan/src/bin/tools/weighttp.c
    functionUses: 0
    functionsReached:
    - wconfs_init
    - fprintf
    - calloc
    - __builtin_expect
    - free
    - wconfs_delete
    - gettimeofday
    - puts
    - pthread_join
    - weighttp_report
    - pthread_create
    - weighttp_setup
    linkageType: ''
    returnType: int
    signature: int main (int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:41,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:43,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 47
    functionName: print_module_info
    functionSourceFile: /src/lwan/src/bin/lwan/main.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void print_module_info(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: LWAN_SECTION_FOREACH
    functionSourceFile: /src/lwan/src/bin/lwan/main.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void LWAN_SECTION_FOREACH(lwan_module, module)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:55,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:60,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:63,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 64
    functionName: print_handler_info
    functionSourceFile: /src/lwan/src/bin/lwan/main.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void print_handler_info(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:60,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 62
    functionName: LWAN_SECTION_FOREACH
    functionSourceFile: /src/lwan/src/bin/lwan/main.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void LWAN_SECTION_FOREACH(lwan_handler, handler)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:69,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:72,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:74,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:78,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:81,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:85,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:87,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:89,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:93,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:97,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:99,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:103,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:105,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:109,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:111,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:115,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:119,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:123,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:127,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:131,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:135,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:139,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:141,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:143,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:147,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:151,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:153,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 157
    functionName: print_build_time_configuration
    functionSourceFile: /src/lwan/src/bin/lwan/main.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void print_build_time_configuration(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_current_dir_name
      Src: /src/lwan/src/bin/lwan/main.c:163,1
    - Dst: lwan_get_config_path
      Src: /src/lwan/src/bin/lwan/main.c:164,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:166,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:168,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:170,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:171,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:172,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:174,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:176,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:178,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:179,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:180,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:181,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:183,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:187,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:188,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:189,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:190,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:192,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:193,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:194,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:196,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:197,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:198,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:199,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:200,1
    - Dst: access
      Src: /src/lwan/src/bin/lwan/main.c:201,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:202,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:203,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:205,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:206,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:207,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:208,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:209,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:210,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:212,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:213,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:216,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:217,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:218,1
    - Dst: free
      Src: /src/lwan/src/bin/lwan/main.c:220,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 41
    argCount: 2
    argNames:
    - argv0
    - config
    argTypes:
    - char*
    - struct lwan_config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 221
    functionName: print_help
    functionSourceFile: /src/lwan/src/bin/lwan/main.c
    functionUses: 0
    functionsReached:
    - get_current_dir_name
    - free
    - printf
    - lwan_get_config_path
    - access
    linkageType: ''
    returnType: void
    signature: void print_help(const char *argv0, const struct lwan_config *config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:225,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:226,1
    - Dst: print_build_time_configuration
      Src: /src/lwan/src/bin/lwan/main.c:227,1
    - Dst: print_module_info
      Src: /src/lwan/src/bin/lwan/main.c:228,1
    - Dst: print_handler_info
      Src: /src/lwan/src/bin/lwan/main.c:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 223
    functionDepth: 1
    functionLinenumber: 223
    functionLinenumberEnd: 230
    functionName: print_version
    functionSourceFile: /src/lwan/src/bin/lwan/main.c
    functionUses: 0
    functionsReached:
    - print_module_info
    - print_build_time_configuration
    - print_handler_info
    - printf
    linkageType: ''
    returnType: void
    signature: void print_version(void)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: getopt_long
      Src: /src/lwan/src/bin/lwan/main.c:254,1
    - Dst: free
      Src: /src/lwan/src/bin/lwan/main.c:258,1
    - Dst: strdup
      Src: /src/lwan/src/bin/lwan/main.c:259,1
    - Dst: free
      Src: /src/lwan/src/bin/lwan/main.c:264,1
    - Dst: strdup
      Src: /src/lwan/src/bin/lwan/main.c:265,1
    - Dst: free
      Src: /src/lwan/src/bin/lwan/main.c:269,1
    - Dst: strdup
      Src: /src/lwan/src/bin/lwan/main.c:270,1
    - Dst: free
      Src: /src/lwan/src/bin/lwan/main.c:274,1
    - Dst: strdup
      Src: /src/lwan/src/bin/lwan/main.c:275,1
    - Dst: free
      Src: /src/lwan/src/bin/lwan/main.c:283,1
    - Dst: strdup
      Src: /src/lwan/src/bin/lwan/main.c:284,1
    - Dst: free
      Src: /src/lwan/src/bin/lwan/main.c:289,1
    - Dst: strdup
      Src: /src/lwan/src/bin/lwan/main.c:290,1
    - Dst: strlen
      Src: /src/lwan/src/bin/lwan/main.c:295,1
    - Dst: fprintf
      Src: /src/lwan/src/bin/lwan/main.c:298,1
    - Dst: memcpy
      Src: /src/lwan/src/bin/lwan/main.c:302,1
    - Dst: print_help
      Src: /src/lwan/src/bin/lwan/main.c:308,1
    - Dst: print_version
      Src: /src/lwan/src/bin/lwan/main.c:312,1
    - Dst: printf
      Src: /src/lwan/src/bin/lwan/main.c:316,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 54
    argCount: 5
    argNames:
    - argc
    - argv
    - config
    - root
    - sj
    argTypes:
    - int
    - char*[]
    - struct lwan_config*
    - char*
    - struct lwan_straitjacket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 322
    functionName: parse_args
    functionSourceFile: /src/lwan/src/bin/lwan/main.c
    functionUses: 0
    functionsReached:
    - fprintf
    - strdup
    - print_help
    - free
    - getopt_long
    - printf
    - memcpy
    - print_version
    - strlen
    linkageType: ''
    returnType: enum args
    signature: "enum args parse_args(int argc, char *argv[], struct lwan_config *config,
      char *root,\n    struct lwan_straitjacket *sj)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: getcwd
      Src: /src/lwan/src/bin/lwan/main.c:334,1
    - Dst: lwan_get_default_config
      Src: /src/lwan/src/bin/lwan/main.c:337,1
    - Dst: strdup
      Src: /src/lwan/src/bin/lwan/main.c:338,1
    - Dst: parse_args
      Src: /src/lwan/src/bin/lwan/main.c:340,1
    - Dst: lwan_log_info
      Src: /src/lwan/src/bin/lwan/main.c:342,1
    - Dst: lwan_straitjacket_enforce
      Src: /src/lwan/src/bin/lwan/main.c:347,1
    - Dst: lwan_init_with_config
      Src: /src/lwan/src/bin/lwan/main.c:349,1
    - Dst: SERVE_FILES_SETTINGS
      Src: /src/lwan/src/bin/lwan/main.c:352,1
    - Dst: lwan_set_url_map
      Src: /src/lwan/src/bin/lwan/main.c:355,1
    - Dst: lwan_straitjacket_enforce
      Src: /src/lwan/src/bin/lwan/main.c:358,1
    - Dst: lwan_init_with_config
      Src: /src/lwan/src/bin/lwan/main.c:360,1
    - Dst: lwan_init
      Src: /src/lwan/src/bin/lwan/main.c:362,1
    - Dst: lwan_main_loop
      Src: /src/lwan/src/bin/lwan/main.c:369,1
    - Dst: lwan_shutdown
      Src: /src/lwan/src/bin/lwan/main.c:370,1
    - Dst: free
      Src: /src/lwan/src/bin/lwan/main.c:373,1
    - Dst: free
      Src: /src/lwan/src/bin/lwan/main.c:374,1
    - Dst: free
      Src: /src/lwan/src/bin/lwan/main.c:375,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 324
    functionDepth: 3
    functionLinenumber: 324
    functionLinenumberEnd: 378
    functionName: main
    functionSourceFile: /src/lwan/src/bin/lwan/main.c
    functionUses: 0
    functionsReached:
    - lwan_main_loop
    - strdup
    - lwan_shutdown
    - parse_args
    - lwan_straitjacket_enforce
    - lwan_get_default_config
    - free
    - SERVE_FILES_SETTINGS
    - getcwd
    - lwan_init_with_config
    - lwan_set_url_map
    - lwan_log_info
    - lwan_init
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fuzz_parse_http_request
      Src: /src/lwan/src/bin/fuzz/request_fuzzer.cc:7,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8
      start: 5
    functionDepth: 0
    functionLinenumber: 5
    functionLinenumberEnd: 8
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/lwan/src/bin/fuzz/request_fuzzer.cc
    functionUses: 0
    functionsReached:
    - fuzz_parse_http_request
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/lwan/src/bin/fuzz/pattern_fuzzer.cc:24,1
    - Dst: LWAN_NO_DISCARD
      Src: /src/lwan/src/bin/fuzz/pattern_fuzzer.cc:27,1
    - Dst: str_find
      Src: /src/lwan/src/bin/fuzz/pattern_fuzzer.cc:27,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/bin/fuzz/pattern_fuzzer.cc:28,1
    - Dst: LWAN_NO_DISCARD
      Src: /src/lwan/src/bin/fuzz/pattern_fuzzer.cc:29,1
    - Dst: str_find
      Src: /src/lwan/src/bin/fuzz/pattern_fuzzer.cc:29,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/bin/fuzz/pattern_fuzzer.cc:30,1
    - Dst: LWAN_NO_DISCARD
      Src: /src/lwan/src/bin/fuzz/pattern_fuzzer.cc:31,1
    - Dst: str_find
      Src: /src/lwan/src/bin/fuzz/pattern_fuzzer.cc:31,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/bin/fuzz/pattern_fuzzer.cc:32,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 10
    functionDepth: 1
    functionLinenumber: 10
    functionLinenumberEnd: 35
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/lwan/src/bin/fuzz/pattern_fuzzer.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - str_find
    - LWAN_NO_DISCARD
    - N_ELEMENTS
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_h2_huffman_decode_for_fuzzing
      Src: /src/lwan/src/bin/fuzz/h2_huffman_fuzzer.cc:10,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 11
      start: 8
    functionDepth: 1
    functionLinenumber: 8
    functionLinenumberEnd: 11
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/lwan/src/bin/fuzz/h2_huffman_fuzzer.cc
    functionUses: 0
    functionsReached:
    - lwan_h2_huffman_decode_for_fuzzing
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 32
    functionName: directory_list_generator
    functionSourceFile: /src/lwan/src/bin/fuzz/template_fuzzer.cc
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int directory_list_generator(struct coro *, void *)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWAN_MIN
      Src: /src/lwan/src/bin/fuzz/template_fuzzer.cc:60,1
    - Dst: memcpy
      Src: /src/lwan/src/bin/fuzz/template_fuzzer.cc:61,1
    - Dst: lwan_tpl_compile_string_full
      Src: /src/lwan/src/bin/fuzz/template_fuzzer.cc:64,1
    - Dst: lwan_tpl_free
      Src: /src/lwan/src/bin/fuzz/template_fuzzer.cc:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 70
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/lwan/src/bin/fuzz/template_fuzzer.cc
    functionUses: 0
    functionsReached:
    - memcpy
    - LWAN_MIN
    - lwan_tpl_compile_string_full
    - lwan_tpl_free
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 9
    functionDepth: 0
    functionLinenumber: 9
    functionLinenumberEnd: 14
    functionName: LWAN_NO_DISCARD
    functionSourceFile: /src/lwan/src/bin/fuzz/config_fuzzer.cc
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LWAN_NO_DISCARD(...)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: config_read_line
      Src: /src/lwan/src/bin/fuzz/config_fuzzer.cc:22,1
    - Dst: LWAN_NO_DISCARD
      Src: /src/lwan/src/bin/fuzz/config_fuzzer.cc:25,1
    - Dst: parse_bool
      Src: /src/lwan/src/bin/fuzz/config_fuzzer.cc:25,1
    - Dst: LWAN_NO_DISCARD
      Src: /src/lwan/src/bin/fuzz/config_fuzzer.cc:26,1
    - Dst: parse_long
      Src: /src/lwan/src/bin/fuzz/config_fuzzer.cc:26,1
    - Dst: LWAN_NO_DISCARD
      Src: /src/lwan/src/bin/fuzz/config_fuzzer.cc:27,1
    - Dst: parse_int
      Src: /src/lwan/src/bin/fuzz/config_fuzzer.cc:27,1
    - Dst: LWAN_NO_DISCARD
      Src: /src/lwan/src/bin/fuzz/config_fuzzer.cc:28,1
    - Dst: parse_time_period
      Src: /src/lwan/src/bin/fuzz/config_fuzzer.cc:28,1
    - Dst: dump
      Src: /src/lwan/src/bin/fuzz/config_fuzzer.cc:38,1
    - Dst: config_last_error
      Src: /src/lwan/src/bin/fuzz/config_fuzzer.cc:45,1
    - Dst: printf
      Src: /src/lwan/src/bin/fuzz/config_fuzzer.cc:48,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 2
    argNames:
    - config
    - indent_level
    argTypes:
    - struct config*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 15
    functionDepth: 1
    functionLinenumber: 15
    functionLinenumberEnd: 53
    functionName: dump
    functionSourceFile: /src/lwan/src/bin/fuzz/config_fuzzer.cc
    functionUses: 3
    functionsReached:
    - parse_bool
    - parse_int
    - parse_long
    - dump
    - LWAN_NO_DISCARD
    - printf
    - config_last_error
    - parse_time_period
    - config_read_line
    linkageType: ''
    returnType: bool
    signature: bool dump(struct config *config, int indent_level)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: config_open_for_fuzzing
      Src: /src/lwan/src/bin/fuzz/config_fuzzer.cc:59,1
    - Dst: dump
      Src: /src/lwan/src/bin/fuzz/config_fuzzer.cc:63,1
    - Dst: config_close
      Src: /src/lwan/src/bin/fuzz/config_fuzzer.cc:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 68
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/lwan/src/bin/fuzz/config_fuzzer.cc
    functionUses: 0
    functionsReached:
    - config_close
    - dump
    - config_open_for_fuzzing
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: exit
      Src: /src/lwan/src/bin/testrunner/main.c:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 30
    functionName: LWAN_HANDLER
    functionSourceFile: /src/lwan/src/bin/testrunner/main.c
    functionUses: 0
    functionsReached:
    - exit
    linkageType: ''
    returnType: void
    signature: void LWAN_HANDLER(quit_lwan)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_set_static
      Src: /src/lwan/src/bin/testrunner/main.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 49
    functionName: LWAN_HANDLER
    functionSourceFile: /src/lwan/src/bin/testrunner/main.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_set_static
    linkageType: ''
    returnType: void
    signature: void LWAN_HANDLER(gif_beacon)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_printf
      Src: /src/lwan/src/bin/testrunner/main.c:57,1
    - Dst: lwan_response_send_chunk
      Src: /src/lwan/src/bin/testrunner/main.c:58,1
    - Dst: lwan_strbuf_printf
      Src: /src/lwan/src/bin/testrunner/main.c:61,1
    - Dst: lwan_response_send_chunk
      Src: /src/lwan/src/bin/testrunner/main.c:62,1
    - Dst: lwan_strbuf_printf
      Src: /src/lwan/src/bin/testrunner/main.c:65,1
    - Dst: lwan_response_send_chunk
      Src: /src/lwan/src/bin/testrunner/main.c:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 69
    functionName: LWAN_HANDLER
    functionSourceFile: /src/lwan/src/bin/testrunner/main.c
    functionUses: 0
    functionsReached:
    - lwan_response_send_chunk
    - lwan_strbuf_printf
    linkageType: ''
    returnType: void
    signature: void LWAN_HANDLER(test_chunked_encoding)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_printf
      Src: /src/lwan/src/bin/testrunner/main.c:76,1
    - Dst: lwan_response_send_event
      Src: /src/lwan/src/bin/testrunner/main.c:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 81
    functionName: LWAN_HANDLER
    functionSourceFile: /src/lwan/src/bin/testrunner/main.c
    functionUses: 0
    functionsReached:
    - lwan_response_send_event
    - lwan_strbuf_printf
    linkageType: ''
    returnType: void
    signature: void LWAN_HANDLER(test_server_sent_event)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lwan_request_get_query_param
      Src: /src/lwan/src/bin/testrunner/main.c:85,1
    - Dst: lwan_request_get_query_param
      Src: /src/lwan/src/bin/testrunner/main.c:89,1
    - Dst: lwan_strbuf_printf
      Src: /src/lwan/src/bin/testrunner/main.c:94,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 96
    functionName: LWAN_HANDLER
    functionSourceFile: /src/lwan/src/bin/testrunner/main.c
    functionUses: 0
    functionsReached:
    - lwan_request_get_query_param
    - lwan_strbuf_printf
    linkageType: ''
    returnType: void
    signature: void LWAN_HANDLER(get_query_string)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: coro_malloc
      Src: /src/lwan/src/bin/testrunner/main.c:100,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/bin/testrunner/main.c:101,1
    - Dst: coro_malloc
      Src: /src/lwan/src/bin/testrunner/main.c:104,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/bin/testrunner/main.c:105,1
    - Dst: lwan_request_get_remote_address
      Src: /src/lwan/src/bin/testrunner/main.c:109,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 116
    functionName: LWAN_HANDLER
    functionSourceFile: /src/lwan/src/bin/testrunner/main.c
    functionUses: 0
    functionsReached:
    - lwan_request_get_remote_address
    - coro_malloc
    - UNLIKELY
    linkageType: ''
    returnType: void
    signature: void LWAN_HANDLER(test_proxy)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lwan_request_get_content_type
      Src: /src/lwan/src/bin/testrunner/main.c:124,1
    - Dst: lwan_request_get_request_body
      Src: /src/lwan/src/bin/testrunner/main.c:125,1
    - Dst: memcmp
      Src: /src/lwan/src/bin/testrunner/main.c:131,1
    - Dst: memcmp
      Src: /src/lwan/src/bin/testrunner/main.c:138,1
    - Dst: lwan_strbuf_set_static
      Src: /src/lwan/src/bin/testrunner/main.c:142,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 146
    functionName: LWAN_HANDLER
    functionSourceFile: /src/lwan/src/bin/testrunner/main.c
    functionUses: 0
    functionsReached:
    - lwan_request_get_content_type
    - lwan_request_get_request_body
    - lwan_strbuf_set_static
    - memcmp
    linkageType: ''
    returnType: void
    signature: void LWAN_HANDLER(test_post_will_it_blend)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lwan_request_get_content_type
      Src: /src/lwan/src/bin/testrunner/main.c:153,1
    - Dst: lwan_request_get_request_body
      Src: /src/lwan/src/bin/testrunner/main.c:154,1
    - Dst: memcmp
      Src: /src/lwan/src/bin/testrunner/main.c:160,1
    - Dst: lwan_strbuf_printf
      Src: /src/lwan/src/bin/testrunner/main.c:167,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 171
    functionName: LWAN_HANDLER
    functionSourceFile: /src/lwan/src/bin/testrunner/main.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_printf
    - lwan_request_get_content_type
    - lwan_request_get_request_body
    - memcmp
    linkageType: ''
    returnType: void
    signature: void LWAN_HANDLER(test_post_big)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lwan_request_get_query_param
      Src: /src/lwan/src/bin/testrunner/main.c:185,1
    - Dst: lwan_strbuf_printf
      Src: /src/lwan/src/bin/testrunner/main.c:187,1
    - Dst: lwan_strbuf_set_static
      Src: /src/lwan/src/bin/testrunner/main.c:189,1
    - Dst: lwan_request_get_query_param
      Src: /src/lwan/src/bin/testrunner/main.c:191,1
    - Dst: lwan_strbuf_append_strz
      Src: /src/lwan/src/bin/testrunner/main.c:195,1
    - Dst: lwan_strbuf_append_strz
      Src: /src/lwan/src/bin/testrunner/main.c:196,1
    - Dst: lwan_strbuf_append_printf
      Src: /src/lwan/src/bin/testrunner/main.c:199,1
    - Dst: lwan_strbuf_append_strz
      Src: /src/lwan/src/bin/testrunner/main.c:203,1
    - Dst: lwan_strbuf_append_strz
      Src: /src/lwan/src/bin/testrunner/main.c:204,1
    - Dst: lwan_strbuf_append_printf
      Src: /src/lwan/src/bin/testrunner/main.c:207,1
    - Dst: lwan_request_get_method
      Src: /src/lwan/src/bin/testrunner/main.c:211,1
    - Dst: lwan_strbuf_append_strz
      Src: /src/lwan/src/bin/testrunner/main.c:212,1
    - Dst: lwan_strbuf_append_strz
      Src: /src/lwan/src/bin/testrunner/main.c:213,1
    - Dst: lwan_strbuf_append_printf
      Src: /src/lwan/src/bin/testrunner/main.c:216,1
    - Dst: lwan_request_get_query_param
      Src: /src/lwan/src/bin/testrunner/main.c:221,1
    - Dst: streq
      Src: /src/lwan/src/bin/testrunner/main.c:222,1
    - Dst: lwan_strbuf_append_printf
      Src: /src/lwan/src/bin/testrunner/main.c:223,1
    - Dst: lwan_request_get_id
      Src: /src/lwan/src/bin/testrunner/main.c:224,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 229
    functionName: LWAN_HANDLER
    functionSourceFile: /src/lwan/src/bin/testrunner/main.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_printf
    - lwan_request_get_query_param
    - lwan_strbuf_append_strz
    - lwan_strbuf_append_printf
    - lwan_request_get_id
    - lwan_request_get_method
    - streq
    - lwan_strbuf_set_static
    linkageType: ''
    returnType: void
    signature: void LWAN_HANDLER(hello_world)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_append_printf
      Src: /src/lwan/src/bin/testrunner/main.c:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 201
    functionName: LWAN_ARRAY_FOREACH
    functionSourceFile: /src/lwan/src/bin/testrunner/main.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_append_printf
    linkageType: ''
    returnType: void
    signature: void LWAN_ARRAY_FOREACH(lwan_request_get_cookies(request), iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_append_printf
      Src: /src/lwan/src/bin/testrunner/main.c:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 209
    functionName: LWAN_ARRAY_FOREACH
    functionSourceFile: /src/lwan/src/bin/testrunner/main.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_append_printf
    linkageType: ''
    returnType: void
    signature: void LWAN_ARRAY_FOREACH(lwan_request_get_query_params(request), iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_append_printf
      Src: /src/lwan/src/bin/testrunner/main.c:216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 218
    functionName: LWAN_ARRAY_FOREACH
    functionSourceFile: /src/lwan/src/bin/testrunner/main.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_append_printf
    linkageType: ''
    returnType: void
    signature: void LWAN_ARRAY_FOREACH(lwan_request_get_post_params(request), iter)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lwan_request_get_query_param
      Src: /src/lwan/src/bin/testrunner/main.c:233,1
    - Dst: parse_long
      Src: /src/lwan/src/bin/testrunner/main.c:239,1
    - Dst: clock_gettime
      Src: /src/lwan/src/bin/testrunner/main.c:246,1
    - Dst: lwan_request_sleep
      Src: /src/lwan/src/bin/testrunner/main.c:248,1
    - Dst: clock_gettime
      Src: /src/lwan/src/bin/testrunner/main.c:250,1
    - Dst: lwan_strbuf_printf
      Src: /src/lwan/src/bin/testrunner/main.c:254,1
    - Dst: lwan_strbuf_set_staticz
      Src: /src/lwan/src/bin/testrunner/main.c:257,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 261
    functionName: LWAN_HANDLER
    functionSourceFile: /src/lwan/src/bin/testrunner/main.c
    functionUses: 0
    functionsReached:
    - parse_long
    - lwan_strbuf_printf
    - clock_gettime
    - lwan_request_get_query_param
    - lwan_strbuf_set_staticz
    - lwan_request_sleep
    linkageType: ''
    returnType: void
    signature: void LWAN_HANDLER(sleep)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lwan_request_get_query_param
      Src: /src/lwan/src/bin/testrunner/main.c:265,1
    - Dst: lwan_request_get_header
      Src: /src/lwan/src/bin/testrunner/main.c:270,1
    - Dst: lwan_strbuf_printf
      Src: /src/lwan/src/bin/testrunner/main.c:275,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 263
    functionDepth: 1
    functionLinenumber: 263
    functionLinenumberEnd: 277
    functionName: LWAN_HANDLER
    functionSourceFile: /src/lwan/src/bin/testrunner/main.c
    functionUses: 0
    functionsReached:
    - lwan_request_get_header
    - lwan_request_get_query_param
    - lwan_strbuf_printf
    linkageType: ''
    returnType: void
    signature: void LWAN_HANDLER(custom_header)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_init
      Src: /src/lwan/src/bin/testrunner/main.c:284,1
    - Dst: lwan_main_loop
      Src: /src/lwan/src/bin/testrunner/main.c:285,1
    - Dst: lwan_shutdown
      Src: /src/lwan/src/bin/testrunner/main.c:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 279
    functionDepth: 1
    functionLinenumber: 279
    functionLinenumberEnd: 289
    functionName: main
    functionSourceFile: /src/lwan/src/bin/testrunner/main.c
    functionUses: 0
    functionsReached:
    - lwan_main_loop
    - lwan_init
    - lwan_shutdown
    linkageType: ''
    returnType: int
    signature: int main()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/samples/send-money-json-api/main.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - bytes
    - len
    - data
    argTypes:
    - char*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 100
    functionName: append_to_strbuf
    functionSourceFile: /src/lwan/src/samples/send-money-json-api/main.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_append_str
    linkageType: ''
    returnType: int
    signature: int append_to_strbuf(const char *bytes, size_t len, void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/lwan/src/samples/send-money-json-api/main.c:105,1
    - Dst: localtime_r
      Src: /src/lwan/src/samples/send-money-json-api/main.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 107
    functionName: localtime_now
    functionSourceFile: /src/lwan/src/samples/send-money-json-api/main.c
    functionUses: 0
    functionsReached:
    - time
    - localtime_r
    linkageType: ''
    returnType: struct tm
    signature: struct tm *localtime_now(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_main
      Src: /src/lwan/src/samples/send-money-json-api/main.c:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 151
    functionName: main
    functionSourceFile: /src/lwan/src/samples/send-money-json-api/main.c
    functionUses: 1
    functionsReached:
    - lwan_main
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - align
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 21
    functionName: ROUND_UP
    functionSourceFile: /src/lwan/src/samples/techempower/json.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROUND_UP(x, align)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - field_name_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 92
    functionName: JSON_FIELD_NAME
    functionSourceFile: /src/lwan/src/samples/techempower/json.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JSON_FIELD_NAME(field_name_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - struct_
    - ','
    - field_name_
    - ','
    - type_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 121
    functionName: JSON_OBJ_DESCR_PRIM
    functionSourceFile: /src/lwan/src/samples/techempower/json.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JSON_OBJ_DESCR_PRIM(struct_, field_name_, type_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - struct_
    - ','
    - field_name_
    - ','
    - sub_descr_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 158
    functionName: JSON_OBJ_DESCR_OBJECT
    functionSourceFile: /src/lwan/src/samples/techempower/json.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JSON_OBJ_DESCR_OBJECT(struct_, field_name_, sub_descr_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - struct_
    - ','
    - field_name_
    - ','
    - max_len_
    - ','
    - len_field_
    - ','
    - elem_type_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 201
    functionName: JSON_OBJ_DESCR_ARRAY
    functionSourceFile: /src/lwan/src/samples/techempower/json.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "JSON_OBJ_DESCR_ARRAY(struct_, field_name_, max_len_, len_field_,       \\\n
      \                            elem_type_)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - struct_
    - ','
    - field_name_
    - ','
    - max_len_
    - ','
    - len_field_
    - ','
    - elem_descr_
    - ','
    - elem_descr_len_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 262
    functionName: JSON_OBJ_DESCR_OBJ_ARRAY
    functionSourceFile: /src/lwan/src/samples/techempower/json.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "JSON_OBJ_DESCR_OBJ_ARRAY(struct_, field_name_, max_len_, len_field_,
      \  \\\n                                 elem_descr_, elem_descr_len_)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - struct_
    - ','
    - field_name_
    - ','
    - max_len_
    - ','
    - len_field_
    - ','
    - elem_descr_
    - ','
    - elem_descr_len_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 332
    functionName: JSON_OBJ_DESCR_ARRAY_ARRAY
    functionSourceFile: /src/lwan/src/samples/techempower/json.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "JSON_OBJ_DESCR_ARRAY_ARRAY(struct_, field_name_, max_len_, len_field_,
      \\\n                                   elem_descr_, elem_descr_len_)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - struct_
    - ','
    - json_field_name_
    - ','
    - struct_field_name_
    - ','
    - type_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 357
    functionName: JSON_OBJ_DESCR_PRIM_NAMED
    functionSourceFile: /src/lwan/src/samples/techempower/json.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "JSON_OBJ_DESCR_PRIM_NAMED(struct_, json_field_name_,                   \\\n
      \                                 struct_field_name_, type_)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - struct_
    - ','
    - json_field_name_
    - ','
    - struct_field_name_
    - ','
    - sub_descr_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 374
    functionDepth: 0
    functionLinenumber: 374
    functionLinenumberEnd: 385
    functionName: JSON_OBJ_DESCR_OBJECT_NAMED
    functionSourceFile: /src/lwan/src/samples/techempower/json.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "JSON_OBJ_DESCR_OBJECT_NAMED(struct_, json_field_name_,                 \\\n
      \                                   struct_field_name_, sub_descr_)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - struct_
    - ','
    - json_field_name_
    - ','
    - struct_field_name_
    - ','
    - max_len_
    - ','
    - len_field_
    - ','
    - elem_type_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 424
    functionName: JSON_OBJ_DESCR_ARRAY_NAMED
    functionSourceFile: /src/lwan/src/samples/techempower/json.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "JSON_OBJ_DESCR_ARRAY_NAMED(struct_, json_field_name_,                  \\\n
      \                                  struct_field_name_, max_len_, len_field_,
      \  \\\n                                   elem_type_)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - struct_
    - ','
    - json_field_name_
    - ','
    - struct_field_name_
    - ','
    - max_len_
    - ','
    - len_field_
    - ','
    - elem_descr_
    - ','
    - elem_descr_len_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 471
    functionDepth: 0
    functionLinenumber: 471
    functionLinenumberEnd: 491
    functionName: JSON_OBJ_DESCR_OBJ_ARRAY_NAMED
    functionSourceFile: /src/lwan/src/samples/techempower/json.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "JSON_OBJ_DESCR_OBJ_ARRAY_NAMED(                                        \\\n
      \   struct_, json_field_name_, struct_field_name_, max_len_, len_field_,       \\\n
      \   elem_descr_, elem_descr_len_)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_obj_encode_full
      Src: /src/lwan/src/samples/techempower/json.h:628,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - descr
    - descr_len
    - val
    - append_bytes
    - data
    argTypes:
    - struct json_obj_descr*
    - size_t
    - void*
    - json_append_bytes_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 621
    functionDepth: 1
    functionLinenumber: 621
    functionLinenumberEnd: 630
    functionName: json_obj_encode
    functionSourceFile: /src/lwan/src/samples/techempower/json.h
    functionUses: 0
    functionsReached:
    - json_obj_encode_full
    linkageType: ''
    returnType: int
    signature: "int json_obj_encode(const struct json_obj_descr *descr,\n                                  size_t
      descr_len,\n                                  const void *val,\n                                  json_append_bytes_t
      append_bytes,\n                                  void *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_arr_encode_full
      Src: /src/lwan/src/samples/techempower/json.h:658,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - descr
    - val
    - append_bytes
    - data
    argTypes:
    - struct json_obj_descr*
    - void*
    - json_append_bytes_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 653
    functionDepth: 1
    functionLinenumber: 653
    functionLinenumberEnd: 659
    functionName: json_arr_encode
    functionSourceFile: /src/lwan/src/samples/techempower/json.h
    functionUses: 0
    functionsReached:
    - json_arr_encode_full
    linkageType: ''
    returnType: int
    signature: "int json_arr_encode(const struct json_obj_descr *descr,\n                                  const
      void *val,\n                                  json_append_bytes_t append_bytes,\n
      \                                 void *data)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: db_connect_mysql
      Src: /src/lwan/src/samples/techempower/techempower.c:135,1
    - Dst: db_connect_sqlite
      Src: /src/lwan/src/samples/techempower/techempower.c:142,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/samples/techempower/techempower.c:146,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/samples/techempower/techempower.c:150,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/samples/techempower/techempower.c:151,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 155
    functionName: LWAN_LAZY_THREAD_LOCAL
    functionSourceFile: /src/lwan/src/samples/techempower/techempower.c
    functionUses: 0
    functionsReached:
    - db_connect_sqlite
    - db_connect_mysql
    - lwan_log_critical
    - __builtin_unreachable
    linkageType: ''
    returnType: void
    signature: void LWAN_LAZY_THREAD_LOCAL(struct db *, get_db)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/samples/techempower/techempower.c:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - bytes
    - len
    - data
    argTypes:
    - char*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 162
    functionName: append_to_strbuf
    functionSourceFile: /src/lwan/src/samples/techempower/techempower.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_append_str
    linkageType: ''
    returnType: int
    signature: int append_to_strbuf(const char *bytes, size_t len, void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_obj_encode_full
      Src: /src/lwan/src/samples/techempower/techempower.c:170,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - response
    - descr
    - descr_len
    - data
    argTypes:
    - struct lwan_response*
    - struct json_obj_descr*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 176
    functionName: json_response_obj
    functionSourceFile: /src/lwan/src/samples/techempower/techempower.c
    functionUses: 0
    functionsReached:
    - json_obj_encode_full
    linkageType: ''
    returnType: enum lwan_http_status
    signature: "enum lwan_http_status json_response_obj(struct lwan_response *response,\n
      \                 const struct json_obj_descr *descr,\n                  size_t
      descr_len,\n                  const void *data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_arr_encode_full
      Src: /src/lwan/src/samples/techempower/techempower.c:183,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - response
    - descr
    - data
    argTypes:
    - struct lwan_response*
    - struct json_obj_descr*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 189
    functionName: json_response_arr
    functionSourceFile: /src/lwan/src/samples/techempower/techempower.c
    functionUses: 0
    functionsReached:
    - json_arr_encode_full
    linkageType: ''
    returnType: enum lwan_http_status
    signature: "enum lwan_http_status json_response_arr(struct lwan_response *response,\n
      \                 const struct json_obj_descr *descr,\n                  const
      void *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_response_obj
      Src: /src/lwan/src/samples/techempower/techempower.c:197,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/samples/techempower/techempower.c:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 191
    functionDepth: 2
    functionLinenumber: 191
    functionLinenumberEnd: 199
    functionName: LWAN_HANDLER
    functionSourceFile: /src/lwan/src/samples/techempower/techempower.c
    functionUses: 0
    functionsReached:
    - json_response_obj
    - N_ELEMENTS
    linkageType: ''
    returnType: void
    signature: void LWAN_HANDLER(json)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/techempower.c:204,1
    - Dst: db_stmt_bind
      Src: /src/lwan/src/samples/techempower/techempower.c:204,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/techempower.c:209,1
    - Dst: db_stmt_step
      Src: /src/lwan/src/samples/techempower/techempower.c:209,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - stmt
    - out
    - key
    argTypes:
    - struct db_stmt*
    - struct db_json*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 216
    functionName: db_query_key
    functionSourceFile: /src/lwan/src/samples/techempower/techempower.c
    functionUses: 0
    functionsReached:
    - db_stmt_step
    - UNLIKELY
    - db_stmt_bind
    linkageType: ''
    returnType: bool
    signature: bool db_query_key(struct db_stmt *stmt, struct db_json *out, int key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_random_uint64
      Src: /src/lwan/src/samples/techempower/techempower.c:220,1
    - Dst: db_query_key
      Src: /src/lwan/src/samples/techempower/techempower.c:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - stmt
    - out
    argTypes:
    - struct db_stmt*
    - struct db_json*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 218
    functionDepth: 2
    functionLinenumber: 218
    functionLinenumberEnd: 222
    functionName: db_query
    functionSourceFile: /src/lwan/src/samples/techempower/techempower.c
    functionUses: 0
    functionsReached:
    - lwan_random_uint64
    - db_query_key
    linkageType: ''
    returnType: bool
    signature: bool db_query(struct db_stmt *stmt, struct db_json *out)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: db_prepare_stmt
      Src: /src/lwan/src/samples/techempower/techempower.c:226,1
    - Dst: get_db
      Src: /src/lwan/src/samples/techempower/techempower.c:226,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/techempower.c:229,1
    - Dst: lwan_log_debug
      Src: /src/lwan/src/samples/techempower/techempower.c:230,1
    - Dst: db_query
      Src: /src/lwan/src/samples/techempower/techempower.c:234,1
    - Dst: db_stmt_finalize
      Src: /src/lwan/src/samples/techempower/techempower.c:236,1
    - Dst: json_response_obj
      Src: /src/lwan/src/samples/techempower/techempower.c:243,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/samples/techempower/techempower.c:243,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 224
    functionDepth: 3
    functionLinenumber: 224
    functionLinenumberEnd: 245
    functionName: LWAN_HANDLER
    functionSourceFile: /src/lwan/src/samples/techempower/techempower.c
    functionUses: 0
    functionsReached:
    - db_stmt_finalize
    - N_ELEMENTS
    - db_prepare_stmt
    - lwan_log_debug
    - get_db
    - json_response_obj
    - UNLIKELY
    - db_query
    linkageType: ''
    returnType: void
    signature: void LWAN_HANDLER(db)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_request_get_query_param
      Src: /src/lwan/src/samples/techempower/techempower.c:249,1
    - Dst: LIKELY
      Src: /src/lwan/src/samples/techempower/techempower.c:250,1
    - Dst: LWAN_MIN
      Src: /src/lwan/src/samples/techempower/techempower.c:251,1
    - Dst: LWAN_MAX
      Src: /src/lwan/src/samples/techempower/techempower.c:251,1
    - Dst: parse_long
      Src: /src/lwan/src/samples/techempower/techempower.c:251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct lwan_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 247
    functionDepth: 1
    functionLinenumber: 247
    functionLinenumberEnd: 253
    functionName: get_number_of_queries
    functionSourceFile: /src/lwan/src/samples/techempower/techempower.c
    functionUses: 0
    functionsReached:
    - LWAN_MAX
    - parse_long
    - lwan_request_get_query_param
    - LIKELY
    - LWAN_MIN
    linkageType: ''
    returnType: long
    signature: long get_number_of_queries(struct lwan_request *request)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_number_of_queries
      Src: /src/lwan/src/samples/techempower/techempower.c:258,1
    - Dst: db_prepare_stmt
      Src: /src/lwan/src/samples/techempower/techempower.c:260,1
    - Dst: get_db
      Src: /src/lwan/src/samples/techempower/techempower.c:260,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/techempower.c:261,1
    - Dst: db_query
      Src: /src/lwan/src/samples/techempower/techempower.c:266,1
    - Dst: lwan_strbuf_grow_to
      Src: /src/lwan/src/samples/techempower/techempower.c:273,1
    - Dst: json_response_arr
      Src: /src/lwan/src/samples/techempower/techempower.c:277,1
    - Dst: db_stmt_finalize
      Src: /src/lwan/src/samples/techempower/techempower.c:279,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 255
    functionDepth: 3
    functionLinenumber: 255
    functionLinenumberEnd: 282
    functionName: LWAN_HANDLER
    functionSourceFile: /src/lwan/src/samples/techempower/techempower.c
    functionUses: 0
    functionsReached:
    - db_stmt_finalize
    - lwan_strbuf_grow_to
    - json_response_arr
    - get_number_of_queries
    - db_prepare_stmt
    - get_db
    - UNLIKELY
    - db_query
    linkageType: ''
    returnType: void
    signature: void LWAN_HANDLER(queries)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/samples/techempower/techempower.c:299,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/techempower.c:300,1
    - Dst: db_prepare_stmt
      Src: /src/lwan/src/samples/techempower/techempower.c:303,1
    - Dst: get_db
      Src: /src/lwan/src/samples/techempower/techempower.c:303,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/techempower.c:304,1
    - Dst: free
      Src: /src/lwan/src/samples/techempower/techempower.c:305,1
    - Dst: db_query_key
      Src: /src/lwan/src/samples/techempower/techempower.c:309,1
    - Dst: free
      Src: /src/lwan/src/samples/techempower/techempower.c:310,1
    - Dst: db_stmt_finalize
      Src: /src/lwan/src/samples/techempower/techempower.c:314,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - keyptr
    - context
    - create_ctx
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 290
    functionDepth: 2
    functionLinenumber: 290
    functionLinenumberEnd: 317
    functionName: cached_queries_new
    functionSourceFile: /src/lwan/src/samples/techempower/techempower.c
    functionUses: 0
    functionsReached:
    - db_stmt_finalize
    - free
    - db_prepare_stmt
    - db_query_key
    - get_db
    - malloc
    - UNLIKELY
    linkageType: ''
    returnType: struct cache_entry
    signature: "struct cache_entry *cached_queries_new(const void *keyptr,\n                                              void
      *context,\n                                              void *create_ctx\n
      \                                             __attribute__((unused)))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/lwan/src/samples/techempower/techempower.c:321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - entry
    - context
    argTypes:
    - struct cache_entry*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 322
    functionName: cached_queries_free
    functionSourceFile: /src/lwan/src/samples/techempower/techempower.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void cached_queries_free(struct cache_entry *entry, void *context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_number_of_queries
      Src: /src/lwan/src/samples/techempower/techempower.c:326,1
    - Dst: lwan_random_uint64
      Src: /src/lwan/src/samples/techempower/techempower.c:331,1
    - Dst: cache_get_and_ref_entry
      Src: /src/lwan/src/samples/techempower/techempower.c:334,1
    - Dst: lwan_strbuf_grow_to
      Src: /src/lwan/src/samples/techempower/techempower.c:346,1
    - Dst: json_response_arr
      Src: /src/lwan/src/samples/techempower/techempower.c:349,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 324
    functionDepth: 2
    functionLinenumber: 324
    functionLinenumberEnd: 350
    functionName: LWAN_HANDLER
    functionSourceFile: /src/lwan/src/samples/techempower/techempower.c
    functionUses: 0
    functionsReached:
    - json_response_arr
    - lwan_strbuf_grow_to
    - cache_get_and_ref_entry
    - get_number_of_queries
    - lwan_random_uint64
    linkageType: ''
    returnType: void
    signature: void LWAN_HANDLER(cached_queries)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_set_static
      Src: /src/lwan/src/samples/techempower/techempower.c:354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 352
    functionDepth: 1
    functionLinenumber: 352
    functionLinenumberEnd: 360
    functionName: LWAN_HANDLER
    functionSourceFile: /src/lwan/src/samples/techempower/techempower.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_set_static
    linkageType: ''
    returnType: void
    signature: void LWAN_HANDLER(plaintext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/lwan/src/samples/techempower/techempower.c:367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 362
    functionDepth: 0
    functionLinenumber: 362
    functionLinenumberEnd: 368
    functionName: fortune_compare
    functionSourceFile: /src/lwan/src/samples/techempower/techempower.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int fortune_compare(const void *a, const void *b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: coro_strdup
      Src: /src/lwan/src/samples/techempower/techempower.c:378,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/techempower.c:379,1
    - Dst: fortune_array_append
      Src: /src/lwan/src/samples/techempower/techempower.c:382,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/techempower.c:383,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - coro
    - fortunes
    - id
    - message
    argTypes:
    - struct coro*
    - struct fortune_array*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 370
    functionDepth: 1
    functionLinenumber: 370
    functionLinenumberEnd: 390
    functionName: append_fortune
    functionSourceFile: /src/lwan/src/samples/techempower/techempower.c
    functionUses: 0
    functionsReached:
    - coro_strdup
    - fortune_array_append
    - UNLIKELY
    linkageType: ''
    returnType: bool
    signature: "bool append_fortune(struct coro *coro,\n                           struct
      fortune_array *fortunes,\n                           int id,\n                           const
      char *message)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: db_prepare_stmt
      Src: /src/lwan/src/samples/techempower/techempower.c:399,1
    - Dst: get_db
      Src: /src/lwan/src/samples/techempower/techempower.c:399,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/techempower.c:400,1
    - Dst: fortune_array_init
      Src: /src/lwan/src/samples/techempower/techempower.c:403,1
    - Dst: db_stmt_step
      Src: /src/lwan/src/samples/techempower/techempower.c:407,1
    - Dst: append_fortune
      Src: /src/lwan/src/samples/techempower/techempower.c:408,1
    - Dst: append_fortune
      Src: /src/lwan/src/samples/techempower/techempower.c:412,1
    - Dst: fortune_array_sort
      Src: /src/lwan/src/samples/techempower/techempower.c:416,1
    - Dst: LWAN_ARRAY_FOREACH
      Src: /src/lwan/src/samples/techempower/techempower.c:419,1
    - Dst: coro_yield
      Src: /src/lwan/src/samples/techempower/techempower.c:422,1
    - Dst: fortune_array_reset
      Src: /src/lwan/src/samples/techempower/techempower.c:426,1
    - Dst: db_stmt_finalize
      Src: /src/lwan/src/samples/techempower/techempower.c:427,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 2
    argNames:
    - coro
    - data
    argTypes:
    - struct coro*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 392
    functionDepth: 2
    functionLinenumber: 392
    functionLinenumberEnd: 429
    functionName: fortune_list_generator
    functionSourceFile: /src/lwan/src/samples/techempower/techempower.c
    functionUses: 0
    functionsReached:
    - append_fortune
    - fortune_array_reset
    - db_stmt_finalize
    - db_stmt_step
    - fortune_array_init
    - fortune_array_sort
    - LWAN_ARRAY_FOREACH
    - db_prepare_stmt
    - coro_yield
    - get_db
    - UNLIKELY
    linkageType: ''
    returnType: int
    signature: int fortune_list_generator(struct coro *coro, void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_grow_to
      Src: /src/lwan/src/samples/techempower/techempower.c:435,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/techempower.c:437,1
    - Dst: lwan_tpl_apply_with_buffer
      Src: /src/lwan/src/samples/techempower/techempower.c:437,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 431
    functionDepth: 1
    functionLinenumber: 431
    functionLinenumberEnd: 444
    functionName: LWAN_HANDLER
    functionSourceFile: /src/lwan/src/samples/techempower/techempower.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_grow_to
    - UNLIKELY
    - lwan_tpl_apply_with_buffer
    linkageType: ''
    returnType: void
    signature: void LWAN_HANDLER(fortunes)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: exit
      Src: /src/lwan/src/samples/techempower/techempower.c:448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 446
    functionDepth: 0
    functionLinenumber: 446
    functionLinenumberEnd: 450
    functionName: LWAN_HANDLER
    functionSourceFile: /src/lwan/src/samples/techempower/techempower.c
    functionUses: 0
    functionsReached:
    - exit
    linkageType: ''
    returnType: void
    signature: void LWAN_HANDLER(quit_lwan)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lwan_init
      Src: /src/lwan/src/samples/techempower/techempower.c:456,1
    - Dst: getenv
      Src: /src/lwan/src/samples/techempower/techempower.c:458,1
    - Dst: getenv
      Src: /src/lwan/src/samples/techempower/techempower.c:461,1
    - Dst: getenv
      Src: /src/lwan/src/samples/techempower/techempower.c:462,1
    - Dst: getenv
      Src: /src/lwan/src/samples/techempower/techempower.c:463,1
    - Dst: getenv
      Src: /src/lwan/src/samples/techempower/techempower.c:464,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/samples/techempower/techempower.c:468,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/samples/techempower/techempower.c:470,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/samples/techempower/techempower.c:472,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/samples/techempower/techempower.c:474,1
    - Dst: lwan_tpl_compile_string_full
      Src: /src/lwan/src/samples/techempower/techempower.c:486,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/samples/techempower/techempower.c:489,1
    - Dst: cache_create_full
      Src: /src/lwan/src/samples/techempower/techempower.c:491,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/samples/techempower/techempower.c:497,1
    - Dst: cache_get_and_ref_entry
      Src: /src/lwan/src/samples/techempower/techempower.c:502,1
    - Dst: cache_make_read_only
      Src: /src/lwan/src/samples/techempower/techempower.c:505,1
    - Dst: lwan_main_loop
      Src: /src/lwan/src/samples/techempower/techempower.c:507,1
    - Dst: cache_destroy
      Src: /src/lwan/src/samples/techempower/techempower.c:509,1
    - Dst: lwan_tpl_free
      Src: /src/lwan/src/samples/techempower/techempower.c:510,1
    - Dst: lwan_shutdown
      Src: /src/lwan/src/samples/techempower/techempower.c:511,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 452
    functionDepth: 1
    functionLinenumber: 452
    functionLinenumberEnd: 514
    functionName: main
    functionSourceFile: /src/lwan/src/samples/techempower/techempower.c
    functionUses: 1
    functionsReached:
    - lwan_main_loop
    - cache_create_full
    - lwan_shutdown
    - lwan_log_critical
    - cache_make_read_only
    - lwan_tpl_compile_string_full
    - cache_destroy
    - lwan_init
    - getenv
    - lwan_tpl_free
    - cache_get_and_ref_entry
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - lexer
    - token
    - empty_token
    argTypes:
    - struct lexer*
    - struct token*
    - enum json_tokens
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 58
    functionName: lexer_consume
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool lexer_consume(struct lexer *lexer,\n                          struct
      token *token,\n                          enum json_tokens empty_token)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lexer_consume
      Src: /src/lwan/src/samples/techempower/json.c:63,1
    - Dst: struct lexer*::state
      Src: /src/lwan/src/samples/techempower/json.c:67,1
    - Dst: lexer_consume
      Src: /src/lwan/src/samples/techempower/json.c:70,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - lexer
    - token
    argTypes:
    - struct lexer*
    - struct token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 71
    functionName: lexer_next
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached:
    - struct lexer*::state
    - lexer_consume
    linkageType: ''
    returnType: bool
    signature: bool lexer_next(struct lexer *lexer, struct token *token)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - lexer
    - token
    argTypes:
    - struct lexer*
    - enum json_tokens
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 81
    functionName: emit
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void emit(struct lexer *lexer, enum json_tokens token)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: emit
      Src: /src/lwan/src/samples/techempower/json.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - lexer
    - token
    argTypes:
    - struct lexer*
    - enum json_tokens
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 87
    functionName: emit_cont
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached:
    - emit
    linkageType: ''
    returnType: void
    signature: void * emit_cont(struct lexer *lexer, enum json_tokens token)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: emit
      Src: /src/lwan/src/samples/techempower/json.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - lexer
    - token
    argTypes:
    - struct lexer*
    - enum json_tokens
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 93
    functionName: emit_end
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached:
    - emit
    linkageType: ''
    returnType: void
    signature: void * emit_end(struct lexer *lexer, enum json_tokens token)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 104
    functionName: next
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int next(struct lexer *lexer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 106
    functionName: ignore
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ignore(struct lexer *lexer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 108
    functionName: backup
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void backup(struct lexer *lexer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/lwan/src/samples/techempower/json.c:112,1
    - Dst: backup
      Src: /src/lwan/src/samples/techempower/json.c:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 117
    functionName: peek
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached:
    - backup
    - next
    linkageType: ''
    returnType: int
    signature: int peek(struct lexer *lexer)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: ignore
      Src: /src/lwan/src/samples/techempower/json.c:121,1
    - Dst: next
      Src: /src/lwan/src/samples/techempower/json.c:124,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/json.c:126,1
    - Dst: emit_end
      Src: /src/lwan/src/samples/techempower/json.c:127,1
    - Dst: next
      Src: /src/lwan/src/samples/techempower/json.c:131,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/json.c:142,1
    - Dst: isxdigit
      Src: /src/lwan/src/samples/techempower/json.c:142,1
    - Dst: next
      Src: /src/lwan/src/samples/techempower/json.c:142,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/json.c:146,1
    - Dst: isxdigit
      Src: /src/lwan/src/samples/techempower/json.c:146,1
    - Dst: next
      Src: /src/lwan/src/samples/techempower/json.c:146,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/json.c:150,1
    - Dst: isxdigit
      Src: /src/lwan/src/samples/techempower/json.c:150,1
    - Dst: next
      Src: /src/lwan/src/samples/techempower/json.c:150,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/json.c:154,1
    - Dst: isxdigit
      Src: /src/lwan/src/samples/techempower/json.c:154,1
    - Dst: next
      Src: /src/lwan/src/samples/techempower/json.c:154,1
    - Dst: backup
      Src: /src/lwan/src/samples/techempower/json.c:165,1
    - Dst: emit
      Src: /src/lwan/src/samples/techempower/json.c:166,1
    - Dst: next
      Src: /src/lwan/src/samples/techempower/json.c:168,1
    - Dst: ignore
      Src: /src/lwan/src/samples/techempower/json.c:169,1
    - Dst: emit_end
      Src: /src/lwan/src/samples/techempower/json.c:176,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 51
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 177
    functionName: lexer_string
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached:
    - isxdigit
    - emit
    - ignore
    - emit_end
    - backup
    - UNLIKELY
    - next
    linkageType: ''
    returnType: void
    signature: void *lexer_string(struct lexer *lexer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/json.c:182,1
    - Dst: next
      Src: /src/lwan/src/samples/techempower/json.c:182,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - lexer
    - run
    argTypes:
    - struct lexer*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 188
    functionName: accept_run
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached:
    - UNLIKELY
    - next
    linkageType: ''
    returnType: int
    signature: int accept_run(struct lexer *lexer, const char *run)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/lwan/src/samples/techempower/json.c:194,1
    - Dst: LIKELY
      Src: /src/lwan/src/samples/techempower/json.c:196,1
    - Dst: accept_run
      Src: /src/lwan/src/samples/techempower/json.c:196,1
    - Dst: emit_cont
      Src: /src/lwan/src/samples/techempower/json.c:197,1
    - Dst: LIKELY
      Src: /src/lwan/src/samples/techempower/json.c:201,1
    - Dst: accept_run
      Src: /src/lwan/src/samples/techempower/json.c:201,1
    - Dst: emit_cont
      Src: /src/lwan/src/samples/techempower/json.c:202,1
    - Dst: emit_end
      Src: /src/lwan/src/samples/techempower/json.c:207,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 208
    functionName: lexer_boolean
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached:
    - emit_cont
    - accept_run
    - LIKELY
    - emit_end
    - next
    linkageType: ''
    returnType: void
    signature: void *lexer_boolean(struct lexer *lexer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/json.c:212,1
    - Dst: accept_run
      Src: /src/lwan/src/samples/techempower/json.c:212,1
    - Dst: emit_end
      Src: /src/lwan/src/samples/techempower/json.c:213,1
    - Dst: emit_cont
      Src: /src/lwan/src/samples/techempower/json.c:216,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 210
    functionDepth: 1
    functionLinenumber: 210
    functionLinenumberEnd: 217
    functionName: lexer_null
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached:
    - accept_run
    - emit_end
    - emit_cont
    - UNLIKELY
    linkageType: ''
    returnType: void
    signature: void *lexer_null(struct lexer *lexer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/lwan/src/samples/techempower/json.c:222,1
    - Dst: isdigit
      Src: /src/lwan/src/samples/techempower/json.c:224,1
    - Dst: backup
      Src: /src/lwan/src/samples/techempower/json.c:228,1
    - Dst: emit_cont
      Src: /src/lwan/src/samples/techempower/json.c:229,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 231
    functionName: lexer_number
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached:
    - emit_cont
    - backup
    - next
    - isdigit
    linkageType: ''
    returnType: void
    signature: void *lexer_number(struct lexer *lexer)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/lwan/src/samples/techempower/json.c:236,1
    - Dst: emit_end
      Src: /src/lwan/src/samples/techempower/json.c:240,1
    - Dst: emit_cont
      Src: /src/lwan/src/samples/techempower/json.c:248,1
    - Dst: LIKELY
      Src: /src/lwan/src/samples/techempower/json.c:261,1
    - Dst: isdigit
      Src: /src/lwan/src/samples/techempower/json.c:261,1
    - Dst: peek
      Src: /src/lwan/src/samples/techempower/json.c:261,1
    - Dst: isspace
      Src: /src/lwan/src/samples/techempower/json.c:267,1
    - Dst: ignore
      Src: /src/lwan/src/samples/techempower/json.c:268,1
    - Dst: LIKELY
      Src: /src/lwan/src/samples/techempower/json.c:272,1
    - Dst: isdigit
      Src: /src/lwan/src/samples/techempower/json.c:272,1
    - Dst: emit_end
      Src: /src/lwan/src/samples/techempower/json.c:276,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 233
    functionDepth: 1
    functionLinenumber: 233
    functionLinenumberEnd: 279
    functionName: lexer_json
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached:
    - isspace
    - emit_cont
    - peek
    - LIKELY
    - ignore
    - emit_end
    - next
    - isdigit
    linkageType: ''
    returnType: void
    signature: void *lexer_json(struct lexer *lexer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - lexer
    - data
    - len
    argTypes:
    - struct lexer*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 288
    functionName: lexer_init
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void lexer_init(struct lexer *lexer, char *data, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lexer_init
      Src: /src/lwan/src/samples/techempower/json.c:294,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/json.c:296,1
    - Dst: lexer_next
      Src: /src/lwan/src/samples/techempower/json.c:296,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/json.c:300,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - json
    - data
    - len
    argTypes:
    - struct json_obj*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 290
    functionDepth: 2
    functionLinenumber: 290
    functionLinenumberEnd: 305
    functionName: obj_init
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached:
    - lexer_next
    - lexer_init
    - UNLIKELY
    linkageType: ''
    returnType: int
    signature: int obj_init(struct json_obj *json, char *data, size_t len)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - token
    argTypes:
    - enum json_tokens
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 320
    functionName: element_token
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int element_token(enum json_tokens token)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/json.c:326,1
    - Dst: lexer_next
      Src: /src/lwan/src/samples/techempower/json.c:326,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/json.c:339,1
    - Dst: lexer_next
      Src: /src/lwan/src/samples/techempower/json.c:339,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/json.c:343,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/json.c:357,1
    - Dst: lexer_next
      Src: /src/lwan/src/samples/techempower/json.c:357,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/json.c:361,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/json.c:366,1
    - Dst: lexer_next
      Src: /src/lwan/src/samples/techempower/json.c:366,1
    - Dst: element_token
      Src: /src/lwan/src/samples/techempower/json.c:370,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 2
    argNames:
    - json
    - kv
    argTypes:
    - struct json_obj*
    - struct json_obj_key_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 322
    functionDepth: 2
    functionLinenumber: 322
    functionLinenumberEnd: 371
    functionName: obj_next
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached:
    - lexer_next
    - UNLIKELY
    - element_token
    linkageType: ''
    returnType: int
    signature: int obj_next(struct json_obj *json, struct json_obj_key_value *kv)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/json.c:375,1
    - Dst: lexer_next
      Src: /src/lwan/src/samples/techempower/json.c:375,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/json.c:384,1
    - Dst: lexer_next
      Src: /src/lwan/src/samples/techempower/json.c:384,1
    - Dst: element_token
      Src: /src/lwan/src/samples/techempower/json.c:389,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - json
    - value
    argTypes:
    - struct json_obj*
    - struct token*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 373
    functionDepth: 2
    functionLinenumber: 373
    functionLinenumberEnd: 390
    functionName: arr_next
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached:
    - lexer_next
    - UNLIKELY
    - element_token
    linkageType: ''
    returnType: int
    signature: int arr_next(struct json_obj *json, struct token *value)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strtol
      Src: /src/lwan/src/samples/techempower/json.c:404,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - token
    - num
    argTypes:
    - struct token*
    - int32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 422
    functionName: decode_num
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached:
    - strtol
    linkageType: ''
    returnType: int
    signature: int decode_num(const struct token *token, int32_t *num)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - type1
    - type2
    argTypes:
    - enum json_tokens
    - enum json_tokens
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 424
    functionDepth: 0
    functionLinenumber: 424
    functionLinenumberEnd: 431
    functionName: equivalent_types
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool equivalent_types(enum json_tokens type1, enum json_tokens type2)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: equivalent_types
      Src: /src/lwan/src/samples/techempower/json.c:450,1
    - Dst: obj_parse
      Src: /src/lwan/src/samples/techempower/json.c:456,1
    - Dst: arr_parse
      Src: /src/lwan/src/samples/techempower/json.c:459,1
    - Dst: decode_num
      Src: /src/lwan/src/samples/techempower/json.c:472,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 5
    argNames:
    - obj
    - descr
    - value
    - field
    - val
    argTypes:
    - struct json_obj*
    - struct json_obj_descr*
    - struct token*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 443
    functionDepth: 1
    functionLinenumber: 443
    functionLinenumberEnd: 485
    functionName: decode_value
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached:
    - obj_parse
    - equivalent_types
    - arr_parse
    - decode_num
    linkageType: ''
    returnType: int
    signature: "int decode_value(struct json_obj *obj,\n                        const
      struct json_obj_descr *descr,\n                        struct token *value,\n
      \                       void *field,\n                        void *val)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: get_elem_size
      Src: /src/lwan/src/samples/techempower/json.c:499,1
    - Dst: get_elem_size
      Src: /src/lwan/src/samples/techempower/json.c:505,1
    - Dst: ROUND_UP
      Src: /src/lwan/src/samples/techempower/json.c:507,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 1
    argNames:
    - descr
    argTypes:
    - struct json_obj_descr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 487
    functionDepth: 1
    functionLinenumber: 487
    functionLinenumberEnd: 515
    functionName: get_elem_size
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 1
    functionsReached:
    - ROUND_UP
    - get_elem_size
    linkageType: ''
    returnType: ptrdiff_t
    signature: ptrdiff_t get_elem_size(const struct json_obj_descr *descr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_elem_size
      Src: /src/lwan/src/samples/techempower/json.c:523,1
    - Dst: assert
      Src: /src/lwan/src/samples/techempower/json.c:528,1
    - Dst: arr_next
      Src: /src/lwan/src/samples/techempower/json.c:532,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/json.c:537,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/json.c:541,1
    - Dst: decode_value
      Src: /src/lwan/src/samples/techempower/json.c:541,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 5
    argNames:
    - obj
    - elem_descr
    - max_elements
    - field
    - val
    argTypes:
    - struct json_obj*
    - struct json_obj_descr*
    - size_t
    - void*
    - void*
    assertStmts:
    - condition: (elem_size > 0)
      pos:
        line_end: 527
        line_start: 527
        source_file: /src/lwan/src/samples/techempower/json.c
    constantsTouched: []
    func_position:
      end: 550
      start: 517
    functionDepth: 3
    functionLinenumber: 517
    functionLinenumberEnd: 550
    functionName: arr_parse
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 1
    functionsReached:
    - arr_next
    - decode_value
    - assert
    - UNLIKELY
    - get_elem_size
    linkageType: ''
    returnType: int
    signature: "int arr_parse(struct json_obj *obj,\n                     const struct
      json_obj_descr *elem_descr,\n                     size_t max_elements,\n                     void
      *field,\n                     void *val)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: obj_next
      Src: /src/lwan/src/samples/techempower/json.c:562,1
    - Dst: memcmp
      Src: /src/lwan/src/samples/techempower/json.c:580,1
    - Dst: decode_value
      Src: /src/lwan/src/samples/techempower/json.c:585,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/json.c:586,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/json.c:586,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 4
    argNames:
    - obj
    - descr
    - descr_len
    - val
    argTypes:
    - struct json_obj*
    - struct json_obj_descr*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 552
    functionDepth: 3
    functionLinenumber: 552
    functionLinenumberEnd: 596
    functionName: obj_parse
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 1
    functionsReached:
    - decode_value
    - memcmp
    - UNLIKELY
    - obj_next
    linkageType: ''
    returnType: int
    signature: "int obj_parse(struct json_obj *obj,\n                     const struct
      json_obj_descr *descr,\n                     size_t descr_len,\n                     void
      *val)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/samples/techempower/json.c:607,1
    - Dst: obj_init
      Src: /src/lwan/src/samples/techempower/json.c:609,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/json.c:610,1
    - Dst: obj_parse
      Src: /src/lwan/src/samples/techempower/json.c:614,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 5
    argNames:
    - payload
    - len
    - descr
    - descr_len
    - val
    argTypes:
    - char*
    - size_t
    - struct json_obj_descr*
    - size_t
    - void*
    assertStmts:
    - condition: (descr_len < (sizeof(ret) * CHAR_BIT - 1))
      pos:
        line_end: 606
        line_start: 606
        source_file: /src/lwan/src/samples/techempower/json.c
    constantsTouched: []
    func_position:
      end: 615
      start: 598
    functionDepth: 4
    functionLinenumber: 598
    functionLinenumberEnd: 615
    functionName: json_obj_parse
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached:
    - UNLIKELY
    - obj_parse
    - obj_init
    - assert
    linkageType: ''
    returnType: int
    signature: "int json_obj_parse(char *payload,\n                   size_t len,\n
      \                  const struct json_obj_descr *descr,\n                   size_t
      descr_len,\n                   void *val)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - v
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 621
    functionDepth: 0
    functionLinenumber: 621
    functionLinenumberEnd: 624
    functionName: has_zero
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE has_zero(uint64_t v)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: has_zero
      Src: /src/lwan/src/samples/techempower/json.c:628,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - x
    - n
    argTypes:
    - uint64_t
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 626
    functionDepth: 1
    functionLinenumber: 626
    functionLinenumberEnd: 629
    functionName: has_value
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached:
    - has_zero
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE has_value(uint64_t x, char n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: has_value
      Src: /src/lwan/src/samples/techempower/json.c:634,1
    - Dst: __builtin_clzl
      Src: /src/lwan/src/samples/techempower/json.c:635,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - chr
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 631
    functionDepth: 2
    functionLinenumber: 631
    functionLinenumberEnd: 636
    functionName: escape_as
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached:
    - has_value
    - __builtin_clzl
    linkageType: ''
    returnType: char
    signature: char escape_as(char chr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: escape_as
      Src: /src/lwan/src/samples/techempower/json.c:647,1
    - Dst: append_bytes
      Src: /src/lwan/src/samples/techempower/json.c:653,1
    - Dst: append_bytes
      Src: /src/lwan/src/samples/techempower/json.c:657,1
    - Dst: append_bytes
      Src: /src/lwan/src/samples/techempower/json.c:662,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - str
    - append_bytes
    - data
    argTypes:
    - char*
    - json_append_bytes_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 638
    functionDepth: 3
    functionLinenumber: 638
    functionLinenumberEnd: 665
    functionName: json_escape_internal
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached:
    - append_bytes
    - escape_as
    linkageType: ''
    returnType: int
    signature: "int json_escape_internal(const char *str,\n                                json_append_bytes_t
      append_bytes,\n                                void *data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: escape_as
      Src: /src/lwan/src/samples/techempower/json.c:673,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - str
    - len
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 667
    functionDepth: 3
    functionLinenumber: 667
    functionLinenumberEnd: 679
    functionName: json_calc_escaped_len
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached:
    - escape_as
    linkageType: ''
    returnType: size_t
    signature: size_t json_calc_escaped_len(const char *str, size_t len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: json_calc_escaped_len
      Src: /src/lwan/src/samples/techempower/json.c:685,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/json.c:694,1
    - Dst: escape_as
      Src: /src/lwan/src/samples/techempower/json.c:707,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - str
    - len
    - buf_size
    argTypes:
    - char*
    - size_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 719
      start: 681
    functionDepth: 4
    functionLinenumber: 681
    functionLinenumberEnd: 719
    functionName: json_escape
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached:
    - escape_as
    - json_calc_escaped_len
    - UNLIKELY
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t json_escape(char *str, size_t *len, size_t buf_size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_elem_size
      Src: /src/lwan/src/samples/techempower/json.c:734,1
    - Dst: append_bytes
      Src: /src/lwan/src/samples/techempower/json.c:742,1
    - Dst: LIKELY
      Src: /src/lwan/src/samples/techempower/json.c:744,1
    - Dst: encode
      Src: /src/lwan/src/samples/techempower/json.c:760,1
    - Dst: append_bytes
      Src: /src/lwan/src/samples/techempower/json.c:763,1
    - Dst: encode
      Src: /src/lwan/src/samples/techempower/json.c:768,1
    - Dst: append_bytes
      Src: /src/lwan/src/samples/techempower/json.c:772,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 6
    argNames:
    - elem_descr
    - field
    - val
    - append_bytes
    - data
    - escape_key
    argTypes:
    - struct json_obj_descr*
    - void*
    - void*
    - json_append_bytes_t
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 727
    functionDepth: 2
    functionLinenumber: 727
    functionLinenumberEnd: 773
    functionName: arr_encode
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached:
    - append_bytes
    - encode
    - LIKELY
    - get_elem_size
    linkageType: ''
    returnType: int
    signature: "int arr_encode(const struct json_obj_descr *elem_descr,\n                      const
      void *field,\n                      const void *val,\n                      json_append_bytes_t
      append_bytes,\n                      void *data,\n                      bool
      escape_key)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: append_bytes
      Src: /src/lwan/src/samples/techempower/json.c:779,1
    - Dst: json_escape_internal
      Src: /src/lwan/src/samples/techempower/json.c:781,1
    - Dst: append_bytes
      Src: /src/lwan/src/samples/techempower/json.c:783,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - str
    - append_bytes
    - data
    argTypes:
    - char**
    - json_append_bytes_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 775
    functionDepth: 4
    functionLinenumber: 775
    functionLinenumberEnd: 784
    functionName: str_encode
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached:
    - append_bytes
    - json_escape_internal
    linkageType: ''
    returnType: int
    signature: "int str_encode(const char **str,\n                      json_append_bytes_t
      append_bytes,\n                      void *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: int_to_string
      Src: /src/lwan/src/samples/techempower/json.c:791,1
    - Dst: append_bytes
      Src: /src/lwan/src/samples/techempower/json.c:793,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - num
    - append_bytes
    - data
    argTypes:
    - int32_t*
    - json_append_bytes_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 794
      start: 786
    functionDepth: 1
    functionLinenumber: 786
    functionLinenumberEnd: 794
    functionName: num_encode
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached:
    - int_to_string
    - append_bytes
    linkageType: ''
    returnType: int
    signature: int num_encode(const int32_t *num, json_append_bytes_t append_bytes,
      void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: append_bytes
      Src: /src/lwan/src/samples/techempower/json.c:800,1
    - Dst: append_bytes
      Src: /src/lwan/src/samples/techempower/json.c:803,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - value
    - append_bytes
    - data
    argTypes:
    - bool*
    - json_append_bytes_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 796
    functionDepth: 0
    functionLinenumber: 796
    functionLinenumberEnd: 804
    functionName: bool_encode
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached:
    - append_bytes
    linkageType: ''
    returnType: int
    signature: int bool_encode(const bool *value, json_append_bytes_t append_bytes,
      void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arr_encode
      Src: /src/lwan/src/samples/techempower/json.c:814,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - descr
    - val
    - append_bytes
    - data
    - escape_key
    argTypes:
    - struct json_obj_descr*
    - void*
    - json_append_bytes_t
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 806
    functionDepth: 3
    functionLinenumber: 806
    functionLinenumberEnd: 816
    functionName: json_arr_encode_full
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 2
    functionsReached:
    - arr_encode
    linkageType: ''
    returnType: int
    signature: "int json_arr_encode_full(const struct json_obj_descr *descr,\n                         const
      void *val,\n                         json_append_bytes_t append_bytes,\n                         void
      *data,\n                         bool escape_key)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: bool_encode
      Src: /src/lwan/src/samples/techempower/json.c:829,1
    - Dst: str_encode
      Src: /src/lwan/src/samples/techempower/json.c:831,1
    - Dst: arr_encode
      Src: /src/lwan/src/samples/techempower/json.c:833,1
    - Dst: json_obj_encode_full
      Src: /src/lwan/src/samples/techempower/json.c:836,1
    - Dst: num_encode
      Src: /src/lwan/src/samples/techempower/json.c:840,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 5
    argNames:
    - descr
    - val
    - append_bytes
    - data
    - escape_key
    argTypes:
    - struct json_obj_descr*
    - void*
    - json_append_bytes_t
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 818
    functionDepth: 5
    functionLinenumber: 818
    functionLinenumberEnd: 844
    functionName: encode
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 3
    functionsReached:
    - bool_encode
    - str_encode
    - num_encode
    - json_obj_encode_full
    - arr_encode
    linkageType: ''
    returnType: int
    signature: "int encode(const struct json_obj_descr *descr,\n                  const
      void *val,\n                  json_append_bytes_t append_bytes,\n                  void
      *data,\n                  bool escape_key)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: append_bytes
      Src: /src/lwan/src/samples/techempower/json.c:858,1
    - Dst: str_encode
      Src: /src/lwan/src/samples/techempower/json.c:861,1
    - Dst: append_bytes
      Src: /src/lwan/src/samples/techempower/json.c:862,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - descr
    - append_bytes
    - data
    - escape_key
    argTypes:
    - struct json_obj_descr*
    - json_append_bytes_t
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 846
    functionDepth: 5
    functionLinenumber: 846
    functionLinenumberEnd: 866
    functionName: encode_key
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached:
    - append_bytes
    - str_encode
    linkageType: ''
    returnType: int
    signature: "int encode_key(const struct json_obj_descr *descr,\n                             json_append_bytes_t
      append_bytes,\n                             void *data,\n                             bool
      escape_key)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: append_bytes
      Src: /src/lwan/src/samples/techempower/json.c:875,1
    - Dst: LIKELY
      Src: /src/lwan/src/samples/techempower/json.c:877,1
    - Dst: encode_key
      Src: /src/lwan/src/samples/techempower/json.c:886,1
    - Dst: encode
      Src: /src/lwan/src/samples/techempower/json.c:887,1
    - Dst: append_bytes
      Src: /src/lwan/src/samples/techempower/json.c:888,1
    - Dst: encode_key
      Src: /src/lwan/src/samples/techempower/json.c:891,1
    - Dst: encode
      Src: /src/lwan/src/samples/techempower/json.c:892,1
    - Dst: append_bytes
      Src: /src/lwan/src/samples/techempower/json.c:895,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 6
    argNames:
    - descr
    - descr_len
    - val
    - append_bytes
    - data
    - escape_key
    argTypes:
    - struct json_obj_descr*
    - size_t
    - void*
    - json_append_bytes_t
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 868
    functionDepth: 6
    functionLinenumber: 868
    functionLinenumberEnd: 896
    functionName: json_obj_encode_full
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 3
    functionsReached:
    - append_bytes
    - encode
    - encode_key
    - LIKELY
    linkageType: ''
    returnType: int
    signature: "int json_obj_encode_full(const struct json_obj_descr *descr,\n                         size_t
      descr_len,\n                         const void *val,\n                         json_append_bytes_t
      append_bytes,\n                         void *data,\n                         bool
      escape_key)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/json.c:908,1
    - Dst: memcpy
      Src: /src/lwan/src/samples/techempower/json.c:912,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - bytes
    - len
    - data
    argTypes:
    - char*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 917
      start: 904
    functionDepth: 0
    functionLinenumber: 904
    functionLinenumberEnd: 917
    functionName: append_bytes_to_buf
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached:
    - memcpy
    - UNLIKELY
    linkageType: ''
    returnType: int
    signature: int append_bytes_to_buf(const char *bytes, size_t len, void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: json_obj_encode
      Src: /src/lwan/src/samples/techempower/json.c:927,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - descr
    - descr_len
    - val
    - buffer
    - buf_size
    argTypes:
    - struct json_obj_descr*
    - size_t
    - void*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 919
    functionDepth: 2
    functionLinenumber: 919
    functionLinenumberEnd: 929
    functionName: json_obj_encode_buf
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached:
    - json_obj_encode
    linkageType: ''
    returnType: int
    signature: "int json_obj_encode_buf(const struct json_obj_descr *descr,\n                        size_t
      descr_len,\n                        const void *val,\n                        char
      *buffer,\n                        size_t buf_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - bytes
    - len
    - data
    argTypes:
    - char*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 931
    functionDepth: 0
    functionLinenumber: 931
    functionLinenumberEnd: 939
    functionName: measure_bytes
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int measure_bytes(const char *bytes __attribute__((unused)), size_t
      len, void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: json_obj_encode
      Src: /src/lwan/src/samples/techempower/json.c:948,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/techempower/json.c:949,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - descr
    - descr_len
    - val
    argTypes:
    - struct json_obj_descr*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 941
    functionDepth: 2
    functionLinenumber: 941
    functionLinenumberEnd: 954
    functionName: json_calc_encoded_len
    functionSourceFile: /src/lwan/src/samples/techempower/json.c
    functionUses: 0
    functionsReached:
    - UNLIKELY
    - json_obj_encode
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t json_calc_encoded_len(const struct json_obj_descr *descr,\n
      \                             size_t descr_len,\n                              const
      void *val)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mysql_stmt_reset
      Src: /src/lwan/src/samples/techempower/database.c:73,1
    - Dst: mysql_stmt_bind_param
      Src: /src/lwan/src/samples/techempower/database.c:95,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - stmt
    - rows
    argTypes:
    - struct db_stmt*
    - struct db_row*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 96
    functionName: db_stmt_bind_mysql
    functionSourceFile: /src/lwan/src/samples/techempower/database.c
    functionUses: 0
    functionsReached:
    - mysql_stmt_bind_param
    - mysql_stmt_reset
    linkageType: ''
    returnType: bool
    signature: "bool db_stmt_bind_mysql(const struct db_stmt *stmt,\n                               struct
      db_row *rows)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: mysql_stmt_execute
      Src: /src/lwan/src/samples/techempower/database.c:106,1
    - Dst: va_arg
      Src: /src/lwan/src/samples/techempower/database.c:123,1
    - Dst: va_arg
      Src: /src/lwan/src/samples/techempower/database.c:124,1
    - Dst: va_arg
      Src: /src/lwan/src/samples/techempower/database.c:128,1
    - Dst: mysql_stmt_bind_result
      Src: /src/lwan/src/samples/techempower/database.c:138,1
    - Dst: mysql_stmt_fetch
      Src: /src/lwan/src/samples/techempower/database.c:142,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 2
    argNames:
    - stmt
    - ap
    argTypes:
    - struct db_stmt*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 147
    functionName: db_stmt_step_mysql
    functionSourceFile: /src/lwan/src/samples/techempower/database.c
    functionUses: 0
    functionsReached:
    - mysql_stmt_execute
    - mysql_stmt_bind_result
    - va_arg
    - mysql_stmt_fetch
    linkageType: ''
    returnType: bool
    signature: "bool db_stmt_step_mysql(const struct db_stmt *stmt,\n                               va_list
      ap)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mysql_stmt_close
      Src: /src/lwan/src/samples/techempower/database.c:153,1
    - Dst: free
      Src: /src/lwan/src/samples/techempower/database.c:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - struct db_stmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 155
    functionName: db_stmt_finalize_mysql
    functionSourceFile: /src/lwan/src/samples/techempower/database.c
    functionUses: 0
    functionsReached:
    - mysql_stmt_close
    - free
    linkageType: ''
    returnType: void
    signature: void db_stmt_finalize_mysql(struct db_stmt *stmt)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/lwan/src/samples/techempower/database.c:164,1
    - Dst: strlen
      Src: /src/lwan/src/samples/techempower/database.c:164,1
    - Dst: malloc
      Src: /src/lwan/src/samples/techempower/database.c:165,1
    - Dst: mysql_stmt_init
      Src: /src/lwan/src/samples/techempower/database.c:170,1
    - Dst: mysql_stmt_prepare
      Src: /src/lwan/src/samples/techempower/database.c:174,1
    - Dst: strlen
      Src: /src/lwan/src/samples/techempower/database.c:174,1
    - Dst: assert
      Src: /src/lwan/src/samples/techempower/database.c:177,1
    - Dst: strlen
      Src: /src/lwan/src/samples/techempower/database.c:177,1
    - Dst: mysql_stmt_param_count
      Src: /src/lwan/src/samples/techempower/database.c:177,1
    - Dst: assert
      Src: /src/lwan/src/samples/techempower/database.c:178,1
    - Dst: strlen
      Src: /src/lwan/src/samples/techempower/database.c:178,1
    - Dst: mysql_stmt_field_count
      Src: /src/lwan/src/samples/techempower/database.c:178,1
    - Dst: strlen
      Src: /src/lwan/src/samples/techempower/database.c:184,1
    - Dst: memset
      Src: /src/lwan/src/samples/techempower/database.c:191,1
    - Dst: mysql_stmt_close
      Src: /src/lwan/src/samples/techempower/database.c:196,1
    - Dst: free
      Src: /src/lwan/src/samples/techempower/database.c:198,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 4
    argNames:
    - db
    - sql
    - param_signature
    - result_signature
    argTypes:
    - struct db*
    - char*
    - char*
    - char*
    assertStmts:
    - condition: (strlen(param_signature) == mysql_stmt_param_count(stmt_mysql->stmt))
      pos:
        line_end: 176
        line_start: 176
        source_file: /src/lwan/src/samples/techempower/database.c
    - condition: (strlen(result_signature) == mysql_stmt_field_count(stmt_mysql->stmt))
      pos:
        line_end: 177
        line_start: 177
        source_file: /src/lwan/src/samples/techempower/database.c
    constantsTouched: []
    func_position:
      end: 201
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 201
    functionName: db_prepare_mysql
    functionSourceFile: /src/lwan/src/samples/techempower/database.c
    functionUses: 0
    functionsReached:
    - mysql_stmt_init
    - mysql_stmt_field_count
    - free
    - mysql_stmt_close
    - strlen
    - memset
    - assert
    - malloc
    - mysql_stmt_param_count
    - mysql_stmt_prepare
    linkageType: ''
    returnType: struct db_stmt
    signature: "struct db_stmt *\ndb_prepare_mysql(const struct db *db,\n                 const
      char *sql,\n                 const char *param_signature,\n                 const
      char *result_signature)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mysql_close
      Src: /src/lwan/src/samples/techempower/database.c:207,1
    - Dst: free
      Src: /src/lwan/src/samples/techempower/database.c:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 209
    functionName: db_disconnect_mysql
    functionSourceFile: /src/lwan/src/samples/techempower/database.c
    functionUses: 0
    functionsReached:
    - mysql_close
    - free
    linkageType: ''
    returnType: void
    signature: void db_disconnect_mysql(struct db *db)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/samples/techempower/database.c:216,1
    - Dst: mysql_init
      Src: /src/lwan/src/samples/techempower/database.c:221,1
    - Dst: free
      Src: /src/lwan/src/samples/techempower/database.c:223,1
    - Dst: mysql_real_connect
      Src: /src/lwan/src/samples/techempower/database.c:227,1
    - Dst: mysql_set_character_set
      Src: /src/lwan/src/samples/techempower/database.c:231,1
    - Dst: mysql_close
      Src: /src/lwan/src/samples/techempower/database.c:240,1
    - Dst: free
      Src: /src/lwan/src/samples/techempower/database.c:241,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 4
    argNames:
    - host
    - user
    - pass
    - database
    argTypes:
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 243
    functionName: db_connect_mysql
    functionSourceFile: /src/lwan/src/samples/techempower/database.c
    functionUses: 1
    functionsReached:
    - free
    - mysql_init
    - mysql_close
    - mysql_set_character_set
    - malloc
    - mysql_real_connect
    linkageType: ''
    returnType: struct db
    signature: "struct db *db_connect_mysql(const char *host,\n                            const
      char *user,\n                            const char *pass,\n                            const
      char *database)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sqlite3_reset
      Src: /src/lwan/src/samples/techempower/database.c:264,1
    - Dst: sqlite3_clear_bindings
      Src: /src/lwan/src/samples/techempower/database.c:265,1
    - Dst: sqlite3_bind_text
      Src: /src/lwan/src/samples/techempower/database.c:273,1
    - Dst: sqlite3_bind_int
      Src: /src/lwan/src/samples/techempower/database.c:277,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - stmt
    - rows
    argTypes:
    - struct db_stmt*
    - struct db_row*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 288
    functionName: db_stmt_bind_sqlite
    functionSourceFile: /src/lwan/src/samples/techempower/database.c
    functionUses: 0
    functionsReached:
    - sqlite3_bind_text
    - sqlite3_bind_int
    - sqlite3_reset
    - sqlite3_clear_bindings
    linkageType: ''
    returnType: bool
    signature: "bool db_stmt_bind_sqlite(const struct db_stmt *stmt,\n                                struct
      db_row *rows)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sqlite3_step
      Src: /src/lwan/src/samples/techempower/database.c:297,1
    - Dst: va_arg
      Src: /src/lwan/src/samples/techempower/database.c:303,1
    - Dst: sqlite3_column_int
      Src: /src/lwan/src/samples/techempower/database.c:303,1
    - Dst: va_arg
      Src: /src/lwan/src/samples/techempower/database.c:306,1
    - Dst: va_arg
      Src: /src/lwan/src/samples/techempower/database.c:307,1
    - Dst: strncpy
      Src: /src/lwan/src/samples/techempower/database.c:309,1
    - Dst: sqlite3_column_text
      Src: /src/lwan/src/samples/techempower/database.c:310,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - stmt
    - ap
    argTypes:
    - struct db_stmt*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 321
    functionName: db_stmt_step_sqlite
    functionSourceFile: /src/lwan/src/samples/techempower/database.c
    functionUses: 0
    functionsReached:
    - va_arg
    - sqlite3_column_int
    - sqlite3_step
    - strncpy
    - sqlite3_column_text
    linkageType: ''
    returnType: bool
    signature: "bool db_stmt_step_sqlite(const struct db_stmt *stmt,\n                                va_list
      ap)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sqlite3_finalize
      Src: /src/lwan/src/samples/techempower/database.c:327,1
    - Dst: free
      Src: /src/lwan/src/samples/techempower/database.c:328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - struct db_stmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 329
    functionName: db_stmt_finalize_sqlite
    functionSourceFile: /src/lwan/src/samples/techempower/database.c
    functionUses: 0
    functionsReached:
    - sqlite3_finalize
    - free
    linkageType: ''
    returnType: void
    signature: void db_stmt_finalize_sqlite(struct db_stmt *stmt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/samples/techempower/database.c:338,1
    - Dst: sqlite3_prepare_v2
      Src: /src/lwan/src/samples/techempower/database.c:343,1
    - Dst: strlen
      Src: /src/lwan/src/samples/techempower/database.c:343,1
    - Dst: free
      Src: /src/lwan/src/samples/techempower/database.c:346,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - db
    - sql
    - param_signature
    - result_signature
    argTypes:
    - struct db*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 358
    functionName: db_prepare_sqlite
    functionSourceFile: /src/lwan/src/samples/techempower/database.c
    functionUses: 0
    functionsReached:
    - malloc
    - strlen
    - free
    - sqlite3_prepare_v2
    linkageType: ''
    returnType: struct db_stmt
    signature: "struct db_stmt *\ndb_prepare_sqlite(const struct db *db,\n                  const
      char *sql,\n                  const char *param_signature,\n                  const
      char *result_signature)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sqlite3_close
      Src: /src/lwan/src/samples/techempower/database.c:364,1
    - Dst: free
      Src: /src/lwan/src/samples/techempower/database.c:365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 366
    functionName: db_disconnect_sqlite
    functionSourceFile: /src/lwan/src/samples/techempower/database.c
    functionUses: 0
    functionsReached:
    - sqlite3_close
    - free
    linkageType: ''
    returnType: void
    signature: void db_disconnect_sqlite(struct db *db)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/samples/techempower/database.c:371,1
    - Dst: sqlite3_open_v2
      Src: /src/lwan/src/samples/techempower/database.c:377,1
    - Dst: free
      Src: /src/lwan/src/samples/techempower/database.c:379,1
    - Dst: sqlite3_exec
      Src: /src/lwan/src/samples/techempower/database.c:385,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - path
    - read_only
    - pragmas
    argTypes:
    - char*
    - bool
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 368
    functionDepth: 0
    functionLinenumber: 368
    functionLinenumberEnd: 392
    functionName: db_connect_sqlite
    functionSourceFile: /src/lwan/src/samples/techempower/database.c
    functionUses: 1
    functionsReached:
    - malloc
    - sqlite3_open_v2
    - sqlite3_exec
    - free
    linkageType: ''
    returnType: struct db
    signature: 'struct db *

      db_connect_sqlite(const char *path, bool read_only, const char *pragmas[])'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct db_stmt*::bind
      Src: /src/lwan/src/samples/techempower/database.c:398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - stmt
    - rows
    argTypes:
    - struct db_stmt*
    - struct db_row*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 396
    functionDepth: 0
    functionLinenumber: 396
    functionLinenumberEnd: 399
    functionName: db_stmt_bind
    functionSourceFile: /src/lwan/src/samples/techempower/database.c
    functionUses: 1
    functionsReached:
    - struct db_stmt*::bind
    linkageType: ''
    returnType: bool
    signature: bool db_stmt_bind(const struct db_stmt *stmt, struct db_row *rows)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/lwan/src/samples/techempower/database.c:406,1
    - Dst: struct db_stmt*::step
      Src: /src/lwan/src/samples/techempower/database.c:407,1
    - Dst: va_end
      Src: /src/lwan/src/samples/techempower/database.c:408,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - struct db_stmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 401
    functionDepth: 0
    functionLinenumber: 401
    functionLinenumberEnd: 411
    functionName: db_stmt_step
    functionSourceFile: /src/lwan/src/samples/techempower/database.c
    functionUses: 2
    functionsReached:
    - struct db_stmt*::step
    - va_end
    - va_start
    linkageType: ''
    returnType: bool
    signature: bool db_stmt_step(const struct db_stmt *stmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct db_stmt*::finalize
      Src: /src/lwan/src/samples/techempower/database.c:413,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - stmt
    argTypes:
    - struct db_stmt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 413
    functionDepth: 0
    functionLinenumber: 413
    functionLinenumberEnd: 413
    functionName: db_stmt_finalize
    functionSourceFile: /src/lwan/src/samples/techempower/database.c
    functionUses: 4
    functionsReached:
    - struct db_stmt*::finalize
    linkageType: ''
    returnType: void
    signature: void db_stmt_finalize(struct db_stmt *stmt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct db*::disconnect
      Src: /src/lwan/src/samples/techempower/database.c:415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - db
    argTypes:
    - struct db*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 415
    functionDepth: 0
    functionLinenumber: 415
    functionLinenumberEnd: 415
    functionName: db_disconnect
    functionSourceFile: /src/lwan/src/samples/techempower/database.c
    functionUses: 0
    functionsReached:
    - struct db*::disconnect
    linkageType: ''
    returnType: void
    signature: void db_disconnect(struct db *db)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct db*::prepare
      Src: /src/lwan/src/samples/techempower/database.c:422,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - db
    - sql
    - param_signature
    - result_signature
    argTypes:
    - struct db*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 423
    functionName: db_prepare_stmt
    functionSourceFile: /src/lwan/src/samples/techempower/database.c
    functionUses: 4
    functionsReached:
    - struct db*::prepare
    linkageType: ''
    returnType: struct db_stmt
    signature: "struct db_stmt *db_prepare_stmt(const struct db *db,\n                                       const
      char *sql,\n                                       const char *param_signature,\n
      \                                      const char *result_signature)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: forth_free
      Src: /src/lwan/src/samples/forthsalon/main.c:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 38
    functionName: destroy_forth_ctx
    functionSourceFile: /src/lwan/src/samples/forthsalon/main.c
    functionUses: 0
    functionsReached:
    - forth_free
    linkageType: ''
    returnType: void
    signature: void destroy_forth_ctx(void *p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GifEnd
      Src: /src/lwan/src/samples/forthsalon/main.c:41,1
    - Dst: free
      Src: /src/lwan/src/samples/forthsalon/main.c:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - p
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 43
    functionName: destroy_gif_writer
    functionSourceFile: /src/lwan/src/samples/forthsalon/main.c
    functionUses: 0
    functionsReached:
    - GifEnd
    - free
    linkageType: ''
    returnType: void
    signature: void destroy_gif_writer(void *p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/forthsalon/main.c:49,1
    - Dst: clock_gettime
      Src: /src/lwan/src/samples/forthsalon/main.c:49,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/samples/forthsalon/main.c:50,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 55
    functionName: current_precise_monotonic_timespec
    functionSourceFile: /src/lwan/src/samples/forthsalon/main.c
    functionUses: 0
    functionsReached:
    - clock_gettime
    - UNLIKELY
    - lwan_log_perror
    linkageType: ''
    returnType: struct timespec
    signature: struct timespec current_precise_monotonic_timespec(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: current_precise_monotonic_timespec
      Src: /src/lwan/src/samples/forthsalon/main.c:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - then
    argTypes:
    - struct timespec
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 71
    functionName: elapsed_time_ms
    functionSourceFile: /src/lwan/src/samples/forthsalon/main.c
    functionUses: 0
    functionsReached:
    - current_precise_monotonic_timespec
    linkageType: ''
    returnType: double
    signature: double elapsed_time_ms(const struct timespec then)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_main
      Src: /src/lwan/src/samples/forthsalon/main.c:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 163
    functionDepth: 1
    functionLinenumber: 163
    functionLinenumberEnd: 163
    functionName: main
    functionSourceFile: /src/lwan/src/samples/forthsalon/main.c
    functionUses: 2
    functionsReached:
    - lwan_main
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct forth_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 111
    functionName: is_inside_word_def
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_inside_word_def(const struct forth_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - w
    argTypes:
    - struct forth_word*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 116
    functionName: is_word_builtin
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_word_builtin(const struct forth_word *w)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: is_word_builtin
      Src: /src/lwan/src/samples/forthsalon/forth.c:121,1
    - Dst: SECTION_START_SYMBOL
      Src: /src/lwan/src/samples/forthsalon/forth.c:122,1
    - Dst: SECTION_STOP_SYMBOL
      Src: /src/lwan/src/samples/forthsalon/forth.c:123,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - w
    argTypes:
    - struct forth_word*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 124
    functionName: is_word_compiler
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached:
    - is_word_builtin
    - SECTION_START_SYMBOL
    - SECTION_STOP_SYMBOL
    linkageType: ''
    returnType: bool
    signature: bool is_word_compiler(const struct forth_word *w)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - callback
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 140
    functionName: find_builtin_by_callback
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct forth_builtin
    signature: struct forth_builtin *find_builtin_by_callback(void *callback)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 133
    functionName: LWAN_SECTION_FOREACH
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LWAN_SECTION_FOREACH(forth_builtin, iter)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 137
    functionName: LWAN_SECTION_FOREACH
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LWAN_SECTION_FOREACH(forth_compiler_builtin, iter)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - inst
    - d_stack
    - vars
    argTypes:
    - union forth_inst*
    - double*
    - struct forth_vars*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 148
    functionName: op_number
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void op_number(union forth_inst *inst,\n                      double
      *d_stack,\n                      struct forth_vars *vars)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - inst
    - d_stack
    - vars
    argTypes:
    - union forth_inst*
    - double*
    - struct forth_vars*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 156
    functionName: op_jump_if
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void op_jump_if(union forth_inst *inst,\n                       double
      *d_stack,\n                       struct forth_vars *vars)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - inst
    - d_stack
    - vars
    argTypes:
    - union forth_inst*
    - double*
    - struct forth_vars*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 164
    functionName: op_jump
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void op_jump(union forth_inst *inst,\n                    double *d_stack,\n
      \                   struct forth_vars *vars)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - inst
    - d_stack
    - vars
    argTypes:
    - union forth_inst*
    - double*
    - struct forth_vars*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 171
    functionName: op_nop
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void op_nop(union forth_inst *inst,\n                   double *d_stack,\n
      \                  struct forth_vars *vars)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - inst
    - d_stack
    - vars
    argTypes:
    - union forth_inst*
    - double*
    - struct forth_vars*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 179
    functionName: op_halt
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void op_halt(union forth_inst *inst __attribute__((unused)),\n                    double
      *d_stack,\n                    struct forth_vars *vars)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_log_critical
      Src: /src/lwan/src/samples/forthsalon/forth.c:185,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/samples/forthsalon/forth.c:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - inst
    - d_stack
    - vars
    argTypes:
    - union forth_inst*
    - double*
    - struct forth_vars*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 187
    functionName: op_eval_code
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached:
    - __builtin_unreachable
    - lwan_log_critical
    linkageType: ''
    returnType: void
    signature: "void op_eval_code(union forth_inst *inst __attribute__((unused)),\n
      \                        double *d_stack,\n                         struct forth_vars
      *vars)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/samples/forthsalon/forth.c:215,1
    - Dst: is_word_builtin
      Src: /src/lwan/src/samples/forthsalon/forth.c:215,1
    - Dst: LWAN_ARRAY_FOREACH
      Src: /src/lwan/src/samples/forthsalon/forth.c:217,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/forthsalon/forth.c:224,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/samples/forthsalon/forth.c:225,1
    - Dst: PUSH
      Src: /src/lwan/src/samples/forthsalon/forth.c:232,1
    - Dst: PUSH
      Src: /src/lwan/src/samples/forthsalon/forth.c:233,1
    - Dst: POP
      Src: /src/lwan/src/samples/forthsalon/forth.c:242,1
    - Dst: POP
      Src: /src/lwan/src/samples/forthsalon/forth.c:243,1
    - Dst: PUSH
      Src: /src/lwan/src/samples/forthsalon/forth.c:244,1
    - Dst: PUSH
      Src: /src/lwan/src/samples/forthsalon/forth.c:245,1
    - Dst: POP
      Src: /src/lwan/src/samples/forthsalon/forth.c:250,1
    - Dst: POP
      Src: /src/lwan/src/samples/forthsalon/forth.c:251,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/forthsalon/forth.c:269,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/samples/forthsalon/forth.c:270,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/forthsalon/forth.c:276,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/samples/forthsalon/forth.c:277,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/forthsalon/forth.c:288,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/samples/forthsalon/forth.c:289,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/samples/forthsalon/forth.c:290,1
    - Dst: find_builtin_by_callback
      Src: /src/lwan/src/samples/forthsalon/forth.c:295,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/forthsalon/forth.c:296,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/samples/forthsalon/forth.c:297,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/samples/forthsalon/forth.c:298,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/forthsalon/forth.c:301,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/samples/forthsalon/forth.c:302,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/forthsalon/forth.c:306,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/samples/forthsalon/forth.c:307,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/forthsalon/forth.c:317,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/samples/forthsalon/forth.c:317,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/samples/forthsalon/forth.c:318,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/forthsalon/forth.c:322,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/samples/forthsalon/forth.c:322,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/samples/forthsalon/forth.c:323,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/forthsalon/forth.c:329,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/samples/forthsalon/forth.c:329,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/samples/forthsalon/forth.c:330,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/forthsalon/forth.c:334,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/samples/forthsalon/forth.c:334,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/samples/forthsalon/forth.c:335,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/forthsalon/forth.c:340,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/samples/forthsalon/forth.c:341,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/forthsalon/forth.c:344,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/samples/forthsalon/forth.c:345,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 87
    argCount: 2
    argNames:
    - ctx
    - w
    argTypes:
    - struct forth_ctx*
    - struct forth_word*
    assertStmts:
    - condition: (!is_word_builtin(w))
      pos:
        line_end: 214
        line_start: 214
        source_file: /src/lwan/src/samples/forthsalon/forth.c
    constantsTouched: []
    func_position:
      end: 353
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 353
    functionName: check_stack_effects
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached:
    - is_word_builtin
    - lwan_log_critical
    - __builtin_unreachable
    - find_builtin_by_callback
    - LWAN_ARRAY_FOREACH
    - PUSH
    - N_ELEMENTS
    - lwan_log_error
    - assert
    - UNLIKELY
    - POP
    linkageType: ''
    returnType: bool
    signature: "bool check_stack_effects(const struct forth_ctx *ctx,\n                                struct
      forth_word *w)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - item_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 206
    functionName: PUSH
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PUSH(item_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 214
    functionName: POP
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: POP()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - val_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 361
    functionName: JS_PUSH
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JS_PUSH(val_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - val_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 361
    functionDepth: 0
    functionLinenumber: 361
    functionLinenumberEnd: 367
    functionName: JS_POP
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JS_POP(val_)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/lwan/src/samples/forthsalon/forth.c:373,1
    - Dst: printf
      Src: /src/lwan/src/samples/forthsalon/forth.c:376,1
    - Dst: forth_code_get_elem_index
      Src: /src/lwan/src/samples/forthsalon/forth.c:377,1
    - Dst: printf
      Src: /src/lwan/src/samples/forthsalon/forth.c:381,1
    - Dst: printf
      Src: /src/lwan/src/samples/forthsalon/forth.c:383,1
    - Dst: forth_code_get_elem_index
      Src: /src/lwan/src/samples/forthsalon/forth.c:384,1
    - Dst: printf
      Src: /src/lwan/src/samples/forthsalon/forth.c:388,1
    - Dst: forth_code_get_elem_index
      Src: /src/lwan/src/samples/forthsalon/forth.c:389,1
    - Dst: printf
      Src: /src/lwan/src/samples/forthsalon/forth.c:393,1
    - Dst: printf
      Src: /src/lwan/src/samples/forthsalon/forth.c:395,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/forthsalon/forth.c:396,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/samples/forthsalon/forth.c:397,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/samples/forthsalon/forth.c:398,1
    - Dst: find_builtin_by_callback
      Src: /src/lwan/src/samples/forthsalon/forth.c:401,1
    - Dst: printf
      Src: /src/lwan/src/samples/forthsalon/forth.c:404,1
    - Dst: printf
      Src: /src/lwan/src/samples/forthsalon/forth.c:406,1
    - Dst: printf
      Src: /src/lwan/src/samples/forthsalon/forth.c:409,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 1
    argNames:
    - code
    argTypes:
    - struct forth_code*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 369
    functionDepth: 1
    functionLinenumber: 369
    functionLinenumberEnd: 413
    functionName: dump_code
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached:
    - __builtin_unreachable
    - lwan_log_critical
    - find_builtin_by_callback
    - forth_code_get_elem_index
    - printf
    - UNLIKELY
    linkageType: ''
    returnType: void
    signature: void dump_code(const struct forth_code *code)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/lwan/src/samples/forthsalon/forth.c:376,1
    - Dst: forth_code_get_elem_index
      Src: /src/lwan/src/samples/forthsalon/forth.c:377,1
    - Dst: printf
      Src: /src/lwan/src/samples/forthsalon/forth.c:381,1
    - Dst: printf
      Src: /src/lwan/src/samples/forthsalon/forth.c:383,1
    - Dst: forth_code_get_elem_index
      Src: /src/lwan/src/samples/forthsalon/forth.c:384,1
    - Dst: printf
      Src: /src/lwan/src/samples/forthsalon/forth.c:388,1
    - Dst: forth_code_get_elem_index
      Src: /src/lwan/src/samples/forthsalon/forth.c:389,1
    - Dst: printf
      Src: /src/lwan/src/samples/forthsalon/forth.c:393,1
    - Dst: printf
      Src: /src/lwan/src/samples/forthsalon/forth.c:395,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/forthsalon/forth.c:396,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/samples/forthsalon/forth.c:397,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/samples/forthsalon/forth.c:398,1
    - Dst: find_builtin_by_callback
      Src: /src/lwan/src/samples/forthsalon/forth.c:401,1
    - Dst: printf
      Src: /src/lwan/src/samples/forthsalon/forth.c:404,1
    - Dst: printf
      Src: /src/lwan/src/samples/forthsalon/forth.c:406,1
    - Dst: printf
      Src: /src/lwan/src/samples/forthsalon/forth.c:409,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 375
    functionDepth: 1
    functionLinenumber: 375
    functionLinenumberEnd: 412
    functionName: LWAN_ARRAY_FOREACH
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 2
    functionsReached:
    - __builtin_unreachable
    - lwan_log_critical
    - find_builtin_by_callback
    - forth_code_get_elem_index
    - printf
    - UNLIKELY
    linkageType: ''
    returnType: void
    signature: void LWAN_ARRAY_FOREACH (code, inst)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: forth_code_get_elem
      Src: /src/lwan/src/samples/forthsalon/forth.c:418,1
    - Dst: union forth_inst*::callback
      Src: /src/lwan/src/samples/forthsalon/forth.c:420,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - vars
    argTypes:
    - struct forth_ctx*
    - struct forth_vars*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 416
    functionDepth: 0
    functionLinenumber: 416
    functionLinenumberEnd: 422
    functionName: forth_run
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached:
    - union forth_inst*::callback
    - forth_code_get_elem
    linkageType: ''
    returnType: bool
    signature: bool forth_run(struct forth_ctx *ctx, struct forth_vars *vars)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strtod
      Src: /src/lwan/src/samples/forthsalon/forth.c:429,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ptr
    - number
    argTypes:
    - char*
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 424
    functionDepth: 0
    functionLinenumber: 424
    functionLinenumberEnd: 438
    functionName: parse_number
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached:
    - strtod
    linkageType: ''
    returnType: bool
    signature: bool parse_number(const char *ptr, double *number)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/samples/forthsalon/forth.c:443,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/forthsalon/forth.c:444,1
    - Dst: hash_add
      Src: /src/lwan/src/samples/forthsalon/forth.c:450,1
    - Dst: free
      Src: /src/lwan/src/samples/forthsalon/forth.c:453,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - builtin
    argTypes:
    - struct forth_ctx*
    - struct forth_builtin*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 440
    functionDepth: 1
    functionLinenumber: 440
    functionLinenumberEnd: 455
    functionName: new_builtin_word
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached:
    - malloc
    - hash_add
    - UNLIKELY
    - free
    linkageType: ''
    returnType: struct forth_word
    signature: "struct forth_word *new_builtin_word(struct forth_ctx *ctx,\n                                           const
      struct forth_builtin *builtin)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/lwan/src/samples/forthsalon/forth.c:460,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/forthsalon/forth.c:461,1
    - Dst: malloc
      Src: /src/lwan/src/samples/forthsalon/forth.c:464,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/forthsalon/forth.c:465,1
    - Dst: memcpy
      Src: /src/lwan/src/samples/forthsalon/forth.c:468,1
    - Dst: forth_code_init
      Src: /src/lwan/src/samples/forthsalon/forth.c:471,1
    - Dst: hash_add
      Src: /src/lwan/src/samples/forthsalon/forth.c:473,1
    - Dst: free
      Src: /src/lwan/src/samples/forthsalon/forth.c:476,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - name
    argTypes:
    - struct forth_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 457
    functionDepth: 1
    functionLinenumber: 457
    functionLinenumberEnd: 478
    functionName: new_user_word
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached:
    - hash_add
    - free
    - memcpy
    - strlen
    - malloc
    - forth_code_init
    - UNLIKELY
    linkageType: ''
    returnType: struct forth_word
    signature: 'struct forth_word *

      new_user_word(struct forth_ctx *ctx, const char *name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - arg
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 480
    functionDepth: 0
    functionLinenumber: 480
    functionLinenumberEnd: 489
    functionName: EMIT
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EMIT(arg)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: forth_code_get_elem
      Src: /src/lwan/src/samples/forthsalon/forth.c:495,1
    - Dst: forth_code_len
      Src: /src/lwan/src/samples/forthsalon/forth.c:495,1
    - Dst: streq
      Src: /src/lwan/src/samples/forthsalon/forth.c:497,1
    - Dst: hash_find
      Src: /src/lwan/src/samples/forthsalon/forth.c:498,1
    - Dst: assert
      Src: /src/lwan/src/samples/forthsalon/forth.c:499,1
    - Dst: assert
      Src: /src/lwan/src/samples/forthsalon/forth.c:500,1
    - Dst: is_word_builtin
      Src: /src/lwan/src/samples/forthsalon/forth.c:500,1
    - Dst: hash_find
      Src: /src/lwan/src/samples/forthsalon/forth.c:502,1
    - Dst: assert
      Src: /src/lwan/src/samples/forthsalon/forth.c:503,1
    - Dst: assert
      Src: /src/lwan/src/samples/forthsalon/forth.c:504,1
    - Dst: is_word_builtin
      Src: /src/lwan/src/samples/forthsalon/forth.c:504,1
    - Dst: streq
      Src: /src/lwan/src/samples/forthsalon/forth.c:508,1
    - Dst: find_builtin_by_callback
      Src: /src/lwan/src/samples/forthsalon/forth.c:510,1
    - Dst: streq
      Src: /src/lwan/src/samples/forthsalon/forth.c:511,1
    - Dst: hash_find
      Src: /src/lwan/src/samples/forthsalon/forth.c:512,1
    - Dst: assert
      Src: /src/lwan/src/samples/forthsalon/forth.c:513,1
    - Dst: assert
      Src: /src/lwan/src/samples/forthsalon/forth.c:514,1
    - Dst: is_word_builtin
      Src: /src/lwan/src/samples/forthsalon/forth.c:514,1
    - Dst: streq
      Src: /src/lwan/src/samples/forthsalon/forth.c:518,1
    - Dst: hash_find
      Src: /src/lwan/src/samples/forthsalon/forth.c:520,1
    - Dst: assert
      Src: /src/lwan/src/samples/forthsalon/forth.c:521,1
    - Dst: assert
      Src: /src/lwan/src/samples/forthsalon/forth.c:522,1
    - Dst: is_word_builtin
      Src: /src/lwan/src/samples/forthsalon/forth.c:522,1
    - Dst: streq
      Src: /src/lwan/src/samples/forthsalon/forth.c:526,1
    - Dst: hash_find
      Src: /src/lwan/src/samples/forthsalon/forth.c:527,1
    - Dst: assert
      Src: /src/lwan/src/samples/forthsalon/forth.c:528,1
    - Dst: assert
      Src: /src/lwan/src/samples/forthsalon/forth.c:529,1
    - Dst: is_word_builtin
      Src: /src/lwan/src/samples/forthsalon/forth.c:529,1
    - Dst: hash_find
      Src: /src/lwan/src/samples/forthsalon/forth.c:531,1
    - Dst: hash_find
      Src: /src/lwan/src/samples/forthsalon/forth.c:536,1
    - Dst: assert
      Src: /src/lwan/src/samples/forthsalon/forth.c:537,1
    - Dst: assert
      Src: /src/lwan/src/samples/forthsalon/forth.c:538,1
    - Dst: is_word_builtin
      Src: /src/lwan/src/samples/forthsalon/forth.c:538,1
    - Dst: hash_find
      Src: /src/lwan/src/samples/forthsalon/forth.c:540,1
    - Dst: streq
      Src: /src/lwan/src/samples/forthsalon/forth.c:544,1
    - Dst: hash_find
      Src: /src/lwan/src/samples/forthsalon/forth.c:545,1
    - Dst: assert
      Src: /src/lwan/src/samples/forthsalon/forth.c:546,1
    - Dst: assert
      Src: /src/lwan/src/samples/forthsalon/forth.c:547,1
    - Dst: is_word_builtin
      Src: /src/lwan/src/samples/forthsalon/forth.c:547,1
    - Dst: hash_find
      Src: /src/lwan/src/samples/forthsalon/forth.c:549,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 55
    argCount: 3
    argNames:
    - ctx
    - code
    - b
    argTypes:
    - struct forth_ctx*
    - struct forth_code*
    - struct forth_builtin*
    assertStmts:
    - condition: (is_word_builtin(w))
      pos:
        line_end: 521
        line_start: 521
        source_file: /src/lwan/src/samples/forthsalon/forth.c
    - condition: (is_word_builtin(w))
      pos:
        line_end: 528
        line_start: 528
        source_file: /src/lwan/src/samples/forthsalon/forth.c
    - condition: (is_word_builtin(w))
      pos:
        line_end: 546
        line_start: 546
        source_file: /src/lwan/src/samples/forthsalon/forth.c
    - condition: (is_word_builtin(w))
      pos:
        line_end: 503
        line_start: 503
        source_file: /src/lwan/src/samples/forthsalon/forth.c
    - condition: (w != NULL)
      pos:
        line_end: 520
        line_start: 520
        source_file: /src/lwan/src/samples/forthsalon/forth.c
    - condition: (w != NULL)
      pos:
        line_end: 498
        line_start: 498
        source_file: /src/lwan/src/samples/forthsalon/forth.c
    - condition: (w != NULL)
      pos:
        line_end: 502
        line_start: 502
        source_file: /src/lwan/src/samples/forthsalon/forth.c
    - condition: (w != NULL)
      pos:
        line_end: 512
        line_start: 512
        source_file: /src/lwan/src/samples/forthsalon/forth.c
    - condition: (w != NULL)
      pos:
        line_end: 536
        line_start: 536
        source_file: /src/lwan/src/samples/forthsalon/forth.c
    - condition: (is_word_builtin(w))
      pos:
        line_end: 499
        line_start: 499
        source_file: /src/lwan/src/samples/forthsalon/forth.c
    - condition: (is_word_builtin(w))
      pos:
        line_end: 513
        line_start: 513
        source_file: /src/lwan/src/samples/forthsalon/forth.c
    - condition: (w != NULL)
      pos:
        line_end: 527
        line_start: 527
        source_file: /src/lwan/src/samples/forthsalon/forth.c
    - condition: (is_word_builtin(w))
      pos:
        line_end: 537
        line_start: 537
        source_file: /src/lwan/src/samples/forthsalon/forth.c
    - condition: (w != NULL)
      pos:
        line_end: 545
        line_start: 545
        source_file: /src/lwan/src/samples/forthsalon/forth.c
    constantsTouched: []
    func_position:
      end: 556
      start: 490
    functionDepth: 1
    functionLinenumber: 490
    functionLinenumberEnd: 556
    functionName: peephole_1
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached:
    - is_word_builtin
    - find_builtin_by_callback
    - forth_code_len
    - hash_find
    - assert
    - streq
    - forth_code_get_elem
    linkageType: ''
    returnType: bool
    signature: "bool peephole_1(struct forth_ctx *ctx,\n                       struct
      forth_code *code,\n                       const struct forth_builtin *b)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: forth_code_get_elem
      Src: /src/lwan/src/samples/forthsalon/forth.c:563,1
    - Dst: forth_code_len
      Src: /src/lwan/src/samples/forthsalon/forth.c:563,1
    - Dst: streq
      Src: /src/lwan/src/samples/forthsalon/forth.c:565,1
    - Dst: hash_find
      Src: /src/lwan/src/samples/forthsalon/forth.c:567,1
    - Dst: assert
      Src: /src/lwan/src/samples/forthsalon/forth.c:568,1
    - Dst: assert
      Src: /src/lwan/src/samples/forthsalon/forth.c:569,1
    - Dst: is_word_builtin
      Src: /src/lwan/src/samples/forthsalon/forth.c:569,1
    - Dst: streq
      Src: /src/lwan/src/samples/forthsalon/forth.c:574,1
    - Dst: forth_code_len
      Src: /src/lwan/src/samples/forthsalon/forth.c:575,1
    - Dst: streq
      Src: /src/lwan/src/samples/forthsalon/forth.c:583,1
    - Dst: forth_code_len
      Src: /src/lwan/src/samples/forthsalon/forth.c:584,1
    - Dst: streq
      Src: /src/lwan/src/samples/forthsalon/forth.c:592,1
    - Dst: forth_code_len
      Src: /src/lwan/src/samples/forthsalon/forth.c:593,1
    - Dst: __builtin_inf
      Src: /src/lwan/src/samples/forthsalon/forth.c:597,1
    - Dst: streq
      Src: /src/lwan/src/samples/forthsalon/forth.c:605,1
    - Dst: hash_find
      Src: /src/lwan/src/samples/forthsalon/forth.c:607,1
    - Dst: assert
      Src: /src/lwan/src/samples/forthsalon/forth.c:608,1
    - Dst: assert
      Src: /src/lwan/src/samples/forthsalon/forth.c:609,1
    - Dst: is_word_builtin
      Src: /src/lwan/src/samples/forthsalon/forth.c:609,1
    - Dst: forth_code_len
      Src: /src/lwan/src/samples/forthsalon/forth.c:615,1
    - Dst: streq
      Src: /src/lwan/src/samples/forthsalon/forth.c:623,1
    - Dst: hash_find
      Src: /src/lwan/src/samples/forthsalon/forth.c:625,1
    - Dst: assert
      Src: /src/lwan/src/samples/forthsalon/forth.c:626,1
    - Dst: assert
      Src: /src/lwan/src/samples/forthsalon/forth.c:627,1
    - Dst: is_word_builtin
      Src: /src/lwan/src/samples/forthsalon/forth.c:627,1
    - Dst: streq
      Src: /src/lwan/src/samples/forthsalon/forth.c:632,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 73
    argCount: 3
    argNames:
    - ctx
    - code
    - b
    argTypes:
    - struct forth_ctx*
    - struct forth_code*
    - struct forth_builtin*
    assertStmts:
    - condition: (w != NULL)
      pos:
        line_end: 567
        line_start: 567
        source_file: /src/lwan/src/samples/forthsalon/forth.c
    - condition: (is_word_builtin(w))
      pos:
        line_end: 608
        line_start: 608
        source_file: /src/lwan/src/samples/forthsalon/forth.c
    - condition: (w != NULL)
      pos:
        line_end: 625
        line_start: 625
        source_file: /src/lwan/src/samples/forthsalon/forth.c
    - condition: (is_word_builtin(w))
      pos:
        line_end: 568
        line_start: 568
        source_file: /src/lwan/src/samples/forthsalon/forth.c
    - condition: (w != NULL)
      pos:
        line_end: 607
        line_start: 607
        source_file: /src/lwan/src/samples/forthsalon/forth.c
    - condition: (is_word_builtin(w))
      pos:
        line_end: 626
        line_start: 626
        source_file: /src/lwan/src/samples/forthsalon/forth.c
    constantsTouched: []
    func_position:
      end: 640
      start: 558
    functionDepth: 1
    functionLinenumber: 558
    functionLinenumberEnd: 640
    functionName: peephole_n
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached:
    - is_word_builtin
    - __builtin_inf
    - forth_code_len
    - hash_find
    - assert
    - streq
    - forth_code_get_elem
    linkageType: ''
    returnType: bool
    signature: "bool peephole_n(struct forth_ctx *ctx,\n                       struct
      forth_code *code,\n                       const struct forth_builtin *b)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: forth_code_init
      Src: /src/lwan/src/samples/forthsalon/forth.c:668,1
    - Dst: LWAN_ARRAY_FOREACH
      Src: /src/lwan/src/samples/forthsalon/forth.c:670,1
    - Dst: find_builtin_by_callback
      Src: /src/lwan/src/samples/forthsalon/forth.c:672,1
    - Dst: forth_code_len
      Src: /src/lwan/src/samples/forthsalon/forth.c:674,1
    - Dst: peephole_1
      Src: /src/lwan/src/samples/forthsalon/forth.c:675,1
    - Dst: forth_code_len
      Src: /src/lwan/src/samples/forthsalon/forth.c:680,1
    - Dst: peephole_n
      Src: /src/lwan/src/samples/forthsalon/forth.c:681,1
    - Dst: forth_code_append
      Src: /src/lwan/src/samples/forthsalon/forth.c:688,1
    - Dst: JS_PUSH
      Src: /src/lwan/src/samples/forthsalon/forth.c:696,1
    - Dst: forth_code_len
      Src: /src/lwan/src/samples/forthsalon/forth.c:696,1
    - Dst: forth_code_get_elem
      Src: /src/lwan/src/samples/forthsalon/forth.c:699,1
    - Dst: JS_POP
      Src: /src/lwan/src/samples/forthsalon/forth.c:699,1
    - Dst: forth_code_len
      Src: /src/lwan/src/samples/forthsalon/forth.c:700,1
    - Dst: forth_code_get_elem_index
      Src: /src/lwan/src/samples/forthsalon/forth.c:701,1
    - Dst: JS_PUSH
      Src: /src/lwan/src/samples/forthsalon/forth.c:703,1
    - Dst: forth_code_len
      Src: /src/lwan/src/samples/forthsalon/forth.c:703,1
    - Dst: forth_code_get_elem
      Src: /src/lwan/src/samples/forthsalon/forth.c:707,1
    - Dst: JS_POP
      Src: /src/lwan/src/samples/forthsalon/forth.c:707,1
    - Dst: forth_code_len
      Src: /src/lwan/src/samples/forthsalon/forth.c:708,1
    - Dst: forth_code_get_elem_index
      Src: /src/lwan/src/samples/forthsalon/forth.c:709,1
    - Dst: forth_code_append
      Src: /src/lwan/src/samples/forthsalon/forth.c:715,1
    - Dst: forth_code_reset
      Src: /src/lwan/src/samples/forthsalon/forth.c:724,1
    - Dst: forth_code_reset
      Src: /src/lwan/src/samples/forthsalon/forth.c:728,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/samples/forthsalon/forth.c:729,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 53
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct forth_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 731
      start: 642
    functionDepth: 2
    functionLinenumber: 642
    functionLinenumberEnd: 731
    functionName: peephole
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached:
    - peephole_n
    - forth_code_append
    - forth_code_reset
    - JS_PUSH
    - JS_POP
    - find_builtin_by_callback
    - forth_code_get_elem_index
    - forth_code_len
    - lwan_log_error
    - peephole_1
    - forth_code_init
    - LWAN_ARRAY_FOREACH
    - forth_code_get_elem
    linkageType: ''
    returnType: bool
    signature: bool peephole(struct forth_ctx *ctx)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/forthsalon/forth.c:738,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/samples/forthsalon/forth.c:739,1
    - Dst: strndupa
      Src: /src/lwan/src/samples/forthsalon/forth.c:744,1
    - Dst: parse_number
      Src: /src/lwan/src/samples/forthsalon/forth.c:747,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/forthsalon/forth.c:748,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/samples/forthsalon/forth.c:749,1
    - Dst: EMIT
      Src: /src/lwan/src/samples/forthsalon/forth.c:753,1
    - Dst: EMIT
      Src: /src/lwan/src/samples/forthsalon/forth.c:754,1
    - Dst: hash_find
      Src: /src/lwan/src/samples/forthsalon/forth.c:759,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/forthsalon/forth.c:761,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/samples/forthsalon/forth.c:762,1
    - Dst: is_word_builtin
      Src: /src/lwan/src/samples/forthsalon/forth.c:766,1
    - Dst: is_word_compiler
      Src: /src/lwan/src/samples/forthsalon/forth.c:767,1
    - Dst: struct forth_word*::builtin::callback_compiler
      Src: /src/lwan/src/samples/forthsalon/forth.c:768,1
    - Dst: EMIT
      Src: /src/lwan/src/samples/forthsalon/forth.c:770,1
    - Dst: EMIT
      Src: /src/lwan/src/samples/forthsalon/forth.c:772,1
    - Dst: EMIT
      Src: /src/lwan/src/samples/forthsalon/forth.c:773,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/forthsalon/forth.c:779,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/samples/forthsalon/forth.c:780,1
    - Dst: is_word_builtin
      Src: /src/lwan/src/samples/forthsalon/forth.c:781,1
    - Dst: new_user_word
      Src: /src/lwan/src/samples/forthsalon/forth.c:786,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/forthsalon/forth.c:787,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/samples/forthsalon/forth.c:788,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 4
    argNames:
    - ctx
    - code
    - word
    - word_len
    argTypes:
    - struct forth_ctx*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 794
      start: 733
    functionDepth: 2
    functionLinenumber: 733
    functionLinenumberEnd: 794
    functionName: found_word
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached:
    - is_word_builtin
    - is_word_compiler
    - struct forth_word*::builtin::callback_compiler
    - parse_number
    - strndupa
    - UNLIKELY
    - hash_find
    - new_user_word
    - EMIT
    - lwan_log_error
    linkageType: ''
    returnType: char
    signature: "char *found_word(struct forth_ctx *ctx,\n                              const
      char *code,\n                              const char *word,\n                              size_t
      word_len)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: lwan_log_error
      Src: /src/lwan/src/samples/forthsalon/forth.c:805,1
    - Dst: inline_calls_code
      Src: /src/lwan/src/samples/forthsalon/forth.c:812,1
    - Dst: forth_code_append
      Src: /src/lwan/src/samples/forthsalon/forth.c:815,1
    - Dst: JS_PUSH
      Src: /src/lwan/src/samples/forthsalon/forth.c:823,1
    - Dst: forth_code_len
      Src: /src/lwan/src/samples/forthsalon/forth.c:823,1
    - Dst: forth_code_get_elem
      Src: /src/lwan/src/samples/forthsalon/forth.c:827,1
    - Dst: JS_POP
      Src: /src/lwan/src/samples/forthsalon/forth.c:827,1
    - Dst: forth_code_len
      Src: /src/lwan/src/samples/forthsalon/forth.c:828,1
    - Dst: forth_code_get_elem_index
      Src: /src/lwan/src/samples/forthsalon/forth.c:829,1
    - Dst: JS_PUSH
      Src: /src/lwan/src/samples/forthsalon/forth.c:831,1
    - Dst: forth_code_len
      Src: /src/lwan/src/samples/forthsalon/forth.c:831,1
    - Dst: forth_code_get_elem
      Src: /src/lwan/src/samples/forthsalon/forth.c:835,1
    - Dst: JS_POP
      Src: /src/lwan/src/samples/forthsalon/forth.c:835,1
    - Dst: forth_code_len
      Src: /src/lwan/src/samples/forthsalon/forth.c:836,1
    - Dst: forth_code_get_elem_index
      Src: /src/lwan/src/samples/forthsalon/forth.c:837,1
    - Dst: forth_code_append
      Src: /src/lwan/src/samples/forthsalon/forth.c:843,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 3
    argNames:
    - orig_code
    - new_code
    - nested
    argTypes:
    - struct forth_code*
    - struct forth_code*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 796
    functionDepth: 1
    functionLinenumber: 796
    functionLinenumberEnd: 854
    functionName: inline_calls_code
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 1
    functionsReached:
    - forth_code_append
    - JS_PUSH
    - inline_calls_code
    - JS_POP
    - forth_code_get_elem_index
    - forth_code_len
    - lwan_log_error
    - forth_code_get_elem
    linkageType: ''
    returnType: bool
    signature: "bool inline_calls_code(const struct forth_code *orig_code,\n                              struct
      forth_code *new_code,\n                              int nested)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: inline_calls_code
      Src: /src/lwan/src/samples/forthsalon/forth.c:812,1
    - Dst: forth_code_append
      Src: /src/lwan/src/samples/forthsalon/forth.c:815,1
    - Dst: JS_PUSH
      Src: /src/lwan/src/samples/forthsalon/forth.c:823,1
    - Dst: forth_code_len
      Src: /src/lwan/src/samples/forthsalon/forth.c:823,1
    - Dst: forth_code_get_elem
      Src: /src/lwan/src/samples/forthsalon/forth.c:827,1
    - Dst: JS_POP
      Src: /src/lwan/src/samples/forthsalon/forth.c:827,1
    - Dst: forth_code_len
      Src: /src/lwan/src/samples/forthsalon/forth.c:828,1
    - Dst: forth_code_get_elem_index
      Src: /src/lwan/src/samples/forthsalon/forth.c:829,1
    - Dst: JS_PUSH
      Src: /src/lwan/src/samples/forthsalon/forth.c:831,1
    - Dst: forth_code_len
      Src: /src/lwan/src/samples/forthsalon/forth.c:831,1
    - Dst: forth_code_get_elem
      Src: /src/lwan/src/samples/forthsalon/forth.c:835,1
    - Dst: JS_POP
      Src: /src/lwan/src/samples/forthsalon/forth.c:835,1
    - Dst: forth_code_len
      Src: /src/lwan/src/samples/forthsalon/forth.c:836,1
    - Dst: forth_code_get_elem_index
      Src: /src/lwan/src/samples/forthsalon/forth.c:837,1
    - Dst: forth_code_append
      Src: /src/lwan/src/samples/forthsalon/forth.c:843,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 809
    functionDepth: 2
    functionLinenumber: 809
    functionLinenumberEnd: 851
    functionName: LWAN_ARRAY_FOREACH
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 3
    functionsReached:
    - forth_code_append
    - JS_PUSH
    - inline_calls_code
    - JS_POP
    - forth_code_get_elem_index
    - forth_code_len
    - forth_code_get_elem
    linkageType: ''
    returnType: void
    signature: void LWAN_ARRAY_FOREACH (orig_code, inst)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: forth_code_init
      Src: /src/lwan/src/samples/forthsalon/forth.c:860,1
    - Dst: inline_calls_code
      Src: /src/lwan/src/samples/forthsalon/forth.c:861,1
    - Dst: forth_code_reset
      Src: /src/lwan/src/samples/forthsalon/forth.c:862,1
    - Dst: forth_code_reset
      Src: /src/lwan/src/samples/forthsalon/forth.c:866,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct forth_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 870
      start: 856
    functionDepth: 2
    functionLinenumber: 856
    functionLinenumberEnd: 870
    functionName: inline_calls
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached:
    - forth_code_reset
    - forth_code_init
    - inline_calls_code
    linkageType: ''
    returnType: bool
    signature: bool inline_calls(struct forth_ctx *ctx)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/samples/forthsalon/forth.c:874,1
    - Dst: isspace
      Src: /src/lwan/src/samples/forthsalon/forth.c:879,1
    - Dst: isspace
      Src: /src/lwan/src/samples/forthsalon/forth.c:890,1
    - Dst: isprint
      Src: /src/lwan/src/samples/forthsalon/forth.c:892,1
    - Dst: found_word
      Src: /src/lwan/src/samples/forthsalon/forth.c:897,1
    - Dst: is_inside_word_def
      Src: /src/lwan/src/samples/forthsalon/forth.c:908,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/samples/forthsalon/forth.c:909,1
    - Dst: EMIT
      Src: /src/lwan/src/samples/forthsalon/forth.c:913,1
    - Dst: inline_calls
      Src: /src/lwan/src/samples/forthsalon/forth.c:915,1
    - Dst: peephole
      Src: /src/lwan/src/samples/forthsalon/forth.c:918,1
    - Dst: peephole
      Src: /src/lwan/src/samples/forthsalon/forth.c:919,1
    - Dst: dump_code
      Src: /src/lwan/src/samples/forthsalon/forth.c:922,1
    - Dst: check_stack_effects
      Src: /src/lwan/src/samples/forthsalon/forth.c:925,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 41
    argCount: 2
    argNames:
    - ctx
    - code
    argTypes:
    - struct forth_ctx*
    - char*
    assertStmts:
    - condition: (ctx)
      pos:
        line_end: 873
        line_start: 873
        source_file: /src/lwan/src/samples/forthsalon/forth.c
    constantsTouched: []
    func_position:
      end: 929
      start: 872
    functionDepth: 3
    functionLinenumber: 872
    functionLinenumberEnd: 929
    functionName: forth_parse_string
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached:
    - isspace
    - dump_code
    - inline_calls
    - peephole
    - check_stack_effects
    - lwan_log_error
    - isprint
    - assert
    - is_inside_word_def
    - EMIT
    - found_word
    linkageType: ''
    returnType: bool
    signature: bool forth_parse_string(struct forth_ctx *ctx, const char *code)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - name_
    - ','
    - id_
    - ','
    - struct_id_
    - ','
    - d_pushes_
    - ','
    - d_pops_
    - ','
    - r_pushes_
    - ','
    - r_pops_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 948
      start: 932
    functionDepth: 0
    functionLinenumber: 932
    functionLinenumberEnd: 948
    functionName: BUILTIN_DETAIL
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: "BUILTIN_DETAIL(name_, id_, struct_id_, d_pushes_, d_pops_, r_pushes_,
      \ \\\n                       r_pops_)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - name_
    - ','
    - id_
    - ','
    - struct_id_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 949
    functionDepth: 0
    functionLinenumber: 949
    functionLinenumberEnd: 959
    functionName: BUILTIN_COMPILER_DETAIL
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BUILTIN_COMPILER_DETAIL(name_, id_, struct_id_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - name_
    - ','
    - d_pushes_
    - ','
    - d_pops_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 960
    functionDepth: 0
    functionLinenumber: 960
    functionLinenumberEnd: 962
    functionName: BUILTIN
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BUILTIN(name_, d_pushes_, d_pops_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - name_
    - ','
    - d_pushes_
    - ','
    - d_pops_
    - ','
    - r_pushes_
    - ','
    - r_pops_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 962
    functionDepth: 0
    functionLinenumber: 962
    functionLinenumberEnd: 965
    functionName: BUILTIN_R
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BUILTIN_R(name_, d_pushes_, d_pops_, r_pushes_, r_pops_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 966
    functionDepth: 0
    functionLinenumber: 966
    functionLinenumberEnd: 968
    functionName: BUILTIN_COMPILER
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: BUILTIN_COMPILER(name_)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lwan_log_error
      Src: /src/lwan/src/samples/forthsalon/forth.c:1024,1
    - Dst: forth_code_get_elem
      Src: /src/lwan/src/samples/forthsalon/forth.c:1029,1
    - Dst: EMIT
      Src: /src/lwan/src/samples/forthsalon/forth.c:1032,1
    - Dst: EMIT
      Src: /src/lwan/src/samples/forthsalon/forth.c:1034,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/samples/forthsalon/forth.c:1036,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/samples/forthsalon/forth.c:1037,1
    - Dst: EMIT
      Src: /src/lwan/src/samples/forthsalon/forth.c:1041,1
    - Dst: forth_code_len
      Src: /src/lwan/src/samples/forthsalon/forth.c:1044,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - ctx
    - code
    - is_then
    argTypes:
    - struct forth_ctx*
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 1020
    functionDepth: 1
    functionLinenumber: 1020
    functionLinenumberEnd: 1047
    functionName: builtin_else_then
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached:
    - N_ELEMENTS
    - forth_code_len
    - EMIT
    - lwan_log_error
    - forth_code_get_elem
    linkageType: ''
    returnType: char
    signature: 'char *

      builtin_else_then(struct forth_ctx *ctx, const char *code, bool is_then)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - value_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1053
      start: 1052
    functionDepth: 0
    functionLinenumber: 1052
    functionLinenumberEnd: 1053
    functionName: PUSH_D
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PUSH_D(value_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - value_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1054
      start: 1053
    functionDepth: 0
    functionLinenumber: 1053
    functionLinenumberEnd: 1054
    functionName: PUSH_R
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PUSH_R(value_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1055
      start: 1054
    functionDepth: 0
    functionLinenumber: 1054
    functionLinenumberEnd: 1055
    functionName: DROP_D
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DROP_D()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 1055
    functionDepth: 0
    functionLinenumber: 1055
    functionLinenumberEnd: 1056
    functionName: DROP_R
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DROP_R()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1056
    functionDepth: 0
    functionLinenumber: 1056
    functionLinenumberEnd: 1057
    functionName: POP_D
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: POP_D()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1058
      start: 1057
    functionDepth: 0
    functionLinenumber: 1057
    functionLinenumberEnd: 1058
    functionName: POP_R
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: POP_R()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1060
      start: 1059
    functionDepth: 0
    functionLinenumber: 1059
    functionLinenumberEnd: 1060
    functionName: NEXT
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NEXT()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: new_builtin_word
      Src: /src/lwan/src/samples/forthsalon/forth.c:1563,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/samples/forthsalon/forth.c:1564,1
    - Dst: new_builtin_word
      Src: /src/lwan/src/samples/forthsalon/forth.c:1569,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/samples/forthsalon/forth.c:1570,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct forth_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1574
      start: 1557
    functionDepth: 2
    functionLinenumber: 1557
    functionLinenumberEnd: 1574
    functionName: register_builtins
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached:
    - new_builtin_word
    - lwan_log_critical
    linkageType: ''
    returnType: void
    signature: void register_builtins(struct forth_ctx *ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: new_builtin_word
      Src: /src/lwan/src/samples/forthsalon/forth.c:1563,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/samples/forthsalon/forth.c:1564,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1567
      start: 1562
    functionDepth: 2
    functionLinenumber: 1562
    functionLinenumberEnd: 1567
    functionName: LWAN_SECTION_FOREACH
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached:
    - new_builtin_word
    - lwan_log_critical
    linkageType: ''
    returnType: void
    signature: void LWAN_SECTION_FOREACH(forth_builtin, iter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: new_builtin_word
      Src: /src/lwan/src/samples/forthsalon/forth.c:1569,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/samples/forthsalon/forth.c:1570,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1573
      start: 1568
    functionDepth: 2
    functionLinenumber: 1568
    functionLinenumberEnd: 1573
    functionName: LWAN_SECTION_FOREACH
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached:
    - new_builtin_word
    - lwan_log_critical
    linkageType: ''
    returnType: void
    signature: void LWAN_SECTION_FOREACH(forth_compiler_builtin, iter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_word_builtin
      Src: /src/lwan/src/samples/forthsalon/forth.c:1580,1
    - Dst: forth_code_reset
      Src: /src/lwan/src/samples/forthsalon/forth.c:1581,1
    - Dst: free
      Src: /src/lwan/src/samples/forthsalon/forth.c:1582,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1583
      start: 1576
    functionDepth: 1
    functionLinenumber: 1576
    functionLinenumberEnd: 1583
    functionName: word_free
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached:
    - is_word_builtin
    - forth_code_reset
    - free
    linkageType: ''
    returnType: void
    signature: void word_free(void *ptr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/samples/forthsalon/forth.c:1587,1
    - Dst: hash_str_new
      Src: /src/lwan/src/samples/forthsalon/forth.c:1592,1
    - Dst: free
      Src: /src/lwan/src/samples/forthsalon/forth.c:1594,1
    - Dst: new_user_word
      Src: /src/lwan/src/samples/forthsalon/forth.c:1598,1
    - Dst: hash_unref
      Src: /src/lwan/src/samples/forthsalon/forth.c:1600,1
    - Dst: free
      Src: /src/lwan/src/samples/forthsalon/forth.c:1601,1
    - Dst: register_builtins
      Src: /src/lwan/src/samples/forthsalon/forth.c:1608,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1611
      start: 1585
    functionDepth: 3
    functionLinenumber: 1585
    functionLinenumberEnd: 1611
    functionName: forth_new
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached:
    - hash_unref
    - free
    - register_builtins
    - new_user_word
    - malloc
    - hash_str_new
    linkageType: ''
    returnType: struct forth_ctx
    signature: struct forth_ctx *forth_new(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_unref
      Src: /src/lwan/src/samples/forthsalon/forth.c:1618,1
    - Dst: free
      Src: /src/lwan/src/samples/forthsalon/forth.c:1619,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct forth_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1620
      start: 1613
    functionDepth: 1
    functionLinenumber: 1613
    functionLinenumberEnd: 1620
    functionName: forth_free
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 1
    functionsReached:
    - free
    - hash_unref
    linkageType: ''
    returnType: void
    signature: void forth_free(struct forth_ctx *ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - vars
    argTypes:
    - struct forth_ctx*
    - struct forth_vars*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1626
      start: 1622
    functionDepth: 0
    functionLinenumber: 1622
    functionLinenumberEnd: 1626
    functionName: forth_d_stack_len
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: "size_t forth_d_stack_len(const struct forth_ctx *ctx,\n                         const
      struct forth_vars *vars)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - vars
    argTypes:
    - struct forth_vars*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1633
      start: 1628
    functionDepth: 0
    functionLinenumber: 1628
    functionLinenumberEnd: 1633
    functionName: forth_d_stack_pop
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double forth_d_stack_pop(struct forth_vars *vars)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: forth_new
      Src: /src/lwan/src/samples/forthsalon/forth.c:1638,1
    - Dst: strndup
      Src: /src/lwan/src/samples/forthsalon/forth.c:1642,1
    - Dst: forth_free
      Src: /src/lwan/src/samples/forthsalon/forth.c:1644,1
    - Dst: forth_parse_string
      Src: /src/lwan/src/samples/forthsalon/forth.c:1648,1
    - Dst: forth_free
      Src: /src/lwan/src/samples/forthsalon/forth.c:1649,1
    - Dst: free
      Src: /src/lwan/src/samples/forthsalon/forth.c:1650,1
    - Dst: free
      Src: /src/lwan/src/samples/forthsalon/forth.c:1654,1
    - Dst: forth_run
      Src: /src/lwan/src/samples/forthsalon/forth.c:1657,1
    - Dst: forth_free
      Src: /src/lwan/src/samples/forthsalon/forth.c:1659,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - data
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1662
      start: 1636
    functionDepth: 4
    functionLinenumber: 1636
    functionLinenumberEnd: 1662
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 0
    functionsReached:
    - free
    - forth_free
    - forth_parse_string
    - forth_new
    - strndup
    - forth_run
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: forth_new
      Src: /src/lwan/src/samples/forthsalon/forth.c:1669,1
    - Dst: forth_parse_string
      Src: /src/lwan/src/samples/forthsalon/forth.c:1673,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/samples/forthsalon/forth.c:1676,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/samples/forthsalon/forth.c:1677,1
    - Dst: printf
      Src: /src/lwan/src/samples/forthsalon/forth.c:1680,1
    - Dst: forth_run
      Src: /src/lwan/src/samples/forthsalon/forth.c:1682,1
    - Dst: printf
      Src: /src/lwan/src/samples/forthsalon/forth.c:1683,1
    - Dst: forth_d_stack_len
      Src: /src/lwan/src/samples/forthsalon/forth.c:1683,1
    - Dst: forth_d_stack_len
      Src: /src/lwan/src/samples/forthsalon/forth.c:1684,1
    - Dst: printf
      Src: /src/lwan/src/samples/forthsalon/forth.c:1685,1
    - Dst: forth_d_stack_pop
      Src: /src/lwan/src/samples/forthsalon/forth.c:1685,1
    - Dst: printf
      Src: /src/lwan/src/samples/forthsalon/forth.c:1689,1
    - Dst: forth_run
      Src: /src/lwan/src/samples/forthsalon/forth.c:1691,1
    - Dst: printf
      Src: /src/lwan/src/samples/forthsalon/forth.c:1692,1
    - Dst: forth_d_stack_len
      Src: /src/lwan/src/samples/forthsalon/forth.c:1692,1
    - Dst: forth_d_stack_len
      Src: /src/lwan/src/samples/forthsalon/forth.c:1693,1
    - Dst: printf
      Src: /src/lwan/src/samples/forthsalon/forth.c:1694,1
    - Dst: forth_d_stack_pop
      Src: /src/lwan/src/samples/forthsalon/forth.c:1694,1
    - Dst: forth_free
      Src: /src/lwan/src/samples/forthsalon/forth.c:1698,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1701
      start: 1664
    functionDepth: 4
    functionLinenumber: 1664
    functionLinenumberEnd: 1701
    functionName: main
    functionSourceFile: /src/lwan/src/samples/forthsalon/forth.c
    functionUses: 2
    functionsReached:
    - forth_free
    - __builtin_unreachable
    - lwan_log_critical
    - forth_parse_string
    - forth_new
    - forth_d_stack_len
    - forth_d_stack_pop
    - printf
    - forth_run
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - l
    - r
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 85
    functionName: GifIMax
    functionSourceFile: /src/lwan/src/samples/forthsalon/gif.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int GifIMax(int l, int r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - l
    - r
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 86
    functionName: GifIMin
    functionSourceFile: /src/lwan/src/samples/forthsalon/gif.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int GifIMin(int l, int r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - i
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 87
    functionName: GifIAbs
    functionSourceFile: /src/lwan/src/samples/forthsalon/gif.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int GifIAbs(int i)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: GifIAbs
      Src: /src/lwan/src/samples/forthsalon/gif.h:105,1
    - Dst: GifIAbs
      Src: /src/lwan/src/samples/forthsalon/gif.h:105,1
    - Dst: GifIAbs
      Src: /src/lwan/src/samples/forthsalon/gif.h:105,1
    - Dst: GifGetClosestPaletteColor
      Src: /src/lwan/src/samples/forthsalon/gif.h:124,1
    - Dst: GifGetClosestPaletteColor
      Src: /src/lwan/src/samples/forthsalon/gif.h:128,1
    - Dst: GifGetClosestPaletteColor
      Src: /src/lwan/src/samples/forthsalon/gif.h:133,1
    - Dst: GifGetClosestPaletteColor
      Src: /src/lwan/src/samples/forthsalon/gif.h:136,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 7
    argNames:
    - pPal
    - r
    - g
    - b
    - bestInd
    - bestDiff
    - treeRoot
    argTypes:
    - GifPalette*
    - int
    - int
    - int
    - int*
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 139
    functionName: GifGetClosestPaletteColor
    functionSourceFile: /src/lwan/src/samples/forthsalon/gif.h
    functionUses: 1
    functionsReached:
    - GifIAbs
    - GifGetClosestPaletteColor
    linkageType: ''
    returnType: void
    signature: void GifGetClosestPaletteColor( GifPalette* pPal, int r, int g, int
      b, int* bestInd, int* bestDiff, int treeRoot )
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - image
    - pixA
    - pixB
    argTypes:
    - uint8_t*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 162
    functionName: GifSwapPixels
    functionSourceFile: /src/lwan/src/samples/forthsalon/gif.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void GifSwapPixels(uint8_t* image, int pixA, int pixB)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GifSwapPixels
      Src: /src/lwan/src/samples/forthsalon/gif.h:174,1
    - Dst: GifSwapPixels
      Src: /src/lwan/src/samples/forthsalon/gif.h:181,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 5
    argNames:
    - image
    - left
    - right
    - elt
    - pivotValue
    argTypes:
    - uint8_t*
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 188
    functionName: GifPartition
    functionSourceFile: /src/lwan/src/samples/forthsalon/gif.h
    functionUses: 0
    functionsReached:
    - GifSwapPixels
    linkageType: ''
    returnType: int
    signature: int GifPartition(uint8_t* image, const int left, const int right, const
      int elt, int pivotValue)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: GifSwapPixels
      Src: /src/lwan/src/samples/forthsalon/gif.h:196,1
    - Dst: GifPartition
      Src: /src/lwan/src/samples/forthsalon/gif.h:197,1
    - Dst: GifSwapPixels
      Src: /src/lwan/src/samples/forthsalon/gif.h:198,1
    - Dst: GifPartitionByMedian
      Src: /src/lwan/src/samples/forthsalon/gif.h:202,1
    - Dst: GifPartitionByMedian
      Src: /src/lwan/src/samples/forthsalon/gif.h:205,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 5
    argNames:
    - image
    - left
    - right
    - com
    - neededCenter
    argTypes:
    - uint8_t*
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 191
    functionDepth: 2
    functionLinenumber: 191
    functionLinenumberEnd: 207
    functionName: GifPartitionByMedian
    functionSourceFile: /src/lwan/src/samples/forthsalon/gif.h
    functionUses: 1
    functionsReached:
    - GifPartitionByMedian
    - GifPartition
    - GifSwapPixels
    linkageType: ''
    returnType: void
    signature: void GifPartitionByMedian(uint8_t* image, int left, int right, int
      com, int neededCenter)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GifPartition
      Src: /src/lwan/src/samples/forthsalon/gif.h:214,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 5
    argNames:
    - image
    - left
    - right
    - com
    - neededMean
    argTypes:
    - uint8_t*
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 210
    functionDepth: 2
    functionLinenumber: 210
    functionLinenumberEnd: 217
    functionName: GifPartitionByMean
    functionSourceFile: /src/lwan/src/samples/forthsalon/gif.h
    functionUses: 0
    functionsReached:
    - GifPartition
    linkageType: ''
    returnType: int
    signature: int GifPartitionByMean(uint8_t* image, int left, int right, int com,
      int neededMean)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: GifIMin
      Src: /src/lwan/src/samples/forthsalon/gif.h:243,1
    - Dst: GifIMin
      Src: /src/lwan/src/samples/forthsalon/gif.h:244,1
    - Dst: GifIMin
      Src: /src/lwan/src/samples/forthsalon/gif.h:245,1
    - Dst: GifIMax
      Src: /src/lwan/src/samples/forthsalon/gif.h:261,1
    - Dst: GifIMax
      Src: /src/lwan/src/samples/forthsalon/gif.h:262,1
    - Dst: GifIMax
      Src: /src/lwan/src/samples/forthsalon/gif.h:263,1
    - Dst: GifPartitionByMedian
      Src: /src/lwan/src/samples/forthsalon/gif.h:329,1
    - Dst: GifIAbs
      Src: /src/lwan/src/samples/forthsalon/gif.h:333,1
    - Dst: GifPartitionByMean
      Src: /src/lwan/src/samples/forthsalon/gif.h:337,1
    - Dst: GifSplitPalette
      Src: /src/lwan/src/samples/forthsalon/gif.h:351,1
    - Dst: GifSplitPalette
      Src: /src/lwan/src/samples/forthsalon/gif.h:352,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 81
    argCount: 6
    argNames:
    - image
    - numPixels
    - treeNode
    - treeLevel
    - buildForDither
    - pal
    argTypes:
    - uint8_t*
    - int
    - int
    - int
    - bool
    - GifPalette*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 220
    functionDepth: 3
    functionLinenumber: 220
    functionLinenumberEnd: 353
    functionName: GifSplitPalette
    functionSourceFile: /src/lwan/src/samples/forthsalon/gif.h
    functionUses: 1
    functionsReached:
    - GifPartitionByMedian
    - GifIMax
    - GifIAbs
    - GifIMin
    - GifPartitionByMean
    - GifSplitPalette
    linkageType: ''
    returnType: void
    signature: void GifSplitPalette(uint8_t* image, int numPixels, int treeNode, int
      treeLevel, bool buildForDither, GifPalette* pal)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - lastFrame
    - frame
    - numPixels
    argTypes:
    - uint8_t*
    - uint8_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 381
    functionName: GifPickChangedPixels
    functionSourceFile: /src/lwan/src/samples/forthsalon/gif.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int GifPickChangedPixels( const uint8_t* lastFrame, uint8_t* frame,
      int numPixels )
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GIF_TEMP_MALLOC
      Src: /src/lwan/src/samples/forthsalon/gif.h:392,1
    - Dst: memcpy
      Src: /src/lwan/src/samples/forthsalon/gif.h:393,1
    - Dst: GifPickChangedPixels
      Src: /src/lwan/src/samples/forthsalon/gif.h:397,1
    - Dst: GifSplitPalette
      Src: /src/lwan/src/samples/forthsalon/gif.h:399,1
    - Dst: GIF_TEMP_FREE
      Src: /src/lwan/src/samples/forthsalon/gif.h:401,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 7
    argNames:
    - lastFrame
    - nextFrame
    - width
    - height
    - bitDepth
    - buildForDither
    - pPal
    argTypes:
    - uint8_t*
    - uint8_t*
    - uint32_t
    - uint32_t
    - int
    - bool
    - GifPalette*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 385
    functionDepth: 4
    functionLinenumber: 385
    functionLinenumberEnd: 408
    functionName: GifMakePalette
    functionSourceFile: /src/lwan/src/samples/forthsalon/gif.h
    functionUses: 0
    functionsReached:
    - memcpy
    - GIF_TEMP_MALLOC
    - GifPickChangedPixels
    - GIF_TEMP_FREE
    - GifSplitPalette
    linkageType: ''
    returnType: void
    signature: void GifMakePalette( const uint8_t* lastFrame, const uint8_t* nextFrame,
      uint32_t width, uint32_t height, int bitDepth, bool buildForDither, GifPalette*
      pPal )
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: GIF_TEMP_MALLOC
      Src: /src/lwan/src/samples/forthsalon/gif.h:418,1
    - Dst: GifGetClosestPaletteColor
      Src: /src/lwan/src/samples/forthsalon/gif.h:457,1
    - Dst: GifIMax
      Src: /src/lwan/src/samples/forthsalon/gif.h:479,1
    - Dst: GifIMax
      Src: /src/lwan/src/samples/forthsalon/gif.h:480,1
    - Dst: GifIMax
      Src: /src/lwan/src/samples/forthsalon/gif.h:481,1
    - Dst: GifIMax
      Src: /src/lwan/src/samples/forthsalon/gif.h:487,1
    - Dst: GifIMax
      Src: /src/lwan/src/samples/forthsalon/gif.h:488,1
    - Dst: GifIMax
      Src: /src/lwan/src/samples/forthsalon/gif.h:489,1
    - Dst: GifIMax
      Src: /src/lwan/src/samples/forthsalon/gif.h:495,1
    - Dst: GifIMax
      Src: /src/lwan/src/samples/forthsalon/gif.h:496,1
    - Dst: GifIMax
      Src: /src/lwan/src/samples/forthsalon/gif.h:497,1
    - Dst: GifIMax
      Src: /src/lwan/src/samples/forthsalon/gif.h:503,1
    - Dst: GifIMax
      Src: /src/lwan/src/samples/forthsalon/gif.h:504,1
    - Dst: GifIMax
      Src: /src/lwan/src/samples/forthsalon/gif.h:505,1
    - Dst: GIF_TEMP_FREE
      Src: /src/lwan/src/samples/forthsalon/gif.h:516,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 44
    argCount: 6
    argNames:
    - lastFrame
    - nextFrame
    - outFrame
    - width
    - height
    - pPal
    argTypes:
    - uint8_t*
    - uint8_t*
    - uint8_t*
    - uint32_t
    - uint32_t
    - GifPalette*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 411
    functionDepth: 2
    functionLinenumber: 411
    functionLinenumberEnd: 517
    functionName: GifDitherImage
    functionSourceFile: /src/lwan/src/samples/forthsalon/gif.h
    functionUses: 0
    functionsReached:
    - GIF_TEMP_FREE
    - GIF_TEMP_MALLOC
    - GifIMax
    - GifGetClosestPaletteColor
    linkageType: ''
    returnType: void
    signature: void GifDitherImage( const uint8_t* lastFrame, const uint8_t* nextFrame,
      uint8_t* outFrame, uint32_t width, uint32_t height, GifPalette* pPal )
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GifGetClosestPaletteColor
      Src: /src/lwan/src/samples/forthsalon/gif.h:542,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 6
    argNames:
    - lastFrame
    - nextFrame
    - outFrame
    - width
    - height
    - pPal
    argTypes:
    - uint8_t*
    - uint8_t*
    - uint8_t*
    - uint32_t
    - uint32_t
    - GifPalette*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 520
    functionDepth: 2
    functionLinenumber: 520
    functionLinenumberEnd: 555
    functionName: GifThresholdImage
    functionSourceFile: /src/lwan/src/samples/forthsalon/gif.h
    functionUses: 0
    functionsReached:
    - GifGetClosestPaletteColor
    linkageType: ''
    returnType: void
    signature: void GifThresholdImage( const uint8_t* lastFrame, const uint8_t* nextFrame,
      uint8_t* outFrame, uint32_t width, uint32_t height, GifPalette* pPal )
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - stat
    - bit
    argTypes:
    - GifBitStatus*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 571
    functionDepth: 0
    functionLinenumber: 571
    functionLinenumberEnd: 586
    functionName: GifWriteBit
    functionSourceFile: /src/lwan/src/samples/forthsalon/gif.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void GifWriteBit( GifBitStatus* stat, uint32_t bit )
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:591,1
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/samples/forthsalon/gif.h:592,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - f
    - stat
    argTypes:
    - struct lwan_strbuf*
    - GifBitStatus*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 589
    functionDepth: 1
    functionLinenumber: 589
    functionLinenumberEnd: 597
    functionName: GifWriteChunk
    functionSourceFile: /src/lwan/src/samples/forthsalon/gif.h
    functionUses: 0
    functionsReached:
    - lwan_strbuf_append_char
    - lwan_strbuf_append_str
    linkageType: ''
    returnType: void
    signature: void GifWriteChunk( struct lwan_strbuf* f, GifBitStatus* stat )
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GifWriteBit
      Src: /src/lwan/src/samples/forthsalon/gif.h:603,1
    - Dst: GifWriteChunk
      Src: /src/lwan/src/samples/forthsalon/gif.h:608,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - f
    - stat
    - code
    - length
    argTypes:
    - struct lwan_strbuf*
    - GifBitStatus*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 599
    functionDepth: 2
    functionLinenumber: 599
    functionLinenumberEnd: 611
    functionName: GifWriteCode
    functionSourceFile: /src/lwan/src/samples/forthsalon/gif.h
    functionUses: 0
    functionsReached:
    - GifWriteChunk
    - GifWriteBit
    linkageType: ''
    returnType: void
    signature: void GifWriteCode( struct lwan_strbuf* f, GifBitStatus* stat, uint32_t
      code, uint32_t length )
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:623,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:624,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:625,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:633,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:634,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:635,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - pPal
    - f
    argTypes:
    - GifPalette*
    - struct lwan_strbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 621
    functionDepth: 1
    functionLinenumber: 621
    functionLinenumberEnd: 637
    functionName: GifWritePalette
    functionSourceFile: /src/lwan/src/samples/forthsalon/gif.h
    functionUses: 0
    functionsReached:
    - lwan_strbuf_append_char
    linkageType: ''
    returnType: void
    signature: void GifWritePalette( const GifPalette* pPal, struct lwan_strbuf* f
      )
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:643,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:644,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:645,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:646,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:647,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:648,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:649,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:650,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:652,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:654,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:655,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:656,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:657,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:659,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:660,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:661,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:662,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:667,1
    - Dst: GifWritePalette
      Src: /src/lwan/src/samples/forthsalon/gif.h:668,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:673,1
    - Dst: GIF_TEMP_MALLOC
      Src: /src/lwan/src/samples/forthsalon/gif.h:675,1
    - Dst: memset
      Src: /src/lwan/src/samples/forthsalon/gif.h:677,1
    - Dst: GifWriteCode
      Src: /src/lwan/src/samples/forthsalon/gif.h:687,1
    - Dst: GifWriteCode
      Src: /src/lwan/src/samples/forthsalon/gif.h:718,1
    - Dst: GifWriteCode
      Src: /src/lwan/src/samples/forthsalon/gif.h:732,1
    - Dst: memset
      Src: /src/lwan/src/samples/forthsalon/gif.h:734,1
    - Dst: GifWriteCode
      Src: /src/lwan/src/samples/forthsalon/gif.h:745,1
    - Dst: GifWriteCode
      Src: /src/lwan/src/samples/forthsalon/gif.h:746,1
    - Dst: GifWriteCode
      Src: /src/lwan/src/samples/forthsalon/gif.h:747,1
    - Dst: GifWriteBit
      Src: /src/lwan/src/samples/forthsalon/gif.h:750,1
    - Dst: GifWriteChunk
      Src: /src/lwan/src/samples/forthsalon/gif.h:751,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:753,1
    - Dst: GIF_TEMP_FREE
      Src: /src/lwan/src/samples/forthsalon/gif.h:755,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 58
    argCount: 8
    argNames:
    - f
    - image
    - left
    - top
    - width
    - height
    - delay
    - pPal
    argTypes:
    - struct lwan_strbuf*
    - uint8_t*
    - uint32_t
    - uint32_t
    - uint32_t
    - uint32_t
    - uint32_t
    - GifPalette*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 640
    functionDepth: 3
    functionLinenumber: 640
    functionLinenumberEnd: 756
    functionName: GifWriteLzwImage
    functionSourceFile: /src/lwan/src/samples/forthsalon/gif.h
    functionUses: 0
    functionsReached:
    - GifWriteBit
    - GifWriteCode
    - GIF_TEMP_MALLOC
    - GifWritePalette
    - memset
    - GIF_TEMP_FREE
    - lwan_strbuf_append_char
    - GifWriteChunk
    linkageType: ''
    returnType: void
    signature: void GifWriteLzwImage(struct lwan_strbuf* f, uint8_t* image, uint32_t
      left, uint32_t top,  uint32_t width, uint32_t height, uint32_t delay, GifPalette*
      pPal)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GIF_MALLOC
      Src: /src/lwan/src/samples/forthsalon/gif.h:780,1
    - Dst: lwan_strbuf_append_strz
      Src: /src/lwan/src/samples/forthsalon/gif.h:782,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:785,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:786,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:787,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:788,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:790,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:791,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:792,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:796,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:797,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:798,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:800,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:801,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:802,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:807,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:808,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:809,1
    - Dst: lwan_strbuf_append_strz
      Src: /src/lwan/src/samples/forthsalon/gif.h:810,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:811,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:813,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:814,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:815,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:817,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 34
    argCount: 7
    argNames:
    - writer
    - f
    - width
    - height
    - delay
    - bitDepth
    - dither
    argTypes:
    - GifWriter*
    - struct lwan_strbuf*
    - uint32_t
    - uint32_t
    - uint32_t
    - int32_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 770
    functionDepth: 1
    functionLinenumber: 770
    functionLinenumberEnd: 821
    functionName: GifBegin
    functionSourceFile: /src/lwan/src/samples/forthsalon/gif.h
    functionUses: 0
    functionsReached:
    - lwan_strbuf_append_char
    - GIF_MALLOC
    - lwan_strbuf_append_strz
    linkageType: ''
    returnType: bool
    signature: bool GifBegin( GifWriter* writer, struct lwan_strbuf *f, uint32_t width,
      uint32_t height, uint32_t delay, int32_t bitDepth, bool dither )
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: GifMakePalette
      Src: /src/lwan/src/samples/forthsalon/gif.h:835,1
    - Dst: GifDitherImage
      Src: /src/lwan/src/samples/forthsalon/gif.h:838,1
    - Dst: GifThresholdImage
      Src: /src/lwan/src/samples/forthsalon/gif.h:840,1
    - Dst: GifWriteLzwImage
      Src: /src/lwan/src/samples/forthsalon/gif.h:842,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 7
    argNames:
    - writer
    - image
    - width
    - height
    - delay
    - bitDepth
    - dither
    argTypes:
    - GifWriter*
    - uint8_t*
    - uint32_t
    - uint32_t
    - uint32_t
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 827
    functionDepth: 5
    functionLinenumber: 827
    functionLinenumberEnd: 845
    functionName: GifWriteFrame
    functionSourceFile: /src/lwan/src/samples/forthsalon/gif.h
    functionUses: 0
    functionsReached:
    - GifThresholdImage
    - GifDitherImage
    - GifMakePalette
    - GifWriteLzwImage
    linkageType: ''
    returnType: bool
    signature: bool GifWriteFrame( GifWriter* writer, const uint8_t* image, uint32_t
      width, uint32_t height, uint32_t delay, int bitDepth, bool dither)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/forthsalon/gif.h:854,1
    - Dst: GIF_FREE
      Src: /src/lwan/src/samples/forthsalon/gif.h:855,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - writer
    argTypes:
    - GifWriter*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 861
      start: 850
    functionDepth: 1
    functionLinenumber: 850
    functionLinenumberEnd: 861
    functionName: GifEnd
    functionSourceFile: /src/lwan/src/samples/forthsalon/gif.h
    functionUses: 1
    functionsReached:
    - lwan_strbuf_append_char
    - GIF_FREE
    linkageType: ''
    returnType: bool
    signature: bool GifEnd( GifWriter* writer )
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/lwan/src/samples/asyncawait/main.c:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 31
    functionName: close_socket
    functionSourceFile: /src/lwan/src/samples/asyncawait/main.c
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void close_socket(void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_main
      Src: /src/lwan/src/samples/asyncawait/main.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 61
    functionName: main
    functionSourceFile: /src/lwan/src/samples/asyncawait/main.c
    functionUses: 3
    functionsReached:
    - lwan_main
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/lwan/src/samples/clock/gifenc.c:36,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - key
    - degree
    argTypes:
    - uint16_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 40
    functionName: new_node
    functionSourceFile: /src/lwan/src/samples/clock/gifenc.c
    functionUses: 0
    functionsReached:
    - calloc
    linkageType: ''
    returnType: Node
    signature: Node *new_node(uint16_t key, int degree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: new_node
      Src: /src/lwan/src/samples/clock/gifenc.c:44,1
    - Dst: new_node
      Src: /src/lwan/src/samples/clock/gifenc.c:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - degree
    - nkeys
    argTypes:
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 50
    functionName: new_trie
    functionSourceFile: /src/lwan/src/samples/clock/gifenc.c
    functionUses: 0
    functionsReached:
    - new_node
    linkageType: ''
    returnType: Node
    signature: Node *new_trie(int degree, int *nkeys)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: del_trie
      Src: /src/lwan/src/samples/clock/gifenc.c:57,1
    - Dst: free
      Src: /src/lwan/src/samples/clock/gifenc.c:58,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - root
    - degree
    argTypes:
    - Node*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 59
    functionName: del_trie
    functionSourceFile: /src/lwan/src/samples/clock/gifenc.c
    functionUses: 1
    functionsReached:
    - del_trie
    - free
    linkageType: ''
    returnType: void
    signature: void del_trie(Node *root, int degree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/clock/gifenc.c:65,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/clock/gifenc.c:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buf
    - num
    argTypes:
    - struct lwan_strbuf*
    - int16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 67
    functionName: write_num
    functionSourceFile: /src/lwan/src/samples/clock/gifenc.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_append_char
    linkageType: ''
    returnType: void
    signature: void write_num(struct lwan_strbuf *buf, int16_t num)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/lwan/src/samples/clock/gifenc.c:77,1
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/samples/clock/gifenc.c:89,1
    - Dst: write_num
      Src: /src/lwan/src/samples/clock/gifenc.c:90,1
    - Dst: write_num
      Src: /src/lwan/src/samples/clock/gifenc.c:91,1
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/samples/clock/gifenc.c:92,1
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/samples/clock/gifenc.c:96,1
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/samples/clock/gifenc.c:98,1
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/samples/clock/gifenc.c:100,1
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/samples/clock/gifenc.c:106,1
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/samples/clock/gifenc.c:115,1
    - Dst: put_loop
      Src: /src/lwan/src/samples/clock/gifenc.c:121,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 6
    argNames:
    - buf
    - width
    - height
    - palette
    - depth
    - loop
    argTypes:
    - struct lwan_strbuf*
    - uint16_t
    - uint16_t
    - uint8_t*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 69
    functionDepth: 2
    functionLinenumber: 69
    functionLinenumberEnd: 126
    functionName: ge_new_gif
    functionSourceFile: /src/lwan/src/samples/clock/gifenc.c
    functionUses: 0
    functionsReached:
    - put_loop
    - calloc
    - write_num
    - lwan_strbuf_append_str
    linkageType: ''
    returnType: ge_GIF
    signature: "ge_GIF *ge_new_gif(struct lwan_strbuf *buf,\n                   uint16_t
      width,\n                   uint16_t height,\n                   uint8_t *palette,\n
      \                  int depth,\n                   int loop)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/samples/clock/gifenc.c:130,1
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/samples/clock/gifenc.c:131,1
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/samples/clock/gifenc.c:132,1
    - Dst: write_num
      Src: /src/lwan/src/samples/clock/gifenc.c:133,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/clock/gifenc.c:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - gif
    - loop
    argTypes:
    - ge_GIF*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 128
    functionDepth: 2
    functionLinenumber: 128
    functionLinenumberEnd: 135
    functionName: put_loop
    functionSourceFile: /src/lwan/src/samples/clock/gifenc.c
    functionUses: 1
    functionsReached:
    - lwan_strbuf_append_char
    - write_num
    - lwan_strbuf_append_str
    linkageType: ''
    returnType: void
    signature: void put_loop(ge_GIF *gif, uint16_t loop)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/clock/gifenc.c:153,1
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/samples/clock/gifenc.c:154,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - gif
    - key
    - key_size
    argTypes:
    - ge_GIF*
    - uint16_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 163
    functionName: put_key
    functionSourceFile: /src/lwan/src/samples/clock/gifenc.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_append_char
    - lwan_strbuf_append_str
    linkageType: ''
    returnType: void
    signature: void put_key(ge_GIF *gif, uint16_t key, int key_size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/clock/gifenc.c:173,1
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/samples/clock/gifenc.c:174,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/clock/gifenc.c:175,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - gif
    argTypes:
    - ge_GIF*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 178
    functionName: end_key
    functionSourceFile: /src/lwan/src/samples/clock/gifenc.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_append_char
    - lwan_strbuf_append_str
    linkageType: ''
    returnType: void
    signature: void end_key(ge_GIF *gif)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/clock/gifenc.c:187,1
    - Dst: write_num
      Src: /src/lwan/src/samples/clock/gifenc.c:188,1
    - Dst: write_num
      Src: /src/lwan/src/samples/clock/gifenc.c:189,1
    - Dst: write_num
      Src: /src/lwan/src/samples/clock/gifenc.c:190,1
    - Dst: write_num
      Src: /src/lwan/src/samples/clock/gifenc.c:191,1
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/samples/clock/gifenc.c:192,1
    - Dst: new_trie
      Src: /src/lwan/src/samples/clock/gifenc.c:194,1
    - Dst: put_key
      Src: /src/lwan/src/samples/clock/gifenc.c:196,1
    - Dst: put_key
      Src: /src/lwan/src/samples/clock/gifenc.c:206,1
    - Dst: new_node
      Src: /src/lwan/src/samples/clock/gifenc.c:210,1
    - Dst: put_key
      Src: /src/lwan/src/samples/clock/gifenc.c:212,1
    - Dst: del_trie
      Src: /src/lwan/src/samples/clock/gifenc.c:213,1
    - Dst: new_trie
      Src: /src/lwan/src/samples/clock/gifenc.c:214,1
    - Dst: put_key
      Src: /src/lwan/src/samples/clock/gifenc.c:222,1
    - Dst: put_key
      Src: /src/lwan/src/samples/clock/gifenc.c:223,1
    - Dst: end_key
      Src: /src/lwan/src/samples/clock/gifenc.c:224,1
    - Dst: del_trie
      Src: /src/lwan/src/samples/clock/gifenc.c:225,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 35
    argCount: 5
    argNames:
    - gif
    - w
    - h
    - x
    - y
    argTypes:
    - ge_GIF*
    - uint16_t
    - uint16_t
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 180
    functionDepth: 2
    functionLinenumber: 180
    functionLinenumberEnd: 226
    functionName: put_image
    functionSourceFile: /src/lwan/src/samples/clock/gifenc.c
    functionUses: 0
    functionsReached:
    - new_trie
    - end_key
    - write_num
    - new_node
    - del_trie
    - put_key
    - lwan_strbuf_append_char
    - lwan_strbuf_append_str
    linkageType: ''
    returnType: void
    signature: void put_image(ge_GIF *gif, uint16_t w, uint16_t h, uint16_t x, uint16_t
      y)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 5
    argNames:
    - gif
    - w
    - h
    - x
    - y
    argTypes:
    - ge_GIF*
    - uint16_t*
    - uint16_t*
    - uint16_t*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 263
    functionName: get_bbox
    functionSourceFile: /src/lwan/src/samples/clock/gifenc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int get_bbox(ge_GIF *gif, uint16_t *w, uint16_t *h, uint16_t *x, uint16_t
      *y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/samples/clock/gifenc.c:267,1
    - Dst: write_num
      Src: /src/lwan/src/samples/clock/gifenc.c:268,1
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/samples/clock/gifenc.c:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - gif
    - d
    argTypes:
    - ge_GIF*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 265
    functionDepth: 2
    functionLinenumber: 265
    functionLinenumberEnd: 270
    functionName: set_delay
    functionSourceFile: /src/lwan/src/samples/clock/gifenc.c
    functionUses: 0
    functionsReached:
    - write_num
    - lwan_strbuf_append_str
    linkageType: ''
    returnType: void
    signature: void set_delay(ge_GIF *gif, uint16_t d)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: set_delay
      Src: /src/lwan/src/samples/clock/gifenc.c:278,1
    - Dst: get_bbox
      Src: /src/lwan/src/samples/clock/gifenc.c:283,1
    - Dst: put_image
      Src: /src/lwan/src/samples/clock/gifenc.c:288,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - gif
    - delay
    argTypes:
    - ge_GIF*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 272
    functionDepth: 3
    functionLinenumber: 272
    functionLinenumberEnd: 293
    functionName: ge_add_frame
    functionSourceFile: /src/lwan/src/samples/clock/gifenc.c
    functionUses: 0
    functionsReached:
    - put_image
    - set_delay
    - get_bbox
    linkageType: ''
    returnType: void
    signature: void ge_add_frame(ge_GIF *gif, uint16_t delay)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/samples/clock/gifenc.c:299,1
    - Dst: free
      Src: /src/lwan/src/samples/clock/gifenc.c:300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - gif
    argTypes:
    - ge_GIF*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 295
    functionDepth: 1
    functionLinenumber: 295
    functionLinenumberEnd: 303
    functionName: ge_close_gif
    functionSourceFile: /src/lwan/src/samples/clock/gifenc.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_append_char
    - free
    linkageType: ''
    returnType: struct lwan_strbuf
    signature: struct lwan_strbuf *ge_close_gif(ge_GIF *gif)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 65
    functionName: PAIR
    functionSourceFile: /src/lwan/src/samples/clock/blocks.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PAIR(x, y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - x1
    - ','
    - y1
    - ','
    - x2
    - ','
    - y2
    - ','
    - x3
    - ','
    - y3
    - ','
    - x4
    - ','
    - y4
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 67
    functionName: 'OFF'
    functionSourceFile: /src/lwan/src/samples/clock/blocks.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: OFF(x1, y1, x2, y2, x3, y3, x4, y4)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 8
    argNames:
    - shape
    - color
    - x
    - y
    - w
    - h
    - rot
    - buffer
    argTypes:
    - enum shape
    - enum color
    - int
    - int
    - int
    - int
    - enum rotation
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 218
    functionName: draw_shape_full
    functionSourceFile: /src/lwan/src/samples/clock/blocks.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void draw_shape_full(enum shape shape,\n                            enum
      color color,\n                            int x,\n                            int
      y,\n                            int w,\n                            int h,\n
      \                           enum rotation rot,\n                            unsigned
      char *buffer)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: draw_shape_full
      Src: /src/lwan/src/samples/clock/blocks.c:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - shape
    - x
    - y
    - w
    - h
    - rot
    - buffer
    argTypes:
    - enum shape
    - int
    - int
    - int
    - int
    - enum rotation
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 229
    functionName: draw_shape
    functionSourceFile: /src/lwan/src/samples/clock/blocks.c
    functionUses: 0
    functionsReached:
    - draw_shape_full
    linkageType: ''
    returnType: void
    signature: "void draw_shape(enum shape shape,\n                       int x,\n
      \                      int y,\n                       int w,\n                       int
      h,\n                       enum rotation rot,\n                       unsigned
      char *buffer)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/lwan/src/samples/clock/blocks.c:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - blocks
    - gif
    argTypes:
    - struct blocks*
    - ge_GIF*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 239
    functionName: blocks_init
    functionSourceFile: /src/lwan/src/samples/clock/blocks.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void blocks_init(struct blocks *blocks, ge_GIF *gif)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/lwan/src/samples/clock/blocks.c:249,1
    - Dst: assert
      Src: /src/lwan/src/samples/clock/blocks.c:286,1
    - Dst: draw_shape
      Src: /src/lwan/src/samples/clock/blocks.c:288,1
    - Dst: draw_shape
      Src: /src/lwan/src/samples/clock/blocks.c:305,1
    - Dst: draw_shape_full
      Src: /src/lwan/src/samples/clock/blocks.c:312,1
    - Dst: draw_shape_full
      Src: /src/lwan/src/samples/clock/blocks.c:313,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 49
    argCount: 2
    argNames:
    - blocks
    - odd_second
    argTypes:
    - struct blocks*
    - bool
    assertStmts:
    - condition: (rotations >= 0 && rotations < ROT_MAX)
      pos:
        line_end: 285
        line_start: 285
        source_file: /src/lwan/src/samples/clock/blocks.c
    constantsTouched: []
    func_position:
      end: 317
      start: 241
    functionDepth: 2
    functionLinenumber: 241
    functionLinenumberEnd: 317
    functionName: blocks_draw
    functionSourceFile: /src/lwan/src/samples/clock/blocks.c
    functionUses: 0
    functionsReached:
    - memset
    - draw_shape
    - assert
    - draw_shape_full
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t blocks_draw(struct blocks *blocks, bool odd_second)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ge_close_gif
      Src: /src/lwan/src/samples/clock/main.c:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 58
    functionName: destroy_gif
    functionSourceFile: /src/lwan/src/samples/clock/main.c
    functionUses: 0
    functionsReached:
    - ge_close_gif
    linkageType: ''
    returnType: void
    signature: void destroy_gif(void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: localtime_r
      Src: /src/lwan/src/samples/clock/main.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 64
    functionName: my_localtime
    functionSourceFile: /src/lwan/src/samples/clock/main.c
    functionUses: 0
    functionsReached:
    - localtime_r
    linkageType: ''
    returnType: struct tm
    signature: struct tm * my_localtime(const time_t *t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ge_new_gif
      Src: /src/lwan/src/samples/clock/main.c:69,1
    - Dst: coro_defer
      Src: /src/lwan/src/samples/clock/main.c:75,1
    - Dst: memset
      Src: /src/lwan/src/samples/clock/main.c:80,1
    - Dst: time
      Src: /src/lwan/src/samples/clock/main.c:87,1
    - Dst: strftime
      Src: /src/lwan/src/samples/clock/main.c:88,1
    - Dst: my_localtime
      Src: /src/lwan/src/samples/clock/main.c:88,1
    - Dst: ge_add_frame
      Src: /src/lwan/src/samples/clock/main.c:107,1
    - Dst: lwan_response_send_chunk
      Src: /src/lwan/src/samples/clock/main.c:108,1
    - Dst: lwan_request_sleep
      Src: /src/lwan/src/samples/clock/main.c:109,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 66
    functionDepth: 4
    functionLinenumber: 66
    functionLinenumberEnd: 113
    functionName: LWAN_HANDLER
    functionSourceFile: /src/lwan/src/samples/clock/main.c
    functionUses: 0
    functionsReached:
    - lwan_request_sleep
    - ge_new_gif
    - ge_add_frame
    - strftime
    - memset
    - my_localtime
    - coro_defer
    - lwan_response_send_chunk
    - time
    linkageType: ''
    returnType: void
    signature: void LWAN_HANDLER(clock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xdaliclock_free
      Src: /src/lwan/src/samples/clock/main.c:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 120
    functionName: destroy_xdaliclock
    functionSourceFile: /src/lwan/src/samples/clock/main.c
    functionUses: 0
    functionsReached:
    - xdaliclock_free
    linkageType: ''
    returnType: void
    signature: void destroy_xdaliclock(void *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ge_new_gif
      Src: /src/lwan/src/samples/clock/main.c:124,1
    - Dst: coro_defer
      Src: /src/lwan/src/samples/clock/main.c:131,1
    - Dst: xdaliclock_new
      Src: /src/lwan/src/samples/clock/main.c:133,1
    - Dst: coro_defer
      Src: /src/lwan/src/samples/clock/main.c:137,1
    - Dst: memset
      Src: /src/lwan/src/samples/clock/main.c:142,1
    - Dst: xdaliclock_get_frame_time
      Src: /src/lwan/src/samples/clock/main.c:144,1
    - Dst: xdaliclock_update
      Src: /src/lwan/src/samples/clock/main.c:146,1
    - Dst: ge_add_frame
      Src: /src/lwan/src/samples/clock/main.c:148,1
    - Dst: lwan_response_send_chunk
      Src: /src/lwan/src/samples/clock/main.c:149,1
    - Dst: lwan_request_sleep
      Src: /src/lwan/src/samples/clock/main.c:150,1
    - Dst: xdaliclock_get_frame_time
      Src: /src/lwan/src/samples/clock/main.c:150,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 122
    functionDepth: 4
    functionLinenumber: 122
    functionLinenumberEnd: 154
    functionName: LWAN_HANDLER
    functionSourceFile: /src/lwan/src/samples/clock/main.c
    functionUses: 0
    functionsReached:
    - xdaliclock_get_frame_time
    - ge_new_gif
    - ge_add_frame
    - xdaliclock_new
    - memset
    - coro_defer
    - lwan_response_send_chunk
    - lwan_request_sleep
    - xdaliclock_update
    linkageType: ''
    returnType: void
    signature: void LWAN_HANDLER(dali)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ge_new_gif
      Src: /src/lwan/src/samples/clock/main.c:158,1
    - Dst: coro_defer
      Src: /src/lwan/src/samples/clock/main.c:167,1
    - Dst: blocks_init
      Src: /src/lwan/src/samples/clock/main.c:169,1
    - Dst: time
      Src: /src/lwan/src/samples/clock/main.c:178,1
    - Dst: strftime
      Src: /src/lwan/src/samples/clock/main.c:182,1
    - Dst: my_localtime
      Src: /src/lwan/src/samples/clock/main.c:182,1
    - Dst: blocks_draw
      Src: /src/lwan/src/samples/clock/main.c:190,1
    - Dst: ge_add_frame
      Src: /src/lwan/src/samples/clock/main.c:193,1
    - Dst: lwan_response_send_chunk
      Src: /src/lwan/src/samples/clock/main.c:194,1
    - Dst: lwan_request_sleep
      Src: /src/lwan/src/samples/clock/main.c:195,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 156
    functionDepth: 4
    functionLinenumber: 156
    functionLinenumberEnd: 199
    functionName: LWAN_HANDLER
    functionSourceFile: /src/lwan/src/samples/clock/main.c
    functionUses: 0
    functionsReached:
    - blocks_draw
    - blocks_init
    - lwan_request_sleep
    - ge_new_gif
    - ge_add_frame
    - strftime
    - my_localtime
    - coro_defer
    - lwan_response_send_chunk
    - time
    linkageType: ''
    returnType: void
    signature: void LWAN_HANDLER(blocks)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ge_new_gif
      Src: /src/lwan/src/samples/clock/main.c:203,1
    - Dst: coro_defer
      Src: /src/lwan/src/samples/clock/main.c:210,1
    - Dst: pong_init
      Src: /src/lwan/src/samples/clock/main.c:212,1
    - Dst: pong_draw
      Src: /src/lwan/src/samples/clock/main.c:220,1
    - Dst: ge_add_frame
      Src: /src/lwan/src/samples/clock/main.c:223,1
    - Dst: lwan_response_send_chunk
      Src: /src/lwan/src/samples/clock/main.c:224,1
    - Dst: lwan_request_sleep
      Src: /src/lwan/src/samples/clock/main.c:225,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 201
    functionDepth: 4
    functionLinenumber: 201
    functionLinenumberEnd: 229
    functionName: LWAN_HANDLER
    functionSourceFile: /src/lwan/src/samples/clock/main.c
    functionUses: 0
    functionsReached:
    - ge_new_gif
    - pong_draw
    - ge_add_frame
    - coro_defer
    - lwan_response_send_chunk
    - lwan_request_sleep
    - pong_init
    linkageType: ''
    returnType: void
    signature: void LWAN_HANDLER(pong)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_tpl_apply_with_buffer
      Src: /src/lwan/src/samples/clock/main.c:318,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 316
    functionDepth: 1
    functionLinenumber: 316
    functionLinenumberEnd: 324
    functionName: LWAN_HANDLER
    functionSourceFile: /src/lwan/src/samples/clock/main.c
    functionUses: 0
    functionsReached:
    - lwan_tpl_apply_with_buffer
    linkageType: ''
    returnType: void
    signature: void LWAN_HANDLER(templated_index)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: realpath
      Src: /src/lwan/src/samples/clock/main.c:330,1
    - Dst: strrchr
      Src: /src/lwan/src/samples/clock/main.c:334,1
    - Dst: strcmp
      Src: /src/lwan/src/samples/clock/main.c:335,1
    - Dst: setenv
      Src: /src/lwan/src/samples/clock/main.c:339,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 341
    functionName: setup_timezone
    functionSourceFile: /src/lwan/src/samples/clock/main.c
    functionUses: 0
    functionsReached:
    - realpath
    - strrchr
    - setenv
    - strcmp
    linkageType: ''
    returnType: void
    signature: void setup_timezone(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWAN_HANDLER_REF
      Src: /src/lwan/src/samples/clock/main.c:368,1
    - Dst: LWAN_HANDLER_REF
      Src: /src/lwan/src/samples/clock/main.c:372,1
    - Dst: LWAN_HANDLER_REF
      Src: /src/lwan/src/samples/clock/main.c:376,1
    - Dst: LWAN_HANDLER_REF
      Src: /src/lwan/src/samples/clock/main.c:380,1
    - Dst: LWAN_HANDLER_REF
      Src: /src/lwan/src/samples/clock/main.c:384,1
    - Dst: LWAN_HANDLER_REF
      Src: /src/lwan/src/samples/clock/main.c:389,1
    - Dst: LWAN_HANDLER_REF
      Src: /src/lwan/src/samples/clock/main.c:394,1
    - Dst: LWAN_HANDLER_REF
      Src: /src/lwan/src/samples/clock/main.c:399,1
    - Dst: REDIRECT
      Src: /src/lwan/src/samples/clock/main.c:404,1
    - Dst: setup_timezone
      Src: /src/lwan/src/samples/clock/main.c:410,1
    - Dst: lwan_init
      Src: /src/lwan/src/samples/clock/main.c:412,1
    - Dst: lwan_set_url_map
      Src: /src/lwan/src/samples/clock/main.c:414,1
    - Dst: lwan_main_loop
      Src: /src/lwan/src/samples/clock/main.c:415,1
    - Dst: lwan_shutdown
      Src: /src/lwan/src/samples/clock/main.c:417,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 343
    functionDepth: 1
    functionLinenumber: 343
    functionLinenumberEnd: 420
    functionName: main
    functionSourceFile: /src/lwan/src/samples/clock/main.c
    functionUses: 3
    functionsReached:
    - lwan_main_loop
    - lwan_shutdown
    - lwan_set_url_map
    - lwan_init
    - setup_timezone
    - REDIRECT
    - LWAN_HANDLER_REF
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rand
      Src: /src/lwan/src/samples/clock/pong.c:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - scale
    argTypes:
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 38
    functionName: rand_double
    functionSourceFile: /src/lwan/src/samples/clock/pong.c
    functionUses: 0
    functionsReached:
    - rand
    linkageType: ''
    returnType: double
    signature: double rand_double(double scale)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/lwan/src/samples/clock/pong.c:42,1
    - Dst: strftime
      Src: /src/lwan/src/samples/clock/pong.c:47,1
    - Dst: my_localtime
      Src: /src/lwan/src/samples/clock/pong.c:47,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - pong_time
    argTypes:
    - struct pong_time*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 57
    functionName: pong_time_update
    functionSourceFile: /src/lwan/src/samples/clock/pong.c
    functionUses: 0
    functionsReached:
    - strftime
    - my_localtime
    - time
    linkageType: ''
    returnType: void
    signature: void pong_time_update(struct pong_time *pong_time)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rand_double
      Src: /src/lwan/src/samples/clock/pong.c:61,1
    - Dst: memcpy
      Src: /src/lwan/src/samples/clock/pong.c:67,1
    - Dst: memcpy
      Src: /src/lwan/src/samples/clock/pong.c:68,1
    - Dst: rand
      Src: /src/lwan/src/samples/clock/pong.c:77,1
    - Dst: pong_time_update
      Src: /src/lwan/src/samples/clock/pong.c:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - pong
    - gif
    - reset
    argTypes:
    - struct pong*
    - ge_GIF*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 59
    functionDepth: 2
    functionLinenumber: 59
    functionLinenumberEnd: 85
    functionName: pong_init_internal
    functionSourceFile: /src/lwan/src/samples/clock/pong.c
    functionUses: 0
    functionsReached:
    - memcpy
    - rand
    - rand_double
    - pong_time_update
    linkageType: ''
    returnType: void
    signature: void pong_init_internal(struct pong *pong, ge_GIF *gif, bool reset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pong_init_internal
      Src: /src/lwan/src/samples/clock/pong.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pong
    - gif
    argTypes:
    - struct pong*
    - ge_GIF*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 3
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: pong_init
    functionSourceFile: /src/lwan/src/samples/clock/pong.c
    functionUses: 1
    functionsReached:
    - pong_init_internal
    linkageType: ''
    returnType: void
    signature: void pong_init(struct pong *pong, ge_GIF *gif)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 4
    argNames:
    - frame
    - x
    - y
    - color
    argTypes:
    - unsigned char*
    - int
    - int
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 96
    functionName: draw_pixel
    functionSourceFile: /src/lwan/src/samples/clock/pong.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void draw_pixel(unsigned char *frame, int x, int y, unsigned char color)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: draw_pixel
      Src: /src/lwan/src/samples/clock/pong.c:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - pong
    argTypes:
    - struct pong*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 102
    functionName: pong_draw_net
    functionSourceFile: /src/lwan/src/samples/clock/pong.c
    functionUses: 0
    functionsReached:
    - draw_pixel
    linkageType: ''
    returnType: void
    signature: void pong_draw_net(const struct pong *pong)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: draw_pixel
      Src: /src/lwan/src/samples/clock/pong.c:108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - pong
    - x
    - y
    argTypes:
    - struct pong*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 110
    functionName: pong_draw_player
    functionSourceFile: /src/lwan/src/samples/clock/pong.c
    functionUses: 0
    functionsReached:
    - draw_pixel
    linkageType: ''
    returnType: void
    signature: void pong_draw_player(const struct pong *pong, int x, int y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: draw_pixel
      Src: /src/lwan/src/samples/clock/pong.c:117,1
    - Dst: draw_pixel
      Src: /src/lwan/src/samples/clock/pong.c:118,1
    - Dst: draw_pixel
      Src: /src/lwan/src/samples/clock/pong.c:119,1
    - Dst: draw_pixel
      Src: /src/lwan/src/samples/clock/pong.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - pong
    argTypes:
    - struct pong*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 121
    functionName: pong_draw_ball
    functionSourceFile: /src/lwan/src/samples/clock/pong.c
    functionUses: 0
    functionsReached:
    - draw_pixel
    linkageType: ''
    returnType: void
    signature: void pong_draw_ball(const struct pong *pong)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - pong
    argTypes:
    - struct pong*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 139
    functionName: pong_draw_time
    functionSourceFile: /src/lwan/src/samples/clock/pong.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void pong_draw_time(const struct pong *pong)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 2
    argNames:
    - pong
    - hit
    argTypes:
    - struct pong*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 161
    functionName: pong_calculate_end_point
    functionSourceFile: /src/lwan/src/samples/clock/pong.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double pong_calculate_end_point(const struct pong *pong, bool hit)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - val
    - min
    - max
    argTypes:
    - double*
    - double
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 170
    functionName: clamp
    functionSourceFile: /src/lwan/src/samples/clock/pong.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void clamp(double *val, double min, double max)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: rand
      Src: /src/lwan/src/samples/clock/pong.c:185,1
    - Dst: rand
      Src: /src/lwan/src/samples/clock/pong.c:186,1
    - Dst: rand_double
      Src: /src/lwan/src/samples/clock/pong.c:193,1
    - Dst: rand_double
      Src: /src/lwan/src/samples/clock/pong.c:195,1
    - Dst: rand_double
      Src: /src/lwan/src/samples/clock/pong.c:203,1
    - Dst: rand_double
      Src: /src/lwan/src/samples/clock/pong.c:205,1
    - Dst: clamp
      Src: /src/lwan/src/samples/clock/pong.c:208,1
    - Dst: clamp
      Src: /src/lwan/src/samples/clock/pong.c:209,1
    - Dst: pong_init_internal
      Src: /src/lwan/src/samples/clock/pong.c:213,1
    - Dst: round
      Src: /src/lwan/src/samples/clock/pong.c:219,1
    - Dst: rand_double
      Src: /src/lwan/src/samples/clock/pong.c:219,1
    - Dst: clamp
      Src: /src/lwan/src/samples/clock/pong.c:221,1
    - Dst: round
      Src: /src/lwan/src/samples/clock/pong.c:222,1
    - Dst: rand_double
      Src: /src/lwan/src/samples/clock/pong.c:222,1
    - Dst: clamp
      Src: /src/lwan/src/samples/clock/pong.c:224,1
    - Dst: round
      Src: /src/lwan/src/samples/clock/pong.c:239,1
    - Dst: pong_time_update
      Src: /src/lwan/src/samples/clock/pong.c:242,1
    - Dst: pong_calculate_end_point
      Src: /src/lwan/src/samples/clock/pong.c:254,1
    - Dst: rand_double
      Src: /src/lwan/src/samples/clock/pong.c:257,1
    - Dst: rand_double
      Src: /src/lwan/src/samples/clock/pong.c:259,1
    - Dst: clamp
      Src: /src/lwan/src/samples/clock/pong.c:262,1
    - Dst: pong_calculate_end_point
      Src: /src/lwan/src/samples/clock/pong.c:265,1
    - Dst: rand_double
      Src: /src/lwan/src/samples/clock/pong.c:268,1
    - Dst: rand_double
      Src: /src/lwan/src/samples/clock/pong.c:270,1
    - Dst: clamp
      Src: /src/lwan/src/samples/clock/pong.c:273,1
    - Dst: clamp
      Src: /src/lwan/src/samples/clock/pong.c:276,1
    - Dst: memset
      Src: /src/lwan/src/samples/clock/pong.c:280,1
    - Dst: pong_draw_net
      Src: /src/lwan/src/samples/clock/pong.c:281,1
    - Dst: pong_draw_time
      Src: /src/lwan/src/samples/clock/pong.c:282,1
    - Dst: pong_draw_player
      Src: /src/lwan/src/samples/clock/pong.c:283,1
    - Dst: pong_draw_player
      Src: /src/lwan/src/samples/clock/pong.c:284,1
    - Dst: pong_draw_ball
      Src: /src/lwan/src/samples/clock/pong.c:285,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 89
    argCount: 1
    argNames:
    - pong
    argTypes:
    - struct pong*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 172
    functionDepth: 3
    functionLinenumber: 172
    functionLinenumberEnd: 288
    functionName: pong_draw
    functionSourceFile: /src/lwan/src/samples/clock/pong.c
    functionUses: 1
    functionsReached:
    - pong_draw_player
    - round
    - pong_draw_ball
    - pong_init_internal
    - rand_double
    - clamp
    - rand
    - memset
    - pong_time_update
    - pong_calculate_end_point
    - pong_draw_time
    - pong_draw_net
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t pong_draw(struct pong *pong)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 33
    functionName: get_raw_numbers
    functionSourceFile: /src/lwan/src/samples/clock/numbers.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct raw_number
    signature: struct raw_number *get_raw_numbers(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/samples/clock/xdaliclock.c:71,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - width
    - height
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 87
    functionName: frame_mk
    functionSourceFile: /src/lwan/src/samples/clock/xdaliclock.c
    functionUses: 0
    functionsReached:
    - malloc
    linkageType: ''
    returnType: struct frame
    signature: struct frame *frame_mk(int width, int height)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - bits
    - x
    - y
    - width
    argTypes:
    - unsigned char*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 92
    functionName: get_bit
    functionSourceFile: /src/lwan/src/samples/clock/xdaliclock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool get_bit(const unsigned char *bits, int x, int y, int width)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: frame_mk
      Src: /src/lwan/src/samples/clock/xdaliclock.c:102,1
    - Dst: get_bit
      Src: /src/lwan/src/samples/clock/xdaliclock.c:120,1
    - Dst: get_bit
      Src: /src/lwan/src/samples/clock/xdaliclock.c:127,1
    - Dst: get_bit
      Src: /src/lwan/src/samples/clock/xdaliclock.c:134,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/samples/clock/xdaliclock.c:135,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 41
    argCount: 3
    argNames:
    - bits
    - width
    - height
    argTypes:
    - unsigned char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 156
    functionName: frame_from_pixmap
    functionSourceFile: /src/lwan/src/samples/clock/xdaliclock.c
    functionUses: 0
    functionsReached:
    - frame_mk
    - lwan_log_critical
    - get_bit
    linkageType: ''
    returnType: struct frame
    signature: 'struct frame *

      frame_from_pixmap(const unsigned char *bits, int width, int height)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - a
    - b
    - anim
    argTypes:
    - POS
    - POS
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 196
    functionName: lerp
    functionSourceFile: /src/lwan/src/samples/clock/xdaliclock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: POS
    signature: POS lerp(POS a, POS b, unsigned int anim)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lerp
      Src: /src/lwan/src/samples/clock/xdaliclock.c:216,1
    - Dst: lerp
      Src: /src/lwan/src/samples/clock/xdaliclock.c:217,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - xdc
    - digit
    - anim
    argTypes:
    - struct xdaliclock*
    - int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 222
    functionName: frame_lerp
    functionSourceFile: /src/lwan/src/samples/clock/xdaliclock.c
    functionUses: 0
    functionsReached:
    - lerp
    linkageType: ''
    returnType: struct frame
    signature: struct frame *frame_lerp(struct xdaliclock *xdc, int digit, unsigned
      int anim)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/clock/xdaliclock.c:233,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/clock/xdaliclock.c:235,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/clock/xdaliclock.c:238,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/clock/xdaliclock.c:240,1
    - Dst: memset
      Src: /src/lwan/src/samples/clock/xdaliclock.c:252,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 6
    argNames:
    - xdc
    - x1
    - x2
    - y
    - screen_width
    - color
    argTypes:
    - struct xdaliclock*
    - int
    - int
    - int
    - int
    - enum paint_color
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 254
    functionName: draw_horizontal_line
    functionSourceFile: /src/lwan/src/samples/clock/xdaliclock.c
    functionUses: 0
    functionsReached:
    - memset
    - UNLIKELY
    linkageType: ''
    returnType: void
    signature: "void draw_horizontal_line(struct xdaliclock *xdc,\n                                 int
      x1,\n                                 int x2,\n                                 int
      y,\n                                 int screen_width,\n                                 enum
      paint_color color)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: draw_horizontal_line
      Src: /src/lwan/src/samples/clock/xdaliclock.c:276,1
    - Dst: draw_horizontal_line
      Src: /src/lwan/src/samples/clock/xdaliclock.c:281,1
    - Dst: draw_horizontal_line
      Src: /src/lwan/src/samples/clock/xdaliclock.c:289,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 3
    argNames:
    - xdc
    - frame
    - x
    argTypes:
    - struct xdaliclock*
    - struct frame*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 292
    functionName: frame_render
    functionSourceFile: /src/lwan/src/samples/clock/xdaliclock.c
    functionUses: 0
    functionsReached:
    - draw_horizontal_line
    linkageType: ''
    returnType: void
    signature: void frame_render(struct xdaliclock *xdc, const struct frame *frame,
      int x)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/lwan/src/samples/clock/xdaliclock.c:297,1
    - Dst: my_localtime
      Src: /src/lwan/src/samples/clock/xdaliclock.c:298,1
    - Dst: memcpy
      Src: /src/lwan/src/samples/clock/xdaliclock.c:300,1
    - Dst: frame_lerp
      Src: /src/lwan/src/samples/clock/xdaliclock.c:316,1
    - Dst: frame_render
      Src: /src/lwan/src/samples/clock/xdaliclock.c:318,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - xdc
    argTypes:
    - struct xdaliclock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 294
    functionDepth: 2
    functionLinenumber: 294
    functionLinenumberEnd: 322
    functionName: xdaliclock_update
    functionSourceFile: /src/lwan/src/samples/clock/xdaliclock.c
    functionUses: 1
    functionsReached:
    - frame_lerp
    - frame_render
    - memcpy
    - my_localtime
    - time
    linkageType: ''
    returnType: void
    signature: void xdaliclock_update(struct xdaliclock *xdc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/samples/clock/xdaliclock.c:326,1
    - Dst: frame_mk
      Src: /src/lwan/src/samples/clock/xdaliclock.c:331,1
    - Dst: frame_mk
      Src: /src/lwan/src/samples/clock/xdaliclock.c:335,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/samples/clock/xdaliclock.c:339,1
    - Dst: free
      Src: /src/lwan/src/samples/clock/xdaliclock.c:349,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 1
    argNames:
    - ge
    argTypes:
    - ge_GIF*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 324
    functionDepth: 1
    functionLinenumber: 324
    functionLinenumberEnd: 351
    functionName: xdaliclock_new
    functionSourceFile: /src/lwan/src/samples/clock/xdaliclock.c
    functionUses: 1
    functionsReached:
    - malloc
    - frame_mk
    - N_ELEMENTS
    - free
    linkageType: ''
    returnType: struct xdaliclock
    signature: struct xdaliclock *xdaliclock_new(ge_GIF *ge)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/lwan/src/samples/clock/xdaliclock.c:358,1
    - Dst: free
      Src: /src/lwan/src/samples/clock/xdaliclock.c:359,1
    - Dst: free
      Src: /src/lwan/src/samples/clock/xdaliclock.c:360,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - xdc
    argTypes:
    - struct xdaliclock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 353
    functionDepth: 0
    functionLinenumber: 353
    functionLinenumberEnd: 361
    functionName: xdaliclock_free
    functionSourceFile: /src/lwan/src/samples/clock/xdaliclock.c
    functionUses: 1
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void xdaliclock_free(struct xdaliclock *xdc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - xdc
    argTypes:
    - struct xdaliclock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 363
    functionDepth: 0
    functionLinenumber: 363
    functionLinenumberEnd: 367
    functionName: xdaliclock_get_frame_time
    functionSourceFile: /src/lwan/src/samples/clock/xdaliclock.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t xdaliclock_get_frame_time(const struct xdaliclock *xdc\n
      \                                  __attribute__((unused)))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 39
    functionName: FONT
    functionSourceFile: /src/lwan/src/samples/clock/numbers.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FONT(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_main
      Src: /src/lwan/src/samples/hello/main.c:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 32
    functionName: main
    functionSourceFile: /src/lwan/src/samples/hello/main.c
    functionUses: 4
    functionsReached:
    - lwan_main
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - o1
    - ','
    - o2
    - ','
    - o3
    - ','
    - o4
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 151
    functionName: ADDRESS
    functionSourceFile: /src/lwan/src/samples/freegeoip/freegeoip.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ADDRESS(o1, o2, o3, o4)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 2
    argNames:
    - net
    - ip
    argTypes:
    - struct ip_net*
    - in_addr_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 196
    functionName: net_contains_ip
    functionSourceFile: /src/lwan/src/samples/freegeoip/freegeoip.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool net_contains_ip(const struct ip_net *net, in_addr_t ip)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:201,1
    - Dst: net_contains_ip
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:202,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ip
    argTypes:
    - in_addr_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 206
    functionName: is_reserved_ip
    functionSourceFile: /src/lwan/src/samples/freegeoip/freegeoip.c
    functionUses: 0
    functionsReached:
    - N_ELEMENTS
    - net_contains_ip
    linkageType: ''
    returnType: bool
    signature: bool is_reserved_ip(in_addr_t ip)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:216,1
    - Dst: free
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:217,1
    - Dst: free
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:218,1
    - Dst: free
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:219,1
    - Dst: free
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:220,1
    - Dst: free
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:221,1
    - Dst: free
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:222,1
    - Dst: free
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:223,1
    - Dst: free
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:224,1
    - Dst: free
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:225,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - entry
    - context
    argTypes:
    - struct cache_entry*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 226
    functionName: destroy_ipinfo
    functionSourceFile: /src/lwan/src/samples/freegeoip/freegeoip.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: "void destroy_ipinfo(struct cache_entry *entry,\n                           void
      *context __attribute__((unused)))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sqlite3_column_text
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:232,1
    - Dst: strdup
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - stmt
    - ind
    argTypes:
    - sqlite3_stmt*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 234
    functionName: text_column_helper
    functionSourceFile: /src/lwan/src/samples/freegeoip/freegeoip.c
    functionUses: 0
    functionsReached:
    - sqlite3_column_text
    - strdup
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE *text_column_helper(sqlite3_stmt *stmt, int ind)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:244,1
    - Dst: inet_aton
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:244,1
    - Dst: is_reserved_ip
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:247,1
    - Dst: calloc
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:248,1
    - Dst: LIKELY
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:249,1
    - Dst: strdup
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:250,1
    - Dst: strdup
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:251,1
    - Dst: strdup
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:252,1
    - Dst: sqlite3_prepare
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:257,1
    - Dst: sqlite3_bind_int64
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:261,1
    - Dst: ntohl
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:261,1
    - Dst: sqlite3_step
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:264,1
    - Dst: malloc
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:267,1
    - Dst: TEXT_COLUMN
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:273,1
    - Dst: TEXT_COLUMN
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:274,1
    - Dst: TEXT_COLUMN
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:275,1
    - Dst: TEXT_COLUMN
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:276,1
    - Dst: TEXT_COLUMN
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:277,1
    - Dst: TEXT_COLUMN
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:278,1
    - Dst: sqlite3_column_double
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:279,1
    - Dst: sqlite3_column_double
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:280,1
    - Dst: TEXT_COLUMN
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:281,1
    - Dst: TEXT_COLUMN
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:282,1
    - Dst: strdup
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:286,1
    - Dst: sqlite3_finalize
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:289,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 44
    argCount: 3
    argNames:
    - key
    - cache_ctx
    - create_ctx
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 236
    functionDepth: 2
    functionLinenumber: 236
    functionLinenumberEnd: 292
    functionName: create_ipinfo
    functionSourceFile: /src/lwan/src/samples/freegeoip/freegeoip.c
    functionUses: 0
    functionsReached:
    - strdup
    - sqlite3_prepare
    - sqlite3_column_double
    - calloc
    - inet_aton
    - sqlite3_step
    - LIKELY
    - sqlite3_finalize
    - TEXT_COLUMN
    - is_reserved_ip
    - sqlite3_bind_int64
    - malloc
    - ntohl
    - UNLIKELY
    linkageType: ''
    returnType: struct cache_entry
    signature: "struct cache_entry *create_ipinfo(const void *key,\n                                         void
      *cache_ctx __attribute__((unused)),\n                                         void
      *create_ctx __attribute__((unused)))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - index
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 272
    functionName: TEXT_COLUMN
    functionSourceFile: /src/lwan/src/samples/freegeoip/freegeoip.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TEXT_COLUMN(index)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:300,1
    - Dst: LIKELY
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:301,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - key
    - cache_ctx
    - create_ctx
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 304
    functionName: create_query_limit
    functionSourceFile: /src/lwan/src/samples/freegeoip/freegeoip.c
    functionUses: 0
    functionsReached:
    - malloc
    - LIKELY
    linkageType: ''
    returnType: struct cache_entry
    signature: "struct cache_entry *\ncreate_query_limit(const void *key __attribute__((unused)),\n
      \                  void *cache_ctx __attribute__((unused)),\n                   void
      *create_ctx __attribute__((unused)))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - entry
    - context
    argTypes:
    - struct cache_entry*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 310
    functionName: destroy_query_limit
    functionSourceFile: /src/lwan/src/samples/freegeoip/freegeoip.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: "void destroy_query_limit(struct cache_entry *entry,\n                                void
      *context __attribute__((unused)))"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:324,1
    - Dst: cache_coro_get_and_ref_entry
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:327,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - request
    - ip_address
    argTypes:
    - struct lwan_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 329
    functionName: internal_query
    functionSourceFile: /src/lwan/src/samples/freegeoip/freegeoip.c
    functionUses: 0
    functionsReached:
    - cache_coro_get_and_ref_entry
    - UNLIKELY
    linkageType: ''
    returnType: struct ip_info
    signature: "struct ip_info *internal_query(struct lwan_request *request,\n                                      const
      char *ip_address)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cache_get_and_ref_entry
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:338,1
    - Dst: ATOMIC_AAF
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:343,1
    - Dst: cache_entry_unref
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:344,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ip_address
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 332
    functionDepth: 1
    functionLinenumber: 332
    functionLinenumberEnd: 347
    functionName: is_rate_limited
    functionSourceFile: /src/lwan/src/samples/freegeoip/freegeoip.c
    functionUses: 0
    functionsReached:
    - ATOMIC_AAF
    - cache_get_and_ref_entry
    - cache_entry_unref
    linkageType: ''
    returnType: bool
    signature: bool is_rate_limited(const char *ip_address)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lwan_request_get_remote_address
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:357,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:358,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:362,1
    - Dst: is_rate_limited
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:362,1
    - Dst: internal_query
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:366,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:367,1
    - Dst: lwan_request_get_query_param
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:370,1
    - Dst: lwan_tpl_apply_with_buffer
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:374,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 350
    functionDepth: 2
    functionLinenumber: 350
    functionLinenumberEnd: 382
    functionName: LWAN_HANDLER
    functionSourceFile: /src/lwan/src/samples/freegeoip/freegeoip.c
    functionUses: 0
    functionsReached:
    - lwan_request_get_remote_address
    - lwan_tpl_apply_with_buffer
    - lwan_request_get_query_param
    - is_rate_limited
    - internal_query
    - UNLIKELY
    linkageType: ''
    returnType: void
    signature: void LWAN_HANDLER(templated_output)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_log_critical
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:391,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - mime_type
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 384
    functionDepth: 1
    functionLinenumber: 384
    functionLinenumberEnd: 396
    functionName: compile_template
    functionSourceFile: /src/lwan/src/samples/freegeoip/freegeoip.c
    functionUses: 0
    functionsReached:
    - lwan_log_critical
    linkageType: ''
    returnType: struct template_mime
    signature: "struct template_mime compile_template(const char *template,\n                                             const
      char *mime_type)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lwan_init
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:402,1
    - Dst: compile_template
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:405,1
    - Dst: compile_template
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:407,1
    - Dst: compile_template
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:409,1
    - Dst: lwan_straitjacket_allow_dir_path_rw
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:411,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:412,1
    - Dst: sqlite3_open_v2
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:415,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:417,1
    - Dst: sqlite3_errmsg
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:417,1
    - Dst: cache_create
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:418,1
    - Dst: sqlite3_exec
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:420,1
    - Dst: sqlite3_exec
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:421,1
    - Dst: sqlite3_exec
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:422,1
    - Dst: lwan_log_info
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:425,1
    - Dst: cache_create
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:428,1
    - Dst: lwan_log_info
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:430,1
    - Dst: LWAN_HANDLER_REF
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:435,1
    - Dst: LWAN_HANDLER_REF
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:438,1
    - Dst: LWAN_HANDLER_REF
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:441,1
    - Dst: SERVE_FILES
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:443,1
    - Dst: lwan_set_url_map
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:447,1
    - Dst: lwan_main_loop
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:448,1
    - Dst: lwan_shutdown
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:449,1
    - Dst: lwan_tpl_free
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:451,1
    - Dst: lwan_tpl_free
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:452,1
    - Dst: lwan_tpl_free
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:453,1
    - Dst: cache_destroy
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:455,1
    - Dst: cache_destroy
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:457,1
    - Dst: sqlite3_close
      Src: /src/lwan/src/samples/freegeoip/freegeoip.c:458,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 398
    functionDepth: 2
    functionLinenumber: 398
    functionLinenumberEnd: 461
    functionName: main
    functionSourceFile: /src/lwan/src/samples/freegeoip/freegeoip.c
    functionUses: 4
    functionsReached:
    - SERVE_FILES
    - lwan_main_loop
    - sqlite3_errmsg
    - lwan_shutdown
    - lwan_log_critical
    - cache_create
    - lwan_set_url_map
    - lwan_straitjacket_allow_dir_path_rw
    - cache_destroy
    - lwan_log_info
    - lwan_init
    - sqlite3_close
    - sqlite3_exec
    - sqlite3_open_v2
    - lwan_tpl_free
    - LWAN_HANDLER_REF
    - compile_template
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_add_overflow
      Src: /src/lwan/src/samples/pastebin/main.c:52,1
    - Dst: malloc
      Src: /src/lwan/src/samples/pastebin/main.c:55,1
    - Dst: memcpy
      Src: /src/lwan/src/samples/pastebin/main.c:58,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - key
    - cache_ctx
    - create_ctx
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 62
    functionName: create_paste
    functionSourceFile: /src/lwan/src/samples/pastebin/main.c
    functionUses: 0
    functionsReached:
    - malloc
    - memcpy
    - __builtin_add_overflow
    linkageType: ''
    returnType: struct cache_entry
    signature: "struct cache_entry *create_paste(const void *key __attribute__((unused)),\n
      \                                       void *cache_ctx __attribute__((unused)),\n
      \                                       void *create_ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/lwan/src/samples/pastebin/main.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - entry
    - context
    argTypes:
    - struct cache_entry*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 68
    functionName: destroy_paste
    functionSourceFile: /src/lwan/src/samples/pastebin/main.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: "void destroy_paste(struct cache_entry *entry,\n                          void
      *context __attribute__((unused)))"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lwan_request_get_request_body
      Src: /src/lwan/src/samples/pastebin/main.c:73,1
    - Dst: lwan_random_uint64
      Src: /src/lwan/src/samples/pastebin/main.c:82,1
    - Dst: cache_coro_get_and_ref_entry_with_ctx
      Src: /src/lwan/src/samples/pastebin/main.c:85,1
    - Dst: cache_entry_is_new
      Src: /src/lwan/src/samples/pastebin/main.c:89,1
    - Dst: lwan_request_get_host
      Src: /src/lwan/src/samples/pastebin/main.c:92,1
    - Dst: lwan_strbuf_printf
      Src: /src/lwan/src/samples/pastebin/main.c:98,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - request
    - response
    argTypes:
    - struct lwan_request*
    - struct lwan_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 106
    functionName: post_paste
    functionSourceFile: /src/lwan/src/samples/pastebin/main.c
    functionUses: 0
    functionsReached:
    - cache_entry_is_new
    - lwan_strbuf_printf
    - lwan_request_get_host
    - lwan_request_get_request_body
    - cache_coro_get_and_ref_entry_with_ctx
    - lwan_random_uint64
    linkageType: ''
    returnType: enum lwan_http_status
    signature: "enum lwan_http_status post_paste(struct lwan_request *request,\n                                        struct
      lwan_response *response)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_request_get_host
      Src: /src/lwan/src/samples/pastebin/main.c:111,1
    - Dst: lwan_strbuf_printf
      Src: /src/lwan/src/samples/pastebin/main.c:118,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - request
    - response
    argTypes:
    - struct lwan_request*
    - struct lwan_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 135
    functionName: doc
    functionSourceFile: /src/lwan/src/samples/pastebin/main.c
    functionUses: 0
    functionsReached:
    - lwan_request_get_host
    - lwan_strbuf_printf
    linkageType: ''
    returnType: enum lwan_http_status
    signature: "enum lwan_http_status doc(struct lwan_request *request,\n                                 struct
      lwan_response *response)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strtoul
      Src: /src/lwan/src/samples/pastebin/main.c:157,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - s
    - out
    argTypes:
    - char*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 171
    functionName: parse_uint32
    functionSourceFile: /src/lwan/src/samples/pastebin/main.c
    functionUses: 0
    functionsReached:
    - strtoul
    linkageType: ''
    returnType: bool
    signature: bool parse_uint32(const char *s, uint32_t *out)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_init
      Src: /src/lwan/src/samples/pastebin/main.c:206,1
    - Dst: lwan_detect_url_map
      Src: /src/lwan/src/samples/pastebin/main.c:208,1
    - Dst: cache_create_full
      Src: /src/lwan/src/samples/pastebin/main.c:210,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/samples/pastebin/main.c:216,1
    - Dst: lwan_main_loop
      Src: /src/lwan/src/samples/pastebin/main.c:218,1
    - Dst: lwan_shutdown
      Src: /src/lwan/src/samples/pastebin/main.c:220,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 223
    functionName: main
    functionSourceFile: /src/lwan/src/samples/pastebin/main.c
    functionUses: 4
    functionsReached:
    - lwan_main_loop
    - cache_create_full
    - lwan_shutdown
    - lwan_log_critical
    - lwan_init
    - lwan_detect_url_map
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_set_static
      Src: /src/lwan/src/samples/hello-no-meta/main.c:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - request
    - response
    - data
    argTypes:
    - struct lwan_request*
    - struct lwan_response*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 37
    functionName: hello_world
    functionSourceFile: /src/lwan/src/samples/hello-no-meta/main.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_set_static
    linkageType: ''
    returnType: enum lwan_http_status
    signature: "enum lwan_http_status hello_world(struct lwan_request *request\n                                         __attribute__((unused)),\n
      \                                        struct lwan_response *response,\n                                         void
      *data __attribute__((unused)))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_init
      Src: /src/lwan/src/samples/hello-no-meta/main.c:47,1
    - Dst: lwan_set_url_map
      Src: /src/lwan/src/samples/hello-no-meta/main.c:49,1
    - Dst: lwan_main_loop
      Src: /src/lwan/src/samples/hello-no-meta/main.c:50,1
    - Dst: lwan_shutdown
      Src: /src/lwan/src/samples/hello-no-meta/main.c:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 55
    functionName: main
    functionSourceFile: /src/lwan/src/samples/hello-no-meta/main.c
    functionUses: 4
    functionsReached:
    - lwan_main_loop
    - lwan_init
    - lwan_set_url_map
    - lwan_shutdown
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_free
      Src: /src/lwan/src/samples/websocket/main.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: free_strbuf
    functionSourceFile: /src/lwan/src/samples/websocket/main.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_free
    linkageType: ''
    returnType: void
    signature: void free_strbuf(void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_pubsub_unsubscribe
      Src: /src/lwan/src/samples/websocket/main.c:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - data1
    - data2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 111
    functionName: unsub_chat
    functionSourceFile: /src/lwan/src/samples/websocket/main.c
    functionUses: 0
    functionsReached:
    - lwan_pubsub_unsubscribe
    linkageType: ''
    returnType: void
    signature: void unsub_chat(void *data1, void *data2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/lwan/src/samples/websocket/main.c:118,1
    - Dst: lwan_pubsub_publish
      Src: /src/lwan/src/samples/websocket/main.c:123,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - data1
    - data2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 124
    functionName: pub_depart_message
    functionSourceFile: /src/lwan/src/samples/websocket/main.c
    functionUses: 0
    functionsReached:
    - snprintf
    - lwan_pubsub_publish
    linkageType: ''
    returnType: void
    signature: void pub_depart_message(void *data1, void *data2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_set_value
      Src: /src/lwan/src/samples/websocket/main.c:162,1
    - Dst: lwan_pubsub_msg_value
      Src: /src/lwan/src/samples/websocket/main.c:163,1
    - Dst: lwan_pubsub_msg_done
      Src: /src/lwan/src/samples/websocket/main.c:168,1
    - Dst: lwan_response_websocket_write_text
      Src: /src/lwan/src/samples/websocket/main.c:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 171
    functionName: LWAN_PUBSUB_FOREACH_MSG
    functionSourceFile: /src/lwan/src/samples/websocket/main.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_set_value
    - lwan_pubsub_msg_done
    - lwan_response_websocket_write_text
    - lwan_pubsub_msg_value
    linkageType: ''
    returnType: void
    signature: void LWAN_PUBSUB_FOREACH_MSG(sub, msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_pubsub_new_topic
      Src: /src/lwan/src/samples/websocket/main.c:211,1
    - Dst: lwan_main
      Src: /src/lwan/src/samples/websocket/main.c:213,1
    - Dst: lwan_pubsub_free_topic
      Src: /src/lwan/src/samples/websocket/main.c:215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 218
    functionName: main
    functionSourceFile: /src/lwan/src/samples/websocket/main.c
    functionUses: 5
    functionsReached:
    - lwan_pubsub_free_topic
    - lwan_pubsub_new_topic
    - lwan_main
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:135,1
    - Dst: qrcodegen_encodeSegmentsAdvanced
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:137,1
    - Dst: qrcodegen_BUFFER_LEN_FOR_VERSION
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:138,1
    - Dst: qrcodegen_isNumeric
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:141,1
    - Dst: qrcodegen_calcSegmentBufferSize
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:142,1
    - Dst: qrcodegen_makeNumeric
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:144,1
    - Dst: qrcodegen_isAlphanumeric
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:145,1
    - Dst: qrcodegen_calcSegmentBufferSize
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:146,1
    - Dst: qrcodegen_makeAlphanumeric
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:148,1
    - Dst: calcSegmentBitLength
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:155,1
    - Dst: qrcodegen_encodeSegmentsAdvanced
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:161,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 8
    argNames:
    - text
    - tempBuffer
    - qrcode
    - ecl
    - minVersion
    - maxVersion
    - mask
    - boostEcl
    argTypes:
    - char*
    - uint8_t[]
    - uint8_t[]
    - enum qrcodegen_Ecc
    - int
    - int
    - enum qrcodegen_Mask
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 166
    functionName: qrcodegen_encodeText
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 0
    functionsReached:
    - qrcodegen_calcSegmentBufferSize
    - qrcodegen_BUFFER_LEN_FOR_VERSION
    - qrcodegen_encodeSegmentsAdvanced
    - calcSegmentBitLength
    - qrcodegen_makeNumeric
    - strlen
    - qrcodegen_isAlphanumeric
    - qrcodegen_makeAlphanumeric
    - qrcodegen_isNumeric
    linkageType: ''
    returnType: bool
    signature: "bool qrcodegen_encodeText(const char *text, uint8_t tempBuffer[],
      uint8_t qrcode[],\n\t\tenum qrcodegen_Ecc ecl, int minVersion, int maxVersion,
      enum qrcodegen_Mask mask, bool boostEcl)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calcSegmentBitLength
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:175,1
    - Dst: qrcodegen_encodeSegmentsAdvanced
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:182,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 8
    argNames:
    - dataAndTemp
    - dataLen
    - qrcode
    - ecl
    - minVersion
    - maxVersion
    - mask
    - boostEcl
    argTypes:
    - uint8_t[]
    - size_t
    - uint8_t[]
    - enum qrcodegen_Ecc
    - int
    - int
    - enum qrcodegen_Mask
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 183
    functionName: qrcodegen_encodeBinary
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 0
    functionsReached:
    - calcSegmentBitLength
    - qrcodegen_encodeSegmentsAdvanced
    linkageType: ''
    returnType: bool
    signature: "bool qrcodegen_encodeBinary(uint8_t dataAndTemp[], size_t dataLen,
      uint8_t qrcode[],\n\t\tenum qrcodegen_Ecc ecl, int minVersion, int maxVersion,
      enum qrcodegen_Mask mask, bool boostEcl)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:189,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 4
    argNames:
    - val
    - numBits
    - buffer
    - bitLen
    argTypes:
    - unsigned int
    - int
    - uint8_t[]
    - int*
    assertStmts:
    - condition: (0 <= numBits && numBits <= 16 && (unsigned long)val >> numBits ==
        0)
      pos:
        line_end: 188
        line_start: 188
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    constantsTouched: []
    func_position:
      end: 192
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 192
    functionName: appendBitsToBuffer
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: testable
    signature: testable appendBitsToBuffer(unsigned int val, int numBits, uint8_t
      buffer[], int *bitLen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: qrcodegen_encodeSegmentsAdvanced
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - segs
    - len
    - ecl
    - tempBuffer
    - qrcode
    argTypes:
    - struct qrcodegen_Segment[]
    - size_t
    - enum qrcodegen_Ecc
    - uint8_t[]
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 203
    functionName: qrcodegen_encodeSegments
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 0
    functionsReached:
    - qrcodegen_encodeSegmentsAdvanced
    linkageType: ''
    returnType: bool
    signature: "bool qrcodegen_encodeSegments(const struct qrcodegen_Segment segs[],
      size_t len,\n\t\tenum qrcodegen_Ecc ecl, uint8_t tempBuffer[], uint8_t qrcode[])"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:209,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:210,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:211,1
    - Dst: getNumDataCodewords
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:216,1
    - Dst: getTotalBits
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:217,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:225,1
    - Dst: getNumDataCodewords
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:229,1
    - Dst: memset
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:234,1
    - Dst: qrcodegen_BUFFER_LEN_FOR_VERSION
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:234,1
    - Dst: appendBitsToBuffer
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:238,1
    - Dst: appendBitsToBuffer
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:239,1
    - Dst: numCharCountBits
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:239,1
    - Dst: appendBitsToBuffer
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:242,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:245,1
    - Dst: getNumDataCodewords
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:248,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:249,1
    - Dst: appendBitsToBuffer
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:253,1
    - Dst: appendBitsToBuffer
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:254,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:255,1
    - Dst: appendBitsToBuffer
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:259,1
    - Dst: addEccAndInterleave
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:262,1
    - Dst: initializeFunctionModules
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:263,1
    - Dst: drawCodewords
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:264,1
    - Dst: getNumRawDataModules
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:264,1
    - Dst: drawLightFunctionModules
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:265,1
    - Dst: initializeFunctionModules
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:266,1
    - Dst: applyMask
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:273,1
    - Dst: drawFormatBits
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:274,1
    - Dst: getPenaltyScore
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:275,1
    - Dst: applyMask
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:280,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:283,1
    - Dst: applyMask
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:284,1
    - Dst: drawFormatBits
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:285,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 55
    argCount: 9
    argNames:
    - segs
    - len
    - ecl
    - minVersion
    - maxVersion
    - mask
    - boostEcl
    - tempBuffer
    - qrcode
    argTypes:
    - struct qrcodegen_Segment[]
    - size_t
    - enum qrcodegen_Ecc
    - int
    - int
    - enum qrcodegen_Mask
    - bool
    - uint8_t[]
    - uint8_t[]
    assertStmts:
    - condition: (segs != NULL || len == 0)
      pos:
        line_end: 208
        line_start: 208
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    - condition: (qrcodegen_VERSION_MIN <= minVersion && minVersion <= maxVersion
        && maxVersion <= qrcodegen_VERSION_MAX)
      pos:
        line_end: 209
        line_start: 209
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    - condition: (0 <= (int)ecl && (int)ecl <= 3 && -1 <= (int)mask && (int)mask <=
        7)
      pos:
        line_end: 210
        line_start: 210
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    - condition: (0 <= (int)mask && (int)mask <= 7)
      pos:
        line_end: 282
        line_start: 282
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    - condition: (bitLen % 8 == 0)
      pos:
        line_end: 254
        line_start: 254
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    - condition: (bitLen == dataUsedBits)
      pos:
        line_end: 244
        line_start: 244
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    - condition: (bitLen <= dataCapacityBits)
      pos:
        line_end: 248
        line_start: 248
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    - condition: (dataUsedBits != LENGTH_OVERFLOW)
      pos:
        line_end: 224
        line_start: 224
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    constantsTouched: []
    func_position:
      end: 287
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 287
    functionName: qrcodegen_encodeSegmentsAdvanced
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 3
    functionsReached:
    - applyMask
    - qrcodegen_BUFFER_LEN_FOR_VERSION
    - addEccAndInterleave
    - getNumDataCodewords
    - getPenaltyScore
    - drawLightFunctionModules
    - memset
    - initializeFunctionModules
    - assert
    - drawCodewords
    - getNumRawDataModules
    - numCharCountBits
    - drawFormatBits
    - appendBitsToBuffer
    - getTotalBits
    linkageType: ''
    returnType: bool
    signature: "bool qrcodegen_encodeSegmentsAdvanced(const struct qrcodegen_Segment
      segs[], size_t len, enum qrcodegen_Ecc ecl,\n\t\tint minVersion, int maxVersion,
      enum qrcodegen_Mask mask, bool boostEcl, uint8_t tempBuffer[], uint8_t qrcode[])"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:299,1
    - Dst: getNumRawDataModules
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:302,1
    - Dst: getNumDataCodewords
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:303,1
    - Dst: reedSolomonComputeDivisor
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:310,1
    - Dst: reedSolomonComputeRemainder
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:315,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 4
    argNames:
    - data
    - version
    - ecl
    - result
    argTypes:
    - uint8_t[]
    - int
    - enum qrcodegen_Ecc
    - uint8_t[]
    assertStmts:
    - condition: (0 <= (int)ecl && (int)ecl < 4 && qrcodegen_VERSION_MIN <= version
        && version <= qrcodegen_VERSION_MAX)
      pos:
        line_end: 298
        line_start: 298
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    constantsTouched: []
    func_position:
      end: 325
      start: 297
    functionDepth: 1
    functionLinenumber: 297
    functionLinenumberEnd: 325
    functionName: addEccAndInterleave
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 1
    functionsReached:
    - reedSolomonComputeRemainder
    - getNumDataCodewords
    - reedSolomonComputeDivisor
    - getNumRawDataModules
    - assert
    linkageType: ''
    returnType: testable
    signature: testable addEccAndInterleave(uint8_t data[], int version, enum qrcodegen_Ecc
      ecl, uint8_t result[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:332,1
    - Dst: getNumRawDataModules
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:333,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - version
    - ecl
    argTypes:
    - int
    - enum qrcodegen_Ecc
    assertStmts:
    - condition: (0 <= e && e < 4)
      pos:
        line_end: 331
        line_start: 331
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    constantsTouched: []
    func_position:
      end: 336
      start: 330
    functionDepth: 1
    functionLinenumber: 330
    functionLinenumberEnd: 336
    functionName: getNumDataCodewords
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 2
    functionsReached:
    - getNumRawDataModules
    - assert
    linkageType: ''
    returnType: testable
    signature: testable getNumDataCodewords(int version, enum qrcodegen_Ecc ecl)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:343,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:351,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - ver
    argTypes:
    - int
    assertStmts:
    - condition: (qrcodegen_VERSION_MIN <= ver && ver <= qrcodegen_VERSION_MAX)
      pos:
        line_end: 342
        line_start: 342
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    - condition: (208 <= result && result <= 29648)
      pos:
        line_end: 350
        line_start: 350
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    constantsTouched: []
    func_position:
      end: 353
      start: 342
    functionDepth: 0
    functionLinenumber: 342
    functionLinenumberEnd: 353
    functionName: getNumRawDataModules
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 3
    functionsReached:
    - assert
    linkageType: ''
    returnType: testable
    signature: testable getNumRawDataModules(int ver)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:362,1
    - Dst: memset
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:365,1
    - Dst: reedSolomonMultiply
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:375,1
    - Dst: reedSolomonMultiply
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:379,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - degree
    - result
    argTypes:
    - int
    - uint8_t[]
    assertStmts:
    - condition: (1 <= degree && degree <= qrcodegen_REED_SOLOMON_DEGREE_MAX)
      pos:
        line_end: 361
        line_start: 361
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    constantsTouched: []
    func_position:
      end: 381
      start: 361
    functionDepth: 1
    functionLinenumber: 361
    functionLinenumberEnd: 381
    functionName: reedSolomonComputeDivisor
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 1
    functionsReached:
    - reedSolomonMultiply
    - memset
    - assert
    linkageType: ''
    returnType: testable
    signature: testable reedSolomonComputeDivisor(int degree, uint8_t result[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:389,1
    - Dst: memset
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:390,1
    - Dst: memmove
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:393,1
    - Dst: reedSolomonMultiply
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:396,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 5
    argNames:
    - data
    - dataLen
    - generator
    - degree
    - result
    argTypes:
    - uint8_t[]
    - int
    - uint8_t[]
    - int
    - uint8_t[]
    assertStmts:
    - condition: (1 <= degree && degree <= qrcodegen_REED_SOLOMON_DEGREE_MAX)
      pos:
        line_end: 388
        line_start: 388
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    constantsTouched: []
    func_position:
      end: 398
      start: 387
    functionDepth: 1
    functionLinenumber: 387
    functionLinenumberEnd: 398
    functionName: reedSolomonComputeRemainder
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 1
    functionsReached:
    - reedSolomonMultiply
    - memset
    - assert
    - memmove
    linkageType: ''
    returnType: testable
    signature: "testable reedSolomonComputeRemainder(const uint8_t data[], int dataLen,\n\t\tconst
      uint8_t generator[], int degree, uint8_t result[])"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - x
    - y
    argTypes:
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 405
    functionDepth: 0
    functionLinenumber: 405
    functionLinenumberEnd: 413
    functionName: reedSolomonMultiply
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: testable
    signature: testable reedSolomonMultiply(uint8_t x, uint8_t y)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:424,1
    - Dst: fillRectangle
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:428,1
    - Dst: fillRectangle
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:429,1
    - Dst: fillRectangle
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:432,1
    - Dst: fillRectangle
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:433,1
    - Dst: fillRectangle
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:434,1
    - Dst: getAlignmentPatternPositions
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:438,1
    - Dst: fillRectangle
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:443,1
    - Dst: fillRectangle
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:449,1
    - Dst: fillRectangle
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:450,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 2
    argNames:
    - version
    - qrcode
    argTypes:
    - int
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 421
    functionDepth: 1
    functionLinenumber: 421
    functionLinenumberEnd: 452
    functionName: initializeFunctionModules
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 1
    functionsReached:
    - getAlignmentPatternPositions
    - fillRectangle
    - memset
    linkageType: ''
    returnType: testable
    signature: testable initializeFunctionModules(int version, uint8_t qrcode[])
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: qrcodegen_getSize
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:460,1
    - Dst: setModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:462,1
    - Dst: setModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:463,1
    - Dst: abs
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:469,1
    - Dst: abs
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:470,1
    - Dst: abs
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:471,1
    - Dst: setModuleUnbounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:473,1
    - Dst: setModuleUnbounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:474,1
    - Dst: setModuleUnbounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:475,1
    - Dst: getAlignmentPatternPositions
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:482,1
    - Dst: setModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:489,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:501,1
    - Dst: setModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:507,1
    - Dst: setModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:508,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 38
    argCount: 2
    argNames:
    - qrcode
    - version
    argTypes:
    - uint8_t[]
    - int
    assertStmts:
    - condition: (bits >> 18 == 0)
      pos:
        line_end: 500
        line_start: 500
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    constantsTouched: []
    func_position:
      end: 513
      start: 458
    functionDepth: 1
    functionLinenumber: 458
    functionLinenumberEnd: 513
    functionName: drawLightFunctionModules
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 1
    functionsReached:
    - setModuleUnbounded
    - getAlignmentPatternPositions
    - assert
    - abs
    - qrcodegen_getSize
    - setModuleBounded
    linkageType: ''
    returnType: void
    signature: void drawLightFunctionModules(uint8_t qrcode[], int version)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:521,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:528,1
    - Dst: setModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:532,1
    - Dst: getBit
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:532,1
    - Dst: setModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:533,1
    - Dst: getBit
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:533,1
    - Dst: setModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:534,1
    - Dst: getBit
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:534,1
    - Dst: setModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:535,1
    - Dst: getBit
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:535,1
    - Dst: setModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:537,1
    - Dst: getBit
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:537,1
    - Dst: qrcodegen_getSize
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:540,1
    - Dst: setModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:542,1
    - Dst: getBit
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:542,1
    - Dst: setModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:544,1
    - Dst: getBit
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:544,1
    - Dst: setModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:545,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - ecl
    - mask
    - qrcode
    argTypes:
    - enum qrcodegen_Ecc
    - enum qrcodegen_Mask
    - uint8_t[]
    assertStmts:
    - condition: (0 <= (int)mask && (int)mask <= 7)
      pos:
        line_end: 520
        line_start: 520
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    - condition: (bits >> 15 == 0)
      pos:
        line_end: 527
        line_start: 527
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    constantsTouched: []
    func_position:
      end: 546
      start: 519
    functionDepth: 1
    functionLinenumber: 519
    functionLinenumberEnd: 546
    functionName: drawFormatBits
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 1
    functionsReached:
    - qrcodegen_getSize
    - getBit
    - assert
    - setModuleBounded
    linkageType: ''
    returnType: void
    signature: void drawFormatBits(enum qrcodegen_Ecc ecl, enum qrcodegen_Mask mask,
      uint8_t qrcode[])
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - version
    - result
    argTypes:
    - int
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 553
    functionDepth: 0
    functionLinenumber: 553
    functionLinenumberEnd: 563
    functionName: getAlignmentPatternPositions
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: testable
    signature: testable getAlignmentPatternPositions(int version, uint8_t result[7])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:570,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 5
    argNames:
    - left
    - top
    - width
    - height
    - qrcode
    argTypes:
    - int
    - int
    - int
    - int
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 567
    functionDepth: 1
    functionLinenumber: 567
    functionLinenumberEnd: 572
    functionName: fillRectangle
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 1
    functionsReached:
    - setModuleBounded
    linkageType: ''
    returnType: void
    signature: void fillRectangle(int left, int top, int width, int height, uint8_t
      qrcode[])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: qrcodegen_getSize
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:581,1
    - Dst: getModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:592,1
    - Dst: getBit
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:593,1
    - Dst: setModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:594,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:602,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 3
    argNames:
    - data
    - dataLen
    - qrcode
    argTypes:
    - uint8_t[]
    - int
    - uint8_t[]
    assertStmts:
    - condition: (i == dataLen * 8)
      pos:
        line_end: 601
        line_start: 601
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    constantsTouched: []
    func_position:
      end: 603
      start: 580
    functionDepth: 1
    functionLinenumber: 580
    functionLinenumberEnd: 603
    functionName: drawCodewords
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 1
    functionsReached:
    - getModuleBounded
    - getBit
    - assert
    - qrcodegen_getSize
    - setModuleBounded
    linkageType: ''
    returnType: void
    signature: void drawCodewords(const uint8_t data[], int dataLen, uint8_t qrcode[])
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:612,1
    - Dst: qrcodegen_getSize
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:613,1
    - Dst: getModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:616,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:628,1
    - Dst: getModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:630,1
    - Dst: setModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:631,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 38
    argCount: 3
    argNames:
    - functionModules
    - qrcode
    - mask
    argTypes:
    - uint8_t[]
    - uint8_t[]
    - enum qrcodegen_Mask
    assertStmts:
    - condition: (0 <= (int)mask && (int)mask <= 7)
      pos:
        line_end: 611
        line_start: 611
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    - condition: (false)
      pos:
        line_end: 627
        line_start: 627
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    constantsTouched: []
    func_position:
      end: 634
      start: 611
    functionDepth: 1
    functionLinenumber: 611
    functionLinenumberEnd: 634
    functionName: applyMask
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 1
    functionsReached:
    - setModuleBounded
    - getModuleBounded
    - assert
    - qrcodegen_getSize
    linkageType: ''
    returnType: void
    signature: void applyMask(const uint8_t functionModules[], uint8_t qrcode[], enum
      qrcodegen_Mask mask)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: qrcodegen_getSize
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:640,1
    - Dst: getModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:649,1
    - Dst: finderPenaltyAddHistory
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:656,1
    - Dst: finderPenaltyCountPatterns
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:658,1
    - Dst: getModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:659,1
    - Dst: finderPenaltyTerminateAndCount
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:663,1
    - Dst: getModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:671,1
    - Dst: finderPenaltyAddHistory
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:678,1
    - Dst: finderPenaltyCountPatterns
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:680,1
    - Dst: getModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:681,1
    - Dst: finderPenaltyTerminateAndCount
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:685,1
    - Dst: getModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:691,1
    - Dst: getModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:692,1
    - Dst: getModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:693,1
    - Dst: getModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:694,1
    - Dst: getModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:703,1
    - Dst: labs
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:709,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:710,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:712,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 53
    argCount: 1
    argNames:
    - qrcode
    argTypes:
    - uint8_t[]
    assertStmts:
    - condition: (0 <= k && k <= 9)
      pos:
        line_end: 709
        line_start: 709
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    - condition: (0 <= result && result <= 2568888L)
      pos:
        line_end: 711
        line_start: 711
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    constantsTouched: []
    func_position:
      end: 714
      start: 639
    functionDepth: 1
    functionLinenumber: 639
    functionLinenumberEnd: 714
    functionName: getPenaltyScore
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 1
    functionsReached:
    - getModuleBounded
    - finderPenaltyAddHistory
    - finderPenaltyTerminateAndCount
    - labs
    - assert
    - qrcodegen_getSize
    - finderPenaltyCountPatterns
    linkageType: ''
    returnType: long
    signature: long getPenaltyScore(const uint8_t qrcode[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:721,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 4
    argCount: 2
    argNames:
    - runHistory
    - qrsize
    argTypes:
    - int[]
    - int
    assertStmts:
    - condition: (n <= qrsize * 3)
      pos:
        line_end: 720
        line_start: 720
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    constantsTouched: []
    func_position:
      end: 727
      start: 719
    functionDepth: 0
    functionLinenumber: 719
    functionLinenumberEnd: 727
    functionName: finderPenaltyCountPatterns
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 1
    functionsReached:
    - assert
    linkageType: ''
    returnType: int
    signature: int finderPenaltyCountPatterns(const int runHistory[7], int qrsize)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: finderPenaltyAddHistory
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:733,1
    - Dst: finderPenaltyAddHistory
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:737,1
    - Dst: finderPenaltyCountPatterns
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:738,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - currentRunColor
    - currentRunLength
    - runHistory
    - qrsize
    argTypes:
    - bool
    - int
    - int[]
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 731
    functionDepth: 1
    functionLinenumber: 731
    functionLinenumberEnd: 739
    functionName: finderPenaltyTerminateAndCount
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 1
    functionsReached:
    - finderPenaltyCountPatterns
    - finderPenaltyAddHistory
    linkageType: ''
    returnType: int
    signature: int finderPenaltyTerminateAndCount(bool currentRunColor, int currentRunLength,
      int runHistory[7], int qrsize)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:746,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - currentRunLength
    - runHistory
    - qrsize
    argTypes:
    - int
    - int[]
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 743
    functionDepth: 0
    functionLinenumber: 743
    functionLinenumberEnd: 748
    functionName: finderPenaltyAddHistory
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 2
    functionsReached:
    - memmove
    linkageType: ''
    returnType: void
    signature: void finderPenaltyAddHistory(int currentRunLength, int runHistory[7],
      int qrsize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:756,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:758,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - qrcode
    argTypes:
    - uint8_t[]
    assertStmts:
    - condition: (qrcode != NULL)
      pos:
        line_end: 755
        line_start: 755
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    - condition: "((qrcodegen_VERSION_MIN * 4 + 17) <= result\n\t\t&& result <= (qrcodegen_VERSION_MAX
        * 4 + 17))"
      pos:
        line_end: 758
        line_start: 757
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    constantsTouched: []
    func_position:
      end: 761
      start: 755
    functionDepth: 0
    functionLinenumber: 755
    functionLinenumberEnd: 761
    functionName: qrcodegen_getSize
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 5
    functionsReached:
    - assert
    linkageType: ''
    returnType: int
    signature: int qrcodegen_getSize(const uint8_t qrcode[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:766,1
    - Dst: getModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:768,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    argCount: 3
    argNames:
    - qrcode
    - x
    - y
    argTypes:
    - uint8_t[]
    - int
    - int
    assertStmts:
    - condition: (qrcode != NULL)
      pos:
        line_end: 765
        line_start: 765
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    constantsTouched: []
    func_position:
      end: 769
      start: 765
    functionDepth: 1
    functionLinenumber: 765
    functionLinenumberEnd: 769
    functionName: qrcodegen_getModule
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 0
    functionsReached:
    - getModuleBounded
    - assert
    linkageType: ''
    returnType: bool
    signature: bool qrcodegen_getModule(const uint8_t qrcode[], int x, int y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:775,1
    - Dst: getBit
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:777,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 3
    argCount: 3
    argNames:
    - qrcode
    - x
    - y
    argTypes:
    - uint8_t[]
    - int
    - int
    assertStmts:
    - condition: (21 <= qrsize && qrsize <= 177 && 0 <= x && x < qrsize && 0 <= y
        && y < qrsize)
      pos:
        line_end: 774
        line_start: 774
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    constantsTouched: []
    func_position:
      end: 778
      start: 773
    functionDepth: 1
    functionLinenumber: 773
    functionLinenumberEnd: 778
    functionName: getModuleBounded
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 4
    functionsReached:
    - getBit
    - assert
    linkageType: ''
    returnType: testable
    signature: testable getModuleBounded(const uint8_t qrcode[], int x, int y)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:784,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 5
    argCount: 4
    argNames:
    - qrcode
    - x
    - y
    - isDark
    argTypes:
    - uint8_t[]
    - int
    - int
    - bool
    assertStmts:
    - condition: (21 <= qrsize && qrsize <= 177 && 0 <= x && x < qrsize && 0 <= y
        && y < qrsize)
      pos:
        line_end: 783
        line_start: 783
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    constantsTouched: []
    func_position:
      end: 792
      start: 782
    functionDepth: 0
    functionLinenumber: 782
    functionLinenumberEnd: 792
    functionName: setModuleBounded
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 5
    functionsReached:
    - assert
    linkageType: ''
    returnType: testable
    signature: testable setModuleBounded(uint8_t qrcode[], int x, int y, bool isDark)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: setModuleBounded
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:799,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 3
    argCount: 4
    argNames:
    - qrcode
    - x
    - y
    - isDark
    argTypes:
    - uint8_t[]
    - int
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 796
    functionDepth: 1
    functionLinenumber: 796
    functionLinenumberEnd: 800
    functionName: setModuleUnbounded
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 1
    functionsReached:
    - setModuleBounded
    linkageType: ''
    returnType: testable
    signature: testable setModuleUnbounded(uint8_t qrcode[], int x, int y, bool isDark)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - x
    - i
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 804
    functionDepth: 0
    functionLinenumber: 804
    functionLinenumberEnd: 806
    functionName: getBit
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool getBit(int x, int i)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:814,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - text
    argTypes:
    - char*
    assertStmts:
    - condition: (text != NULL)
      pos:
        line_end: 813
        line_start: 813
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    constantsTouched: []
    func_position:
      end: 820
      start: 813
    functionDepth: 0
    functionLinenumber: 813
    functionLinenumberEnd: 820
    functionName: qrcodegen_isNumeric
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 1
    functionsReached:
    - assert
    linkageType: ''
    returnType: bool
    signature: bool qrcodegen_isNumeric(const char *text)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:825,1
    - Dst: strchr
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:827,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - text
    argTypes:
    - char*
    assertStmts:
    - condition: (text != NULL)
      pos:
        line_end: 824
        line_start: 824
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    constantsTouched: []
    func_position:
      end: 831
      start: 824
    functionDepth: 0
    functionLinenumber: 824
    functionLinenumberEnd: 831
    functionName: qrcodegen_isAlphanumeric
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 1
    functionsReached:
    - strchr
    - assert
    linkageType: ''
    returnType: bool
    signature: bool qrcodegen_isAlphanumeric(const char *text)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calcSegmentBitLength
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:836,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:839,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - mode
    - numChars
    argTypes:
    - enum qrcodegen_Mode
    - size_t
    assertStmts:
    - condition: (0 <= temp && temp <= INT16_MAX)
      pos:
        line_end: 838
        line_start: 838
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    constantsTouched: []
    func_position:
      end: 841
      start: 835
    functionDepth: 1
    functionLinenumber: 835
    functionLinenumberEnd: 841
    functionName: qrcodegen_calcSegmentBufferSize
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 1
    functionsReached:
    - calcSegmentBitLength
    - assert
    linkageType: ''
    returnType: size_t
    signature: size_t qrcodegen_calcSegmentBufferSize(enum qrcodegen_Mode mode, size_t
      numChars)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:868,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:871,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 2
    argNames:
    - mode
    - numChars
    argTypes:
    - enum qrcodegen_Mode
    - size_t
    assertStmts:
    - condition: (false)
      pos:
        line_end: 867
        line_start: 867
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    - condition: (result >= 0)
      pos:
        line_end: 870
        line_start: 870
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    constantsTouched: []
    func_position:
      end: 875
      start: 852
    functionDepth: 0
    functionLinenumber: 852
    functionLinenumberEnd: 875
    functionName: calcSegmentBitLength
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 3
    functionsReached:
    - assert
    linkageType: ''
    returnType: testable
    signature: testable calcSegmentBitLength(enum qrcodegen_Mode mode, size_t numChars)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:880,1
    - Dst: calcSegmentBitLength
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:883,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:884,1
    - Dst: memcpy
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:887,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - data
    - len
    - buf
    argTypes:
    - uint8_t[]
    - size_t
    - uint8_t[]
    assertStmts:
    - condition: (data != NULL || len == 0)
      pos:
        line_end: 879
        line_start: 879
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    - condition: (result.bitLength != LENGTH_OVERFLOW)
      pos:
        line_end: 883
        line_start: 883
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    constantsTouched: []
    func_position:
      end: 890
      start: 879
    functionDepth: 1
    functionLinenumber: 879
    functionLinenumberEnd: 890
    functionName: qrcodegen_makeBytes
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 0
    functionsReached:
    - memcpy
    - assert
    - calcSegmentBitLength
    linkageType: ''
    returnType: struct qrcodegen_Segment
    signature: struct qrcodegen_Segment qrcodegen_makeBytes(const uint8_t data[],
      size_t len, uint8_t buf[])
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:895,1
    - Dst: strlen
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:897,1
    - Dst: calcSegmentBitLength
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:899,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:900,1
    - Dst: memset
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:903,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:910,1
    - Dst: appendBitsToBuffer
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:914,1
    - Dst: appendBitsToBuffer
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:920,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:921,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - digits
    - buf
    argTypes:
    - char*
    - uint8_t[]
    assertStmts:
    - condition: (digits != NULL)
      pos:
        line_end: 894
        line_start: 894
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    - condition: (bitLen != LENGTH_OVERFLOW)
      pos:
        line_end: 899
        line_start: 899
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    - condition: ('0' <= c && c <= '9')
      pos:
        line_end: 909
        line_start: 909
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    - condition: (result.bitLength == bitLen)
      pos:
        line_end: 920
        line_start: 920
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    constantsTouched: []
    func_position:
      end: 924
      start: 894
    functionDepth: 1
    functionLinenumber: 894
    functionLinenumberEnd: 924
    functionName: qrcodegen_makeNumeric
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 1
    functionsReached:
    - calcSegmentBitLength
    - memset
    - strlen
    - assert
    - appendBitsToBuffer
    linkageType: ''
    returnType: struct qrcodegen_Segment
    signature: struct qrcodegen_Segment qrcodegen_makeNumeric(const char *digits,
      uint8_t buf[])
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:929,1
    - Dst: strlen
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:931,1
    - Dst: calcSegmentBitLength
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:933,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:934,1
    - Dst: memset
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:937,1
    - Dst: strchr
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:943,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:944,1
    - Dst: appendBitsToBuffer
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:948,1
    - Dst: appendBitsToBuffer
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:954,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:955,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - text
    - buf
    argTypes:
    - char*
    - uint8_t[]
    assertStmts:
    - condition: (text != NULL)
      pos:
        line_end: 928
        line_start: 928
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    - condition: (bitLen != LENGTH_OVERFLOW)
      pos:
        line_end: 933
        line_start: 933
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    - condition: (temp != NULL)
      pos:
        line_end: 943
        line_start: 943
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    - condition: (result.bitLength == bitLen)
      pos:
        line_end: 954
        line_start: 954
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    constantsTouched: []
    func_position:
      end: 958
      start: 928
    functionDepth: 1
    functionLinenumber: 928
    functionLinenumberEnd: 958
    functionName: qrcodegen_makeAlphanumeric
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 1
    functionsReached:
    - strchr
    - calcSegmentBitLength
    - memset
    - strlen
    - assert
    - appendBitsToBuffer
    linkageType: ''
    returnType: struct qrcodegen_Segment
    signature: struct qrcodegen_Segment qrcodegen_makeAlphanumeric(const char *text,
      uint8_t buf[])
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:968,1
    - Dst: memset
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:970,1
    - Dst: appendBitsToBuffer
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:971,1
    - Dst: memset
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:973,1
    - Dst: appendBitsToBuffer
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:974,1
    - Dst: appendBitsToBuffer
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:975,1
    - Dst: memset
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:977,1
    - Dst: appendBitsToBuffer
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:978,1
    - Dst: appendBitsToBuffer
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:979,1
    - Dst: appendBitsToBuffer
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:980,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:982,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 2
    argNames:
    - assignVal
    - buf
    argTypes:
    - long
    - uint8_t[]
    assertStmts:
    - condition: (false)
      pos:
        line_end: 967
        line_start: 967
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    - condition: (false)
      pos:
        line_end: 981
        line_start: 981
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    constantsTouched: []
    func_position:
      end: 985
      start: 962
    functionDepth: 1
    functionLinenumber: 962
    functionLinenumberEnd: 985
    functionName: qrcodegen_makeEci
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 0
    functionsReached:
    - memset
    - appendBitsToBuffer
    - assert
    linkageType: ''
    returnType: struct qrcodegen_Segment
    signature: struct qrcodegen_Segment qrcodegen_makeEci(long assignVal, uint8_t
      buf[])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:992,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:997,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:998,1
    - Dst: numCharCountBits
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:999,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:1000,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:1007,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 3
    argNames:
    - segs
    - len
    - version
    argTypes:
    - struct qrcodegen_Segment[]
    - size_t
    - int
    assertStmts:
    - condition: (segs != NULL || len == 0)
      pos:
        line_end: 991
        line_start: 991
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    - condition: (0 <= bitLength && bitLength <= INT16_MAX)
      pos:
        line_end: 997
        line_start: 997
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    - condition: (0 <= numChars  && numChars  <= INT16_MAX)
      pos:
        line_end: 996
        line_start: 996
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    - condition: (0 <= ccbits && ccbits <= 16)
      pos:
        line_end: 999
        line_start: 999
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    - condition: (0 <= result && result <= INT16_MAX)
      pos:
        line_end: 1006
        line_start: 1006
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    constantsTouched: []
    func_position:
      end: 1009
      start: 991
    functionDepth: 1
    functionLinenumber: 991
    functionLinenumberEnd: 1009
    functionName: getTotalBits
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 1
    functionsReached:
    - numCharCountBits
    - assert
    linkageType: ''
    returnType: testable
    signature: testable getTotalBits(const struct qrcodegen_Segment segs[], size_t
      len, int version)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:1015,1
    - Dst: assert
      Src: /src/lwan/src/samples/smolsite/qrcodegen.c:1023,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 2
    argNames:
    - mode
    - version
    argTypes:
    - enum qrcodegen_Mode
    - int
    assertStmts:
    - condition: (qrcodegen_VERSION_MIN <= version && version <= qrcodegen_VERSION_MAX)
      pos:
        line_end: 1014
        line_start: 1014
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    - condition: (false)
      pos:
        line_end: 1022
        line_start: 1022
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
    constantsTouched: []
    func_position:
      end: 1025
      start: 1014
    functionDepth: 0
    functionLinenumber: 1014
    functionLinenumberEnd: 1025
    functionName: numCharCountBits
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.c
    functionUses: 2
    functionsReached:
    - assert
    linkageType: ''
    returnType: int
    signature: int numCharCountBits(enum qrcodegen_Mode mode, int version)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha1_init
      Src: /src/lwan/src/samples/smolsite/main.c:85,1
    - Dst: sha1_update
      Src: /src/lwan/src/samples/smolsite/main.c:86,1
    - Dst: sha1_finalize
      Src: /src/lwan/src/samples/smolsite/main.c:87,1
    - Dst: snprintf
      Src: /src/lwan/src/samples/smolsite/main.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - value
    - digest_str
    argTypes:
    - struct lwan_value
    - char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 96
    functionName: calc_hash
    functionSourceFile: /src/lwan/src/samples/smolsite/main.c
    functionUses: 0
    functionsReached:
    - snprintf
    - sha1_init
    - sha1_update
    - sha1_finalize
    linkageType: ''
    returnType: void
    signature: "void calc_hash(struct lwan_value value,\n                      char
      digest_str[static 41])"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: JZFile*::tell
      Src: /src/lwan/src/samples/smolsite/main.c:104,1
    - Dst: JZFile*::seek
      Src: /src/lwan/src/samples/smolsite/main.c:106,1
    - Dst: jzReadLocalFileHeader
      Src: /src/lwan/src/samples/smolsite/main.c:110,1
    - Dst: __builtin_add_overflow
      Src: /src/lwan/src/samples/smolsite/main.c:112,1
    - Dst: JZFile*::tell
      Src: /src/lwan/src/samples/smolsite/main.c:112,1
    - Dst: __builtin_add_overflow
      Src: /src/lwan/src/samples/smolsite/main.c:120,1
    - Dst: malloc
      Src: /src/lwan/src/samples/smolsite/main.c:125,1
    - Dst: lwan_determine_mime_type_for_file_name
      Src: /src/lwan/src/samples/smolsite/main.c:132,1
    - Dst: strdup
      Src: /src/lwan/src/samples/smolsite/main.c:134,1
    - Dst: hash_add_unique
      Src: /src/lwan/src/samples/smolsite/main.c:136,1
    - Dst: JZFile*::seek
      Src: /src/lwan/src/samples/smolsite/main.c:137,1
    - Dst: free
      Src: /src/lwan/src/samples/smolsite/main.c:142,1
    - Dst: free
      Src: /src/lwan/src/samples/smolsite/main.c:143,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 5
    argNames:
    - zip
    - idx
    - header
    - filename
    - user_data
    argTypes:
    - JZFile*
    - int
    - JZFileHeader*
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 145
    functionName: file_cb
    functionSourceFile: /src/lwan/src/samples/smolsite/main.c
    functionUses: 0
    functionsReached:
    - lwan_determine_mime_type_for_file_name
    - strdup
    - free
    - JZFile*::seek
    - JZFile*::tell
    - __builtin_add_overflow
    - malloc
    - hash_add_unique
    - jzReadLocalFileHeader
    linkageType: ''
    returnType: int
    signature: "int file_cb(\n    JZFile *zip, int idx, JZFileHeader *header, char
      *filename, void *user_data)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_init
      Src: /src/lwan/src/samples/smolsite/main.c:154,1
    - Dst: asprintf
      Src: /src/lwan/src/samples/smolsite/main.c:157,1
    - Dst: qrcodegen_encodeText
      Src: /src/lwan/src/samples/smolsite/main.c:160,1
    - Dst: free
      Src: /src/lwan/src/samples/smolsite/main.c:163,1
    - Dst: qrcodegen_getSize
      Src: /src/lwan/src/samples/smolsite/main.c:167,1
    - Dst: ge_new_gif
      Src: /src/lwan/src/samples/smolsite/main.c:172,1
    - Dst: lwan_strbuf_free
      Src: /src/lwan/src/samples/smolsite/main.c:174,1
    - Dst: qrcodegen_getModule
      Src: /src/lwan/src/samples/smolsite/main.c:180,1
    - Dst: ge_add_frame
      Src: /src/lwan/src/samples/smolsite/main.c:183,1
    - Dst: ge_close_gif
      Src: /src/lwan/src/samples/smolsite/main.c:184,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - b64
    - output
    argTypes:
    - char*
    - struct lwan_strbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 147
    functionDepth: 4
    functionLinenumber: 147
    functionLinenumberEnd: 187
    functionName: generate_qr_code_gif
    functionSourceFile: /src/lwan/src/samples/smolsite/main.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_free
    - lwan_strbuf_init
    - free
    - ge_new_gif
    - qrcodegen_getModule
    - qrcodegen_encodeText
    - ge_add_frame
    - ge_close_gif
    - asprintf
    - qrcodegen_getSize
    linkageType: ''
    returnType: bool
    signature: bool generate_qr_code_gif(const char *b64, struct lwan_strbuf *output)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/smolsite/main.c:200,1
    - Dst: base64_validate
      Src: /src/lwan/src/samples/smolsite/main.c:200,1
    - Dst: base64_decode
      Src: /src/lwan/src/samples/smolsite/main.c:205,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/samples/smolsite/main.c:207,1
    - Dst: malloc
      Src: /src/lwan/src/samples/smolsite/main.c:210,1
    - Dst: generate_qr_code_gif
      Src: /src/lwan/src/samples/smolsite/main.c:215,1
    - Dst: fmemopen
      Src: /src/lwan/src/samples/smolsite/main.c:221,1
    - Dst: jzfile_from_stdio_file
      Src: /src/lwan/src/samples/smolsite/main.c:225,1
    - Dst: fclose
      Src: /src/lwan/src/samples/smolsite/main.c:227,1
    - Dst: jzReadEndRecord
      Src: /src/lwan/src/samples/smolsite/main.c:232,1
    - Dst: hash_str_new
      Src: /src/lwan/src/samples/smolsite/main.c:235,1
    - Dst: jzReadCentralDirectory
      Src: /src/lwan/src/samples/smolsite/main.c:239,1
    - Dst: jzfile_free
      Src: /src/lwan/src/samples/smolsite/main.c:242,1
    - Dst: hash_unref
      Src: /src/lwan/src/samples/smolsite/main.c:247,1
    - Dst: jzfile_free
      Src: /src/lwan/src/samples/smolsite/main.c:250,1
    - Dst: free
      Src: /src/lwan/src/samples/smolsite/main.c:252,1
    - Dst: free
      Src: /src/lwan/src/samples/smolsite/main.c:254,1
    - Dst: lwan_strbuf_free
      Src: /src/lwan/src/samples/smolsite/main.c:255,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 51
    argCount: 3
    argNames:
    - key
    - context
    - create_ctx
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 189
    functionDepth: 5
    functionLinenumber: 189
    functionLinenumberEnd: 257
    functionName: create_site
    functionSourceFile: /src/lwan/src/samples/smolsite/main.c
    functionUses: 0
    functionsReached:
    - malloc
    - fclose
    - lwan_strbuf_free
    - hash_unref
    - free
    - jzfile_free
    - base64_validate
    - fmemopen
    - jzReadCentralDirectory
    - generate_qr_code_gif
    - jzReadEndRecord
    - base64_decode
    - hash_str_new
    - UNLIKELY
    - jzfile_from_stdio_file
    linkageType: ''
    returnType: struct cache_entry
    signature: 'struct cache_entry *

      create_site(const void *key, void *context, void *create_ctx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_free
      Src: /src/lwan/src/samples/smolsite/main.c:262,1
    - Dst: hash_unref
      Src: /src/lwan/src/samples/smolsite/main.c:263,1
    - Dst: free
      Src: /src/lwan/src/samples/smolsite/main.c:264,1
    - Dst: free
      Src: /src/lwan/src/samples/smolsite/main.c:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - entry
    - context
    argTypes:
    - struct cache_entry*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 266
    functionName: destroy_site
    functionSourceFile: /src/lwan/src/samples/smolsite/main.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_free
    - free
    - hash_unref
    linkageType: ''
    returnType: void
    signature: void destroy_site(struct cache_entry *entry, void *context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: base64_encode
      Src: /src/lwan/src/samples/smolsite/main.c:379,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/samples/smolsite/main.c:381,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - input
    argTypes:
    - struct lwan_value
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 375
    functionDepth: 1
    functionLinenumber: 375
    functionLinenumberEnd: 383
    functionName: base64_encode_to_value
    functionSourceFile: /src/lwan/src/samples/smolsite/main.c
    functionUses: 0
    functionsReached:
    - base64_encode
    - lwan_log_critical
    linkageType: ''
    returnType: struct lwan_value
    signature: struct lwan_value base64_encode_to_value(struct lwan_value input)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lwan_init
      Src: /src/lwan/src/samples/smolsite/main.c:389,1
    - Dst: lwan_detect_url_map
      Src: /src/lwan/src/samples/smolsite/main.c:390,1
    - Dst: base64_encode_to_value
      Src: /src/lwan/src/samples/smolsite/main.c:392,1
    - Dst: lwan_tpl_compile_value_full
      Src: /src/lwan/src/samples/smolsite/main.c:394,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/samples/smolsite/main.c:398,1
    - Dst: cache_create_full
      Src: /src/lwan/src/samples/smolsite/main.c:400,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/samples/smolsite/main.c:403,1
    - Dst: lwan_main_loop
      Src: /src/lwan/src/samples/smolsite/main.c:405,1
    - Dst: lwan_shutdown
      Src: /src/lwan/src/samples/smolsite/main.c:406,1
    - Dst: cache_destroy
      Src: /src/lwan/src/samples/smolsite/main.c:407,1
    - Dst: lwan_tpl_free
      Src: /src/lwan/src/samples/smolsite/main.c:408,1
    - Dst: free
      Src: /src/lwan/src/samples/smolsite/main.c:409,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 385
    functionDepth: 2
    functionLinenumber: 385
    functionLinenumberEnd: 412
    functionName: main
    functionSourceFile: /src/lwan/src/samples/smolsite/main.c
    functionUses: 5
    functionsReached:
    - lwan_main_loop
    - cache_create_full
    - lwan_shutdown
    - free
    - lwan_log_critical
    - lwan_tpl_compile_value_full
    - cache_destroy
    - lwan_init
    - base64_encode_to_value
    - lwan_tpl_free
    - lwan_detect_url_map
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: JZHOUR
    functionSourceFile: /src/lwan/src/samples/smolsite/junzip.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JZHOUR(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    functionName: JZMINUTE
    functionSourceFile: /src/lwan/src/samples/smolsite/junzip.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JZMINUTE(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 35
    functionName: JZSECOND
    functionSourceFile: /src/lwan/src/samples/smolsite/junzip.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JZSECOND(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - h
    - ','
    - m
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 36
    functionName: JZTIME
    functionSourceFile: /src/lwan/src/samples/smolsite/junzip.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JZTIME(h,m,s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 38
    functionName: JZYEAR
    functionSourceFile: /src/lwan/src/samples/smolsite/junzip.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JZYEAR(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 39
    functionName: JZMONTH
    functionSourceFile: /src/lwan/src/samples/smolsite/junzip.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JZMONTH(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: JZDAY
    functionSourceFile: /src/lwan/src/samples/smolsite/junzip.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JZDAY(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - y
    - ','
    - m
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    functionName: JZDATE
    functionSourceFile: /src/lwan/src/samples/smolsite/junzip.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: JZDATE(y,m,d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 140
    functionName: qrcodegen_BUFFER_LEN_FOR_VERSION
    functionSourceFile: /src/lwan/src/samples/smolsite/qrcodegen.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: qrcodegen_BUFFER_LEN_FOR_VERSION(n)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: JZFile*::seek
      Src: /src/lwan/src/samples/smolsite/junzip.c:15,1
    - Dst: fprintf
      Src: /src/lwan/src/samples/smolsite/junzip.c:16,1
    - Dst: JZFile*::tell
      Src: /src/lwan/src/samples/smolsite/junzip.c:20,1
    - Dst: fprintf
      Src: /src/lwan/src/samples/smolsite/junzip.c:21,1
    - Dst: JZFile*::seek
      Src: /src/lwan/src/samples/smolsite/junzip.c:27,1
    - Dst: fprintf
      Src: /src/lwan/src/samples/smolsite/junzip.c:28,1
    - Dst: JZFile*::read
      Src: /src/lwan/src/samples/smolsite/junzip.c:32,1
    - Dst: fprintf
      Src: /src/lwan/src/samples/smolsite/junzip.c:33,1
    - Dst: fprintf
      Src: /src/lwan/src/samples/smolsite/junzip.c:44,1
    - Dst: memcpy
      Src: /src/lwan/src/samples/smolsite/junzip.c:48,1
    - Dst: fprintf
      Src: /src/lwan/src/samples/smolsite/junzip.c:52,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 2
    argNames:
    - zip
    - endRecord
    argTypes:
    - JZFile*
    - JZEndRecord*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 57
    functionName: jzReadEndRecord
    functionSourceFile: /src/lwan/src/samples/smolsite/junzip.c
    functionUses: 1
    functionsReached:
    - fprintf
    - JZFile*::seek
    - JZFile*::tell
    - memcpy
    - JZFile*::read
    linkageType: ''
    returnType: int
    signature: int jzReadEndRecord(JZFile *zip, JZEndRecord *endRecord)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: JZFile*::seek
      Src: /src/lwan/src/samples/smolsite/junzip.c:69,1
    - Dst: fprintf
      Src: /src/lwan/src/samples/smolsite/junzip.c:70,1
    - Dst: JZFile*::read
      Src: /src/lwan/src/samples/smolsite/junzip.c:75,1
    - Dst: fprintf
      Src: /src/lwan/src/samples/smolsite/junzip.c:77,1
    - Dst: fprintf
      Src: /src/lwan/src/samples/smolsite/junzip.c:82,1
    - Dst: fprintf
      Src: /src/lwan/src/samples/smolsite/junzip.c:87,1
    - Dst: JZFile*::read
      Src: /src/lwan/src/samples/smolsite/junzip.c:91,1
    - Dst: fprintf
      Src: /src/lwan/src/samples/smolsite/junzip.c:93,1
    - Dst: JZFile*::seek
      Src: /src/lwan/src/samples/smolsite/junzip.c:99,1
    - Dst: JZFile*::seek
      Src: /src/lwan/src/samples/smolsite/junzip.c:100,1
    - Dst: fprintf
      Src: /src/lwan/src/samples/smolsite/junzip.c:101,1
    - Dst: memcpy
      Src: /src/lwan/src/samples/smolsite/junzip.c:106,1
    - Dst: callback
      Src: /src/lwan/src/samples/smolsite/junzip.c:109,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 4
    argNames:
    - zip
    - endRecord
    - callback
    - user_data
    argTypes:
    - JZFile*
    - JZEndRecord*
    - JZRecordCallback
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 114
    functionName: jzReadCentralDirectory
    functionSourceFile: /src/lwan/src/samples/smolsite/junzip.c
    functionUses: 1
    functionsReached:
    - fprintf
    - JZFile*::seek
    - callback
    - memcpy
    - JZFile*::read
    linkageType: ''
    returnType: int
    signature: "int jzReadCentralDirectory(JZFile *zip,\n                           JZEndRecord
      *endRecord,\n                           JZRecordCallback callback,\n                           void
      *user_data)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: JZFile*::read
      Src: /src/lwan/src/samples/smolsite/junzip.c:123,1
    - Dst: JZFile*::read
      Src: /src/lwan/src/samples/smolsite/junzip.c:134,1
    - Dst: JZFile*::seek
      Src: /src/lwan/src/samples/smolsite/junzip.c:140,1
    - Dst: JZFile*::seek
      Src: /src/lwan/src/samples/smolsite/junzip.c:145,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 4
    argNames:
    - zip
    - header
    - filename
    - len
    argTypes:
    - JZFile*
    - JZLocalFileHeader*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 158
    functionName: jzReadLocalFileHeaderRaw
    functionSourceFile: /src/lwan/src/samples/smolsite/junzip.c
    functionUses: 0
    functionsReached:
    - JZFile*::read
    - JZFile*::seek
    linkageType: ''
    returnType: int
    signature: "int jzReadLocalFileHeaderRaw(JZFile *zip,\n                             JZLocalFileHeader
      *header,\n                             char *filename,\n                             int
      len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: jzReadLocalFileHeaderRaw
      Src: /src/lwan/src/samples/smolsite/junzip.c:167,1
    - Dst: memcpy
      Src: /src/lwan/src/samples/smolsite/junzip.c:170,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - zip
    - header
    - filename
    - len
    argTypes:
    - JZFile*
    - JZFileHeader*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 174
    functionName: jzReadLocalFileHeader
    functionSourceFile: /src/lwan/src/samples/smolsite/junzip.c
    functionUses: 1
    functionsReached:
    - memcpy
    - jzReadLocalFileHeaderRaw
    linkageType: ''
    returnType: int
    signature: "int jzReadLocalFileHeader(JZFile *zip,\n                          JZFileHeader
      *header,\n                          char *filename,\n                          int
      len)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: JZFile*::read
      Src: /src/lwan/src/samples/smolsite/junzip.c:187,1
    - Dst: JZFile*::error
      Src: /src/lwan/src/samples/smolsite/junzip.c:189,1
    - Dst: inflateInit2
      Src: /src/lwan/src/samples/smolsite/junzip.c:201,1
    - Dst: JZFile*::read
      Src: /src/lwan/src/samples/smolsite/junzip.c:211,1
    - Dst: JZFile*::error
      Src: /src/lwan/src/samples/smolsite/junzip.c:215,1
    - Dst: inflateEnd
      Src: /src/lwan/src/samples/smolsite/junzip.c:216,1
    - Dst: inflate
      Src: /src/lwan/src/samples/smolsite/junzip.c:226,1
    - Dst: inflateEnd
      Src: /src/lwan/src/samples/smolsite/junzip.c:236,1
    - Dst: inflateEnd
      Src: /src/lwan/src/samples/smolsite/junzip.c:244,1
    - Dst: malloc
      Src: /src/lwan/src/samples/smolsite/junzip.c:250,1
    - Dst: JZFile*::read
      Src: /src/lwan/src/samples/smolsite/junzip.c:253,1
    - Dst: puff
      Src: /src/lwan/src/samples/smolsite/junzip.c:256,1
    - Dst: free
      Src: /src/lwan/src/samples/smolsite/junzip.c:257,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 51
    argCount: 3
    argNames:
    - zip
    - header
    - buffer
    argTypes:
    - JZFile*
    - JZFileHeader*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 267
    functionName: jzReadData
    functionSourceFile: /src/lwan/src/samples/smolsite/junzip.c
    functionUses: 0
    functionsReached:
    - free
    - inflate
    - puff
    - JZFile*::error
    - JZFile*::read
    - inflateInit2
    - malloc
    - inflateEnd
    linkageType: ''
    returnType: int
    signature: int jzReadData(JZFile *zip, JZFileHeader *header, void *buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fread
      Src: /src/lwan/src/samples/smolsite/junzip.c:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - file
    - buf
    - size
    argTypes:
    - JZFile*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 278
    functionName: stdio_read_file_handle_read
    functionSourceFile: /src/lwan/src/samples/smolsite/junzip.c
    functionUses: 0
    functionsReached:
    - fread
    linkageType: ''
    returnType: size_t
    signature: size_t stdio_read_file_handle_read(JZFile *file, void *buf, size_t
      size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ftell
      Src: /src/lwan/src/samples/smolsite/junzip.c:283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - file
    argTypes:
    - JZFile*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 284
    functionName: stdio_read_file_handle_tell
    functionSourceFile: /src/lwan/src/samples/smolsite/junzip.c
    functionUses: 0
    functionsReached:
    - ftell
    linkageType: ''
    returnType: size_t
    signature: size_t stdio_read_file_handle_tell(JZFile *file)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fseek
      Src: /src/lwan/src/samples/smolsite/junzip.c:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - file
    - offset
    - whence
    argTypes:
    - JZFile*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 290
    functionName: stdio_read_file_handle_seek
    functionSourceFile: /src/lwan/src/samples/smolsite/junzip.c
    functionUses: 0
    functionsReached:
    - fseek
    linkageType: ''
    returnType: int
    signature: int stdio_read_file_handle_seek(JZFile *file, size_t offset, int whence)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ferror
      Src: /src/lwan/src/samples/smolsite/junzip.c:295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - file
    argTypes:
    - JZFile*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 296
    functionName: stdio_read_file_handle_error
    functionSourceFile: /src/lwan/src/samples/smolsite/junzip.c
    functionUses: 0
    functionsReached:
    - ferror
    linkageType: ''
    returnType: int
    signature: int stdio_read_file_handle_error(JZFile *file)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fclose
      Src: /src/lwan/src/samples/smolsite/junzip.c:301,1
    - Dst: free
      Src: /src/lwan/src/samples/smolsite/junzip.c:302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - file
    argTypes:
    - JZFile*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 303
    functionName: stdio_read_file_handle_close
    functionSourceFile: /src/lwan/src/samples/smolsite/junzip.c
    functionUses: 0
    functionsReached:
    - fclose
    - free
    linkageType: ''
    returnType: void
    signature: void stdio_read_file_handle_close(JZFile *file)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/samples/smolsite/junzip.c:307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - fp
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 305
    functionDepth: 0
    functionLinenumber: 305
    functionLinenumberEnd: 317
    functionName: jzfile_from_stdio_file
    functionSourceFile: /src/lwan/src/samples/smolsite/junzip.c
    functionUses: 1
    functionsReached:
    - malloc
    linkageType: ''
    returnType: JZFile
    signature: JZFile *jzfile_from_stdio_file(FILE *fp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: JZFile*::close
      Src: /src/lwan/src/samples/smolsite/junzip.c:322,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - f
    argTypes:
    - JZFile*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 319
    functionDepth: 0
    functionLinenumber: 319
    functionLinenumberEnd: 323
    functionName: jzfile_free
    functionSourceFile: /src/lwan/src/samples/smolsite/junzip.c
    functionUses: 1
    functionsReached:
    - JZFile*::close
    linkageType: ''
    returnType: void
    signature: void jzfile_free(JZFile *f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - lexer
    - ','
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 48
    functionName: LEX_ERROR
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LEX_ERROR(lexer, fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - parser
    - ','
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 55
    functionName: PARSER_ERROR
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PARSER_ERROR(parser, fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - parser
    - ','
    - fmt
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 62
    functionName: INTERNAL_ERROR
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: INTERNAL_ERROR(parser, fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: FOR_EACH_LEXEME
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOR_EACH_LEXEME(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - id
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 68
    functionName: GENERATE_ENUM
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GENERATE_ENUM(id)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: default_value
      Src: /src/lwan/src/lib/lwan-config.c:118,1
    - Dst: isspace
      Src: /src/lwan/src/lib/lwan-config.c:124,1
    - Dst: default_value
      Src: /src/lwan/src/lib/lwan-config.c:129,1
    - Dst: sscanf
      Src: /src/lwan/src/lib/lwan-config.c:134,1
    - Dst: strchr
      Src: /src/lwan/src/lib/lwan-config.c:148,1
    - Dst: LWAN_SELF_TEST
      Src: /src/lwan/src/lib/lwan-config.c:154,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/lib/lwan-config.c:180,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-config.c:181,1
    - Dst: parse_time_period
      Src: /src/lwan/src/lib/lwan-config.c:181,1
    - Dst: _parse_i64
      Src: /src/lwan/src/lib/lwan-config.c:187,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-config.c:199,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-config.c:205,1
    - Dst: __builtin_mul_overflow
      Src: /src/lwan/src/lib/lwan-config.c:205,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-config.c:208,1
    - Dst: __builtin_add_overflow
      Src: /src/lwan/src/lib/lwan-config.c:208,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-config.c:214,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-config.c:219,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/lib/lwan-config.c:242,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-config.c:244,1
    - Dst: _parse_i64
      Src: /src/lwan/src/lib/lwan-config.c:244,1
    - Dst: LWAN_NO_DISCARD
      Src: /src/lwan/src/lib/lwan-config.c:245,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/lib/lwan-config.c:260,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-config.c:262,1
    - Dst: _parse_i64
      Src: /src/lwan/src/lib/lwan-config.c:262,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-config.c:263,1
    - Dst: LWAN_NO_DISCARD
      Src: /src/lwan/src/lib/lwan-config.c:264,1
    - Dst: _parse_i32
      Src: /src/lwan/src/lib/lwan-config.c:268,1
    - Dst: _parse_i64
      Src: /src/lwan/src/lib/lwan-config.c:272,1
    - Dst: LWAN_SELF_TEST
      Src: /src/lwan/src/lib/lwan-config.c:280,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/lib/lwan-config.c:294,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-config.c:296,1
    - Dst: _parse_i32
      Src: /src/lwan/src/lib/lwan-config.c:296,1
    - Dst: LWAN_NO_DISCARD
      Src: /src/lwan/src/lib/lwan-config.c:297,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/lib/lwan-config.c:312,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-config.c:314,1
    - Dst: _parse_i32
      Src: /src/lwan/src/lib/lwan-config.c:314,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-config.c:315,1
    - Dst: LWAN_NO_DISCARD
      Src: /src/lwan/src/lib/lwan-config.c:316,1
    - Dst: _parse_i64
      Src: /src/lwan/src/lib/lwan-config.c:324,1
    - Dst: _parse_i32
      Src: /src/lwan/src/lib/lwan-config.c:334,1
    - Dst: parse_long_long
      Src: /src/lwan/src/lib/lwan-config.c:345,1
    - Dst: parse_int
      Src: /src/lwan/src/lib/lwan-config.c:346,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 53
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (_parse_i32(invalid[i], &discard) == false)
      pos:
        line_end: 295
        line_start: 295
        source_file: /src/lwan/src/lib/lwan-config.c
    - condition: (value == valid[i].value)
      pos:
        line_end: 262
        line_start: 262
        source_file: /src/lwan/src/lib/lwan-config.c
    - condition: (value == valid[i].value)
      pos:
        line_end: 314
        line_start: 314
        source_file: /src/lwan/src/lib/lwan-config.c
    - condition: (_parse_i64(valid[i].test, &value) == true)
      pos:
        line_end: 261
        line_start: 261
        source_file: /src/lwan/src/lib/lwan-config.c
    - condition: "(parse_time_period(tests[i].unparsed, INVALID) ==\n               tests[i].parsed)"
      pos:
        line_end: 181
        line_start: 180
        source_file: /src/lwan/src/lib/lwan-config.c
    - condition: (_parse_i64(invalid[i], &discard) == false)
      pos:
        line_end: 243
        line_start: 243
        source_file: /src/lwan/src/lib/lwan-config.c
    - condition: (_parse_i32(valid[i].test, &value) == true)
      pos:
        line_end: 313
        line_start: 313
        source_file: /src/lwan/src/lib/lwan-config.c
    constantsTouched: []
    func_position:
      end: 347
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 347
    functionName: DEFINE_RING_BUFFER_TYPE
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached:
    - isspace
    - strchr
    - parse_int
    - default_value
    - _parse_i32
    - parse_long_long
    - LWAN_NO_DISCARD
    - N_ELEMENTS
    - __builtin_mul_overflow
    - sscanf
    - assert
    - parse_time_period
    - __builtin_add_overflow
    - _parse_i64
    - LWAN_SELF_TEST
    - UNLIKELY
    linkageType: ''
    returnType: void
    signature: "void DEFINE_RING_BUFFER_TYPE(lexeme_ring_buffer, struct lexeme, 4)\nDEFINE_RING_BUFFER_TYPE(config_ring_buffer,
      struct config_line, 4)\n\nstruct lexer {\n    void *(*state)(struct lexer *);\n
      \   const char *start, *pos, *end;\n    struct lexeme_ring_buffer buffer;\n
      \   int cur_line;\n};\n\nstruct parser {\n    void *(*state)(struct parser *);\n
      \   struct lexer lexer;\n    struct lexeme_ring_buffer buffer;\n    struct config_ring_buffer
      items;\n    struct lwan_strbuf strbuf;\n};\n\nstruct config {\n    struct parser
      parser;\n    char *error_message;\n    struct hash *constants;\n    struct {\n
      \       void *addr;\n        size_t sz;\n    } mapped;\n    int opened_brackets;\n};\n\nunsigned
      int parse_time_period(const char *str, unsigned int default_value)\n{\n    unsigned
      int total = 0;\n    unsigned int period;\n    int ignored_spaces = 0;\n    char
      multiplier;\n\n    if (!str)\n        return default_value;\n\n    while (*str)
      {\n        /* This check is necessary to avoid making sscanf() take an incredible\n
      \        * amount of time while trying to scan the input for a number.  Fix
      for\n         * https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=44910
      */\n        if (isspace(*str)) {\n            ignored_spaces++;\n            str++;\n\n
      \           if (ignored_spaces > 1024)\n                return default_value;\n\n
      \           continue;\n        }\n\n        if (sscanf(str, \"%u%c\", &period,
      &multiplier) != 2)\n            break;\n\n        switch (multiplier) {\n        case
      's': total += period; break;\n        case 'm': total += period * ONE_MINUTE;
      break;\n        case 'h': total += period * ONE_HOUR; break;\n        case 'd':
      total += period * ONE_DAY; break;\n        case 'w': total += period * ONE_WEEK;
      break;\n        case 'M': total += period * ONE_MONTH; break;\n        case
      'y': total += period * ONE_YEAR; break;\n        default: return default_value;\n
      \       }\n\n        str = strchr(str, multiplier) + 1;\n    }\n\n    return
      total ? total : default_value;\n}\n\nLWAN_SELF_TEST(parse_time_period)\n{\n#define
      INVALID UINT32_MAX\n    static const struct {\n        const char *unparsed;\n
      \       unsigned int parsed;\n    } tests[] = {\n        {\"\", INVALID},\n
      \       {\"1s\", 1},\n        {\"1m\", ONE_MINUTE},\n        {\"1h\", ONE_HOUR},\n
      \       {\"1d\", ONE_DAY},\n        {\"1w\", ONE_WEEK},\n        {\"1M\", ONE_MONTH},\n
      \       {\"1y\", ONE_YEAR},\n        {\"1h 30m\", ONE_HOUR + 30 * ONE_MINUTE},\n
      \       {\"2h 25m 15s\", 2 * ONE_HOUR + 25 * ONE_MINUTE + 15},\n        {\"asdfasdfasdf\",
      INVALID},\n        {NULL, INVALID},\n        {\"60 s\", INVALID},\n        {\"
      \           30d\", 30 * ONE_DAY},\n        {\"5w       \", 5 * ONE_WEEK},\n
      \       {\"10\", INVALID},\n        {\"1w 1q\", INVALID},\n    };\n\n    for
      (size_t i = 0; i < N_ELEMENTS(tests); i++) {\n        assert(parse_time_period(tests[i].unparsed,
      INVALID) ==\n               tests[i].parsed);\n    }\n#undef INVALID\n}\n\nstatic
      bool _parse_i64(const char *s, int64_t *out)\n{\n    /* FIXME: we only need
      overflow checks if strlen(s) > thresh */\n    const char *orig_s = s;\n    uint64_t
      r = 0;\n    bool negative = false;\n\n    if (*s == '-') {\n        s++;\n        negative
      = true;\n    }\n\n    if (UNLIKELY(*s < '0' || *s > '9'))\n        return false;\n\n
      \   goto elide_mult_for_first_iter;\n\n    while (*s >= '0' && *s <= '9') {\n
      \       if (UNLIKELY(__builtin_mul_overflow(r, 10, &r)))\n            return
      false;\nelide_mult_for_first_iter:\n        if (UNLIKELY(__builtin_add_overflow(r,
      *s - '0', &r)))\n            return false;\n        s++;\n    }\n\n    if (negative)
      {\n        if (UNLIKELY(((int64_t)-r) > 0)) {\n            return false;\n        }\n
      \       *out = (int64_t)-r;\n    } else {\n        if (UNLIKELY((int64_t)r <
      0)) {\n            return false;\n        }\n        *out = (int64_t)r;\n    }\n\n
      \   return s != orig_s && *s == '\\0';\n}\n\nLWAN_SELF_TEST(parse_i64)\n{\n
      \   static const char *invalid[] = {\n        \"\",\n        \"10\\x003\",\n
      \       \"f\",\n        \"X959\",\n        \"/\",\n        \"-/\",\n        \"~9999\",\n
      \       \"9223372036854775808\",\n        \"-9223372036854775809\",\n        \"18446744073709551615\",\n
      \   };\n    for (size_t i = 0; i < N_ELEMENTS(invalid); i++) {\n        int64_t
      discard;\n        assert(_parse_i64(invalid[i], &discard) == false);\n        LWAN_NO_DISCARD(discard);\n
      \   }\n\n    static const struct {\n        const char *test;\n        int64_t
      value;\n    } valid[] = {\n        {\"0\", 0},\n        {\"-1\", -1},\n        {\"1\",
      1},\n        {\"250\", 250},\n        {\"999999\", 999999},\n        {\"9223372036854775807\",
      INT64_MAX},\n        {\"-9223372036854775808\", INT64_MIN},\n    };\n    for
      (size_t i = 0; i < N_ELEMENTS(valid); i++) {\n        int64_t value;\n        assert(_parse_i64(valid[i].test,
      &value) == true);\n        assert(value == valid[i].value);\n        LWAN_NO_DISCARD(value);\n
      \   }\n}\n\nstatic bool _parse_i32(const char *s, int32_t *out)\n{\n    int64_t
      parsed;\n\n    if (_parse_i64(s, &parsed) && (int64_t)(int32_t)parsed == parsed)
      {\n        *out = (int32_t)parsed;\n        return true;\n    }\n\n    return
      false;\n}\n\nLWAN_SELF_TEST(parse_i32)\n{\n    static const char *invalid[]
      = {\n        \"\",\n        \"10\\x003\",\n        \"f\",\n        \"X959\",\n
      \       \"/\",\n        \"-/\",\n        \"~9999\",\n        \"2147483648\",\n
      \       \"-2147483649\",\n        \"4294967295\",\n    };\n    for (size_t i
      = 0; i < N_ELEMENTS(invalid); i++) {\n        int32_t discard;\n        assert(_parse_i32(invalid[i],
      &discard) == false);\n        LWAN_NO_DISCARD(discard);\n    }\n\n    static
      const struct {\n        const char *test;\n        int32_t value;\n    } valid[]
      = {\n        {\"0\", 0},\n        {\"-1\", -1},\n        {\"1\", 1},\n        {\"250\",
      250},\n        {\"999999\", 999999},\n        {\"2147483647\", INT32_MAX},\n
      \       {\"-2147483648\", INT32_MIN},\n    };\n    for (size_t i = 0; i < N_ELEMENTS(valid);
      i++) {\n        int32_t value;\n        assert(_parse_i32(valid[i].test, &value)
      == true);\n        assert(value == valid[i].value);\n        LWAN_NO_DISCARD(value);\n
      \   }\n}\n\nlong long parse_long_long(const char *value, long long default_value)\n{\n
      \   int64_t out;\n\n    if (value && _parse_i64(value, &out))\n        return
      (long long)out;\n\n    return default_value;\n}\n\nint parse_int(const char
      *value, int default_value)\n{\n    int32_t out;\n\n    if (value && _parse_i32(value,
      &out))\n        return out;\n\n    return default_value;\n}\n\nlong parse_long(const
      char *value, long default_value)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcaseequal_neutral
      Src: /src/lwan/src/lib/lwan-config.c:354,1
    - Dst: strcaseequal_neutral
      Src: /src/lwan/src/lib/lwan-config.c:355,1
    - Dst: strcaseequal_neutral
      Src: /src/lwan/src/lib/lwan-config.c:355,1
    - Dst: strcaseequal_neutral
      Src: /src/lwan/src/lib/lwan-config.c:358,1
    - Dst: strcaseequal_neutral
      Src: /src/lwan/src/lib/lwan-config.c:359,1
    - Dst: strcaseequal_neutral
      Src: /src/lwan/src/lib/lwan-config.c:359,1
    - Dst: parse_int
      Src: /src/lwan/src/lib/lwan-config.c:362,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 8
    argCount: 2
    argNames:
    - value
    - default_value
    argTypes:
    - char*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 363
    functionName: parse_bool
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 1
    functionsReached:
    - parse_int
    - strcaseequal_neutral
    linkageType: ''
    returnType: bool
    signature: bool parse_bool(const char *value, bool default_value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-config.c:367,1
    - Dst: parse_bool
      Src: /src/lwan/src/lib/lwan-config.c:367,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-config.c:368,1
    - Dst: parse_bool
      Src: /src/lwan/src/lib/lwan-config.c:368,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-config.c:369,1
    - Dst: parse_bool
      Src: /src/lwan/src/lib/lwan-config.c:369,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-config.c:371,1
    - Dst: parse_bool
      Src: /src/lwan/src/lib/lwan-config.c:371,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-config.c:372,1
    - Dst: parse_bool
      Src: /src/lwan/src/lib/lwan-config.c:372,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-config.c:373,1
    - Dst: parse_bool
      Src: /src/lwan/src/lib/lwan-config.c:373,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-config.c:375,1
    - Dst: parse_bool
      Src: /src/lwan/src/lib/lwan-config.c:375,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-config.c:376,1
    - Dst: parse_bool
      Src: /src/lwan/src/lib/lwan-config.c:376,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-config.c:378,1
    - Dst: parse_bool
      Src: /src/lwan/src/lib/lwan-config.c:378,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-config.c:379,1
    - Dst: parse_bool
      Src: /src/lwan/src/lib/lwan-config.c:379,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (parse_bool("true", false) == true)
      pos:
        line_end: 366
        line_start: 366
        source_file: /src/lwan/src/lib/lwan-config.c
    - condition: (parse_bool("abacate", false) == false)
      pos:
        line_end: 378
        line_start: 378
        source_file: /src/lwan/src/lib/lwan-config.c
    - condition: (parse_bool("on", false) == true)
      pos:
        line_end: 367
        line_start: 367
        source_file: /src/lwan/src/lib/lwan-config.c
    - condition: (parse_bool("yes", false) == true)
      pos:
        line_end: 368
        line_start: 368
        source_file: /src/lwan/src/lib/lwan-config.c
    - condition: (parse_bool("false", true) == false)
      pos:
        line_end: 370
        line_start: 370
        source_file: /src/lwan/src/lib/lwan-config.c
    - condition: (parse_bool("off", true) == false)
      pos:
        line_end: 371
        line_start: 371
        source_file: /src/lwan/src/lib/lwan-config.c
    - condition: (parse_bool("0", 1) == false)
      pos:
        line_end: 374
        line_start: 374
        source_file: /src/lwan/src/lib/lwan-config.c
    - condition: (parse_bool("abacate", true) == true)
      pos:
        line_end: 377
        line_start: 377
        source_file: /src/lwan/src/lib/lwan-config.c
    - condition: (parse_bool("no", true) == false)
      pos:
        line_end: 372
        line_start: 372
        source_file: /src/lwan/src/lib/lwan-config.c
    - condition: (parse_bool("1", 0) == true)
      pos:
        line_end: 375
        line_start: 375
        source_file: /src/lwan/src/lib/lwan-config.c
    constantsTouched: []
    func_position:
      end: 380
      start: 365
    functionDepth: 2
    functionLinenumber: 365
    functionLinenumberEnd: 380
    functionName: LWAN_SELF_TEST
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 1
    functionsReached:
    - parse_bool
    - assert
    linkageType: ''
    returnType: void
    signature: void LWAN_SELF_TEST(parse_bool)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/lwan/src/lib/lwan-config.c:391,1
    - Dst: vasprintf
      Src: /src/lwan/src/lib/lwan-config.c:392,1
    - Dst: va_end
      Src: /src/lwan/src/lib/lwan-config.c:393,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - conf
    - fmt
    argTypes:
    - struct config*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 382
    functionDepth: 0
    functionLinenumber: 382
    functionLinenumberEnd: 402
    functionName: config_error
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 3
    functionsReached:
    - va_end
    - va_start
    - vasprintf
    linkageType: ''
    returnType: bool
    signature: bool config_error(struct config *conf, const char *fmt, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lexeme_ring_buffer_try_put
      Src: /src/lwan/src/lib/lwan-config.c:406,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - lexer
    - lexeme
    argTypes:
    - struct lexer*
    - struct lexeme*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 404
    functionDepth: 0
    functionLinenumber: 404
    functionLinenumberEnd: 408
    functionName: emit_lexeme
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached:
    - lexeme_ring_buffer_try_put
    linkageType: ''
    returnType: void
    signature: void emit_lexeme(struct lexer *lexer, struct lexeme *lexeme)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 410
    functionDepth: 0
    functionLinenumber: 410
    functionLinenumberEnd: 413
    functionName: current_len
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t current_len(struct lexer *lexer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: current_len
      Src: /src/lwan/src/lib/lwan-config.c:419,1
    - Dst: emit_lexeme
      Src: /src/lwan/src/lib/lwan-config.c:421,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lexer
    - type
    argTypes:
    - struct lexer*
    - enum lexeme_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 415
    functionDepth: 1
    functionLinenumber: 415
    functionLinenumberEnd: 422
    functionName: emit
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 3
    functionsReached:
    - current_len
    - emit_lexeme
    linkageType: ''
    returnType: void
    signature: void emit(struct lexer *lexer, enum lexeme_type type)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 424
    functionDepth: 0
    functionLinenumber: 424
    functionLinenumberEnd: 438
    functionName: next
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int next(struct lexer *lexer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 440
    functionDepth: 0
    functionLinenumber: 440
    functionLinenumberEnd: 443
    functionName: ignore
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ignore(struct lexer *lexer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ignore
      Src: /src/lwan/src/lib/lwan-config.c:448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - lexer
    - n
    argTypes:
    - struct lexer*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 445
    functionDepth: 0
    functionLinenumber: 445
    functionLinenumberEnd: 449
    functionName: advance_n
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached:
    - ignore
    linkageType: ''
    returnType: void
    signature: void advance_n(struct lexer *lexer, size_t n)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 451
    functionDepth: 0
    functionLinenumber: 451
    functionLinenumberEnd: 457
    functionName: backup
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void backup(struct lexer *lexer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/lwan/src/lib/lwan-config.c:461,1
    - Dst: backup
      Src: /src/lwan/src/lib/lwan-config.c:463,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 459
    functionDepth: 0
    functionLinenumber: 459
    functionLinenumberEnd: 466
    functionName: peek
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 1
    functionsReached:
    - backup
    - next
    linkageType: ''
    returnType: int
    signature: int peek(struct lexer *lexer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 468
    functionDepth: 0
    functionLinenumber: 468
    functionLinenumberEnd: 471
    functionName: remaining
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t remaining(struct lexer *lexer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/lwan/src/lib/lwan-config.c:478,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 2
    argCount: 1
    argNames:
    - chr
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 476
    functionDepth: 0
    functionLinenumber: 476
    functionLinenumberEnd: 479
    functionName: is_string
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached:
    - isspace
    linkageType: ''
    returnType: bool
    signature: bool is_string(int chr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/lwan/src/lib/lwan-config.c:486,1
    - Dst: peek
      Src: /src/lwan/src/lib/lwan-config.c:488,1
    - Dst: backup
      Src: /src/lwan/src/lib/lwan-config.c:489,1
    - Dst: emit
      Src: /src/lwan/src/lib/lwan-config.c:490,1
    - Dst: advance_n
      Src: /src/lwan/src/lib/lwan-config.c:492,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-config.c:492,1
    - Dst: is_string
      Src: /src/lwan/src/lib/lwan-config.c:496,1
    - Dst: backup
      Src: /src/lwan/src/lib/lwan-config.c:498,1
    - Dst: emit
      Src: /src/lwan/src/lib/lwan-config.c:499,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 481
    functionDepth: 1
    functionLinenumber: 481
    functionLinenumberEnd: 502
    functionName: lex_string
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached:
    - is_string
    - peek
    - emit
    - strlen
    - advance_n
    - backup
    - next
    linkageType: ''
    returnType: void
    signature: void *lex_string(struct lexer *lexer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/lwan/src/lib/lwan-config.c:506,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 504
    functionDepth: 1
    functionLinenumber: 504
    functionLinenumberEnd: 507
    functionName: config_from_parser
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached:
    - container_of
    linkageType: ''
    returnType: struct config
    signature: struct config *config_from_parser(struct parser *parser)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: container_of
      Src: /src/lwan/src/lib/lwan-config.c:511,1
    - Dst: config_from_parser
      Src: /src/lwan/src/lib/lwan-config.c:513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 509
    functionDepth: 2
    functionLinenumber: 509
    functionLinenumberEnd: 514
    functionName: config_from_lexer
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached:
    - container_of
    - config_from_parser
    linkageType: ''
    returnType: struct config
    signature: struct config *config_from_lexer(struct lexer *lexer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: remaining
      Src: /src/lwan/src/lib/lwan-config.c:518,1
    - Dst: strncmp
      Src: /src/lwan/src/lib/lwan-config.c:521,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - lexer
    - str
    - s
    argTypes:
    - struct lexer*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 516
    functionDepth: 0
    functionLinenumber: 516
    functionLinenumberEnd: 522
    functionName: lex_streq
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached:
    - strncmp
    - remaining
    linkageType: ''
    returnType: bool
    signature: bool lex_streq(struct lexer *lexer, const char *str, size_t s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: peek
      Src: /src/lwan/src/lib/lwan-config.c:526,1
    - Dst: advance_n
      Src: /src/lwan/src/lib/lwan-config.c:528,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-config.c:528,1
    - Dst: lex_streq
      Src: /src/lwan/src/lib/lwan-config.c:531,1
    - Dst: emit
      Src: /src/lwan/src/lib/lwan-config.c:532,1
    - Dst: next
      Src: /src/lwan/src/lib/lwan-config.c:537,1
    - Dst: LEX_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:539,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 524
    functionDepth: 1
    functionLinenumber: 524
    functionLinenumberEnd: 540
    functionName: lex_multiline_string
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached:
    - peek
    - emit
    - LEX_ERROR
    - strlen
    - lex_streq
    - advance_n
    - next
    linkageType: ''
    returnType: void
    signature: void *lex_multiline_string(struct lexer *lexer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isalpha
      Src: /src/lwan/src/lib/lwan-config.c:544,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - chr
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 542
    functionDepth: 0
    functionLinenumber: 542
    functionLinenumberEnd: 545
    functionName: is_variable
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached:
    - isalpha
    linkageType: ''
    returnType: bool
    signature: bool is_variable(int chr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/lwan/src/lib/lwan-config.c:552,1
    - Dst: backup
      Src: /src/lwan/src/lib/lwan-config.c:555,1
    - Dst: emit
      Src: /src/lwan/src/lib/lwan-config.c:556,1
    - Dst: advance_n
      Src: /src/lwan/src/lib/lwan-config.c:558,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-config.c:558,1
    - Dst: LEX_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:564,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 547
    functionDepth: 1
    functionLinenumber: 547
    functionLinenumberEnd: 565
    functionName: lex_variable_default
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached:
    - emit
    - LEX_ERROR
    - strlen
    - advance_n
    - backup
    - next
    linkageType: ''
    returnType: void
    signature: void *lex_variable_default(struct lexer *lexer)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: advance_n
      Src: /src/lwan/src/lib/lwan-config.c:571,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-config.c:571,1
    - Dst: next
      Src: /src/lwan/src/lib/lwan-config.c:574,1
    - Dst: backup
      Src: /src/lwan/src/lib/lwan-config.c:577,1
    - Dst: current_len
      Src: /src/lwan/src/lib/lwan-config.c:579,1
    - Dst: LEX_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:580,1
    - Dst: emit
      Src: /src/lwan/src/lib/lwan-config.c:582,1
    - Dst: advance_n
      Src: /src/lwan/src/lib/lwan-config.c:583,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-config.c:583,1
    - Dst: backup
      Src: /src/lwan/src/lib/lwan-config.c:588,1
    - Dst: current_len
      Src: /src/lwan/src/lib/lwan-config.c:590,1
    - Dst: LEX_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:591,1
    - Dst: emit
      Src: /src/lwan/src/lib/lwan-config.c:593,1
    - Dst: advance_n
      Src: /src/lwan/src/lib/lwan-config.c:594,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-config.c:594,1
    - Dst: is_variable
      Src: /src/lwan/src/lib/lwan-config.c:598,1
    - Dst: LEX_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:600,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 567
    functionDepth: 1
    functionLinenumber: 567
    functionLinenumberEnd: 601
    functionName: lex_variable
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached:
    - LEX_ERROR
    - emit
    - strlen
    - current_len
    - advance_n
    - backup
    - is_variable
    - next
    linkageType: ''
    returnType: void
    signature: void *lex_variable(struct lexer *lexer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - chr
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 603
    functionDepth: 0
    functionLinenumber: 603
    functionLinenumberEnd: 606
    functionName: is_comment
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_comment(int chr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: is_comment
      Src: /src/lwan/src/lib/lwan-config.c:610,1
    - Dst: next
      Src: /src/lwan/src/lib/lwan-config.c:610,1
    - Dst: backup
      Src: /src/lwan/src/lib/lwan-config.c:612,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 608
    functionDepth: 1
    functionLinenumber: 608
    functionLinenumberEnd: 614
    functionName: lex_comment
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached:
    - is_comment
    - backup
    - next
    linkageType: ''
    returnType: void
    signature: void *lex_comment(struct lexer *lexer)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/lwan/src/lib/lwan-config.c:619,1
    - Dst: emit
      Src: /src/lwan/src/lib/lwan-config.c:625,1
    - Dst: isspace
      Src: /src/lwan/src/lib/lwan-config.c:629,1
    - Dst: ignore
      Src: /src/lwan/src/lib/lwan-config.c:630,1
    - Dst: emit
      Src: /src/lwan/src/lib/lwan-config.c:635,1
    - Dst: emit
      Src: /src/lwan/src/lib/lwan-config.c:645,1
    - Dst: emit
      Src: /src/lwan/src/lib/lwan-config.c:646,1
    - Dst: emit
      Src: /src/lwan/src/lib/lwan-config.c:651,1
    - Dst: lex_streq
      Src: /src/lwan/src/lib/lwan-config.c:658,1
    - Dst: lex_streq
      Src: /src/lwan/src/lib/lwan-config.c:660,1
    - Dst: peek
      Src: /src/lwan/src/lib/lwan-config.c:663,1
    - Dst: is_string
      Src: /src/lwan/src/lib/lwan-config.c:666,1
    - Dst: LEX_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:669,1
    - Dst: emit
      Src: /src/lwan/src/lib/lwan-config.c:672,1
    - Dst: emit
      Src: /src/lwan/src/lib/lwan-config.c:673,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 40
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 616
    functionDepth: 1
    functionLinenumber: 616
    functionLinenumberEnd: 676
    functionName: lex_config
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached:
    - isspace
    - next
    - is_string
    - peek
    - emit
    - LEX_ERROR
    - lex_streq
    - ignore
    linkageType: ''
    returnType: void
    signature: void *lex_config(struct lexer *lexer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lexeme_ring_buffer_get_ptr_or_null
      Src: /src/lwan/src/lib/lwan-config.c:683,1
    - Dst: struct lexer*::state
      Src: /src/lwan/src/lib/lwan-config.c:686,1
    - Dst: lexeme_ring_buffer_get_ptr_or_null
      Src: /src/lwan/src/lib/lwan-config.c:689,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 678
    functionDepth: 0
    functionLinenumber: 678
    functionLinenumberEnd: 690
    functionName: lex_next
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached:
    - struct lexer*::state
    - lexeme_ring_buffer_get_ptr_or_null
    linkageType: ''
    returnType: struct lexeme
    signature: struct lexeme *lex_next(struct lexer *lexer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-config.c:700,1
    - Dst: PARSER_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:701,1
    - Dst: strndupa
      Src: /src/lwan/src/lib/lwan-config.c:705,1
    - Dst: hash_find
      Src: /src/lwan/src/lib/lwan-config.c:707,1
    - Dst: config_from_parser
      Src: /src/lwan/src/lib/lwan-config.c:707,1
    - Dst: secure_getenv
      Src: /src/lwan/src/lib/lwan-config.c:708,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - parser
    - key
    - len
    argTypes:
    - struct parser*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 697
    functionDepth: 2
    functionLinenumber: 697
    functionLinenumberEnd: 709
    functionName: get_constant
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached:
    - strndupa
    - UNLIKELY
    - hash_find
    - secure_getenv
    - PARSER_ERROR
    - config_from_parser
    linkageType: ''
    returnType: char
    signature: 'char *

      get_constant(struct parser *parser, const char *key, size_t len)'
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: lexeme_ring_buffer_get_ptr_or_null
      Src: /src/lwan/src/lib/lwan-config.c:718,1
    - Dst: PARSER_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:720,1
    - Dst: lwan_strbuf_append_value
      Src: /src/lwan/src/lib/lwan-config.c:722,1
    - Dst: lexeme_ring_buffer_empty
      Src: /src/lwan/src/lib/lwan-config.c:724,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/lib/lwan-config.c:725,1
    - Dst: lwan_strbuf_get_length
      Src: /src/lwan/src/lib/lwan-config.c:727,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/lib/lwan-config.c:728,1
    - Dst: lex_next
      Src: /src/lwan/src/lib/lwan-config.c:730,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-config.c:731,1
    - Dst: lwan_strbuf_get_length
      Src: /src/lwan/src/lib/lwan-config.c:731,1
    - Dst: PARSER_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:734,1
    - Dst: get_constant
      Src: /src/lwan/src/lib/lwan-config.c:740,1
    - Dst: PARSER_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:742,1
    - Dst: lwan_strbuf_append_strz
      Src: /src/lwan/src/lib/lwan-config.c:749,1
    - Dst: get_constant
      Src: /src/lwan/src/lib/lwan-config.c:756,1
    - Dst: lex_next
      Src: /src/lwan/src/lib/lwan-config.c:759,1
    - Dst: PARSER_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:760,1
    - Dst: PARSER_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:766,1
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan-config.c:769,1
    - Dst: lwan_strbuf_append_value
      Src: /src/lwan/src/lib/lwan-config.c:773,1
    - Dst: lwan_strbuf_append_strz
      Src: /src/lwan/src/lib/lwan-config.c:775,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/lib/lwan-config.c:782,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/lib/lwan-config.c:787,1
    - Dst: lwan_strbuf_append_value
      Src: /src/lwan/src/lib/lwan-config.c:789,1
    - Dst: lwan_strbuf_get_buffer
      Src: /src/lwan/src/lib/lwan-config.c:794,1
    - Dst: config_ring_buffer_try_put
      Src: /src/lwan/src/lib/lwan-config.c:797,1
    - Dst: PARSER_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:800,1
    - Dst: PARSER_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:804,1
    - Dst: INTERNAL_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:807,1
    - Dst: INTERNAL_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:811,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-config.c:815,1
    - Dst: PARSER_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:821,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 62
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 711
    functionDepth: 3
    functionLinenumber: 711
    functionLinenumberEnd: 822
    functionName: parse_key_value
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached:
    - lex_next
    - lwan_strbuf_append_value
    - __builtin_unreachable
    - lexeme_ring_buffer_empty
    - lwan_strbuf_get_length
    - config_ring_buffer_try_put
    - INTERNAL_ERROR
    - lwan_strbuf_append_strz
    - UNLIKELY
    - lwan_log_debug
    - get_constant
    - lexeme_ring_buffer_get_ptr_or_null
    - lwan_strbuf_get_buffer
    - lwan_strbuf_append_char
    - PARSER_ERROR
    linkageType: ''
    returnType: void
    signature: void *parse_key_value(struct parser *parser)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lexeme_ring_buffer_get_ptr_or_null
      Src: /src/lwan/src/lib/lwan-config.c:829,1
    - Dst: PARSER_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:831,1
    - Dst: lwan_strbuf_append_value
      Src: /src/lwan/src/lib/lwan-config.c:833,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/lib/lwan-config.c:835,1
    - Dst: lexeme_ring_buffer_get_ptr_or_null
      Src: /src/lwan/src/lib/lwan-config.c:837,1
    - Dst: PARSER_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:839,1
    - Dst: lwan_strbuf_append_value
      Src: /src/lwan/src/lib/lwan-config.c:841,1
    - Dst: lexeme_ring_buffer_empty
      Src: /src/lwan/src/lib/lwan-config.c:843,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/lib/lwan-config.c:844,1
    - Dst: lwan_strbuf_get_buffer
      Src: /src/lwan/src/lib/lwan-config.c:849,1
    - Dst: lwan_strbuf_get_buffer
      Src: /src/lwan/src/lib/lwan-config.c:850,1
    - Dst: config_ring_buffer_try_put
      Src: /src/lwan/src/lib/lwan-config.c:852,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 854
      start: 824
    functionDepth: 1
    functionLinenumber: 824
    functionLinenumberEnd: 854
    functionName: parse_section
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_append_value
    - lexeme_ring_buffer_empty
    - config_ring_buffer_try_put
    - lexeme_ring_buffer_get_ptr_or_null
    - lwan_strbuf_get_buffer
    - lwan_strbuf_append_char
    - PARSER_ERROR
    linkageType: ''
    returnType: void
    signature: void *parse_section(struct parser *parser)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: parse_section
      Src: /src/lwan/src/lib/lwan-config.c:858,1
    - Dst: config_ring_buffer_try_put
      Src: /src/lwan/src/lib/lwan-config.c:863,1
    - Dst: INTERNAL_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:866,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 870
      start: 856
    functionDepth: 2
    functionLinenumber: 856
    functionLinenumberEnd: 870
    functionName: parse_section_shorthand
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached:
    - parse_section
    - INTERNAL_ERROR
    - config_ring_buffer_try_put
    linkageType: ''
    returnType: void
    signature: void *parse_section_shorthand(struct parser *parser)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: config_from_parser
      Src: /src/lwan/src/lib/lwan-config.c:875,1
    - Dst: PARSER_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:878,1
    - Dst: lexeme_ring_buffer_empty
      Src: /src/lwan/src/lib/lwan-config.c:880,1
    - Dst: PARSER_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:881,1
    - Dst: config_ring_buffer_try_put
      Src: /src/lwan/src/lib/lwan-config.c:883,1
    - Dst: INTERNAL_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:884,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 891
      start: 872
    functionDepth: 2
    functionLinenumber: 872
    functionLinenumberEnd: 891
    functionName: parse_section_end
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached:
    - lexeme_ring_buffer_empty
    - INTERNAL_ERROR
    - config_ring_buffer_try_put
    - PARSER_ERROR
    - config_from_parser
    linkageType: ''
    returnType: void
    signature: void *parse_section_end(struct parser *parser)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: lex_next
      Src: /src/lwan/src/lib/lwan-config.c:895,1
    - Dst: INTERNAL_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:900,1
    - Dst: lexeme_ring_buffer_empty
      Src: /src/lwan/src/lib/lwan-config.c:905,1
    - Dst: PARSER_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:906,1
    - Dst: lexeme_ring_buffer_empty
      Src: /src/lwan/src/lib/lwan-config.c:911,1
    - Dst: PARSER_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:912,1
    - Dst: config_from_parser
      Src: /src/lwan/src/lib/lwan-config.c:914,1
    - Dst: lexeme_ring_buffer_empty
      Src: /src/lwan/src/lib/lwan-config.c:919,1
    - Dst: lexeme_ring_buffer_try_put
      Src: /src/lwan/src/lib/lwan-config.c:925,1
    - Dst: INTERNAL_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:926,1
    - Dst: config_from_parser
      Src: /src/lwan/src/lib/lwan-config.c:934,1
    - Dst: PARSER_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:935,1
    - Dst: lexeme_ring_buffer_empty
      Src: /src/lwan/src/lib/lwan-config.c:937,1
    - Dst: INTERNAL_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:938,1
    - Dst: PARSER_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:944,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-config.c:948,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 37
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 952
      start: 893
    functionDepth: 2
    functionLinenumber: 893
    functionLinenumberEnd: 952
    functionName: parse_config
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached:
    - lex_next
    - lexeme_ring_buffer_try_put
    - __builtin_unreachable
    - lexeme_ring_buffer_empty
    - INTERNAL_ERROR
    - PARSER_ERROR
    - config_from_parser
    linkageType: ''
    returnType: void
    signature: void *parse_config(struct parser *parser)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: config_ring_buffer_get_ptr_or_null
      Src: /src/lwan/src/lib/lwan-config.c:959,1
    - Dst: lwan_strbuf_reset
      Src: /src/lwan/src/lib/lwan-config.c:962,1
    - Dst: struct parser*::state
      Src: /src/lwan/src/lib/lwan-config.c:964,1
    - Dst: config_ring_buffer_get_ptr_or_null
      Src: /src/lwan/src/lib/lwan-config.c:967,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 954
    functionDepth: 1
    functionLinenumber: 954
    functionLinenumberEnd: 968
    functionName: parser_next_internal
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached:
    - struct parser*::state
    - config_ring_buffer_get_ptr_or_null
    - lwan_strbuf_reset
    linkageType: ''
    returnType: struct config_line
    signature: struct config_line *parser_next_internal(struct parser *parser)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: config_read_line
      Src: /src/lwan/src/lib/lwan-config.c:972,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan-config.c:975,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan-config.c:976,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-config.c:979,1
    - Dst: hash_add
      Src: /src/lwan/src/lib/lwan-config.c:981,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-config.c:989,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - config
    - l
    argTypes:
    - struct config*
    - struct config_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 970
    functionDepth: 1
    functionLinenumber: 970
    functionLinenumberEnd: 995
    functionName: parse_constants
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached:
    - strdup
    - hash_add
    - lwan_log_critical
    - config_read_line
    - config_error
    linkageType: ''
    returnType: bool
    signature: bool parse_constants(struct config *config, const struct config_line
      *l)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: parser_next_internal
      Src: /src/lwan/src/lib/lwan-config.c:1000,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-config.c:1005,1
    - Dst: config_from_parser
      Src: /src/lwan/src/lib/lwan-config.c:1006,1
    - Dst: config_from_parser
      Src: /src/lwan/src/lib/lwan-config.c:1007,1
    - Dst: parse_constants
      Src: /src/lwan/src/lib/lwan-config.c:1009,1
    - Dst: PARSER_ERROR
      Src: /src/lwan/src/lib/lwan-config.c:1012,1
    - Dst: config_last_error
      Src: /src/lwan/src/lib/lwan-config.c:1013,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct parser*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 997
    functionDepth: 2
    functionLinenumber: 997
    functionLinenumberEnd: 1018
    functionName: parser_next
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached:
    - parser_next_internal
    - parse_constants
    - config_last_error
    - streq
    - PARSER_ERROR
    - config_from_parser
    linkageType: ''
    returnType: struct config_line
    signature: struct config_line *parser_next(struct parser *parser)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/lwan/src/lib/lwan-config.c:1028,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-config.c:1030,1
    - Dst: fstat
      Src: /src/lwan/src/lib/lwan-config.c:1034,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-config.c:1035,1
    - Dst: mmap
      Src: /src/lwan/src/lib/lwan-config.c:1039,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-config.c:1040,1
    - Dst: set_vma_anon_name
      Src: /src/lwan/src/lib/lwan-config.c:1044,1
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-config.c:1046,1
    - Dst: munmap
      Src: /src/lwan/src/lib/lwan-config.c:1048,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 3
    argNames:
    - path
    - data
    - size
    argTypes:
    - char*
    - void**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 1020
    functionDepth: 1
    functionLinenumber: 1020
    functionLinenumberEnd: 1056
    functionName: config_open_path
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached:
    - malloc
    - fstat
    - munmap
    - open
    - close
    - mmap
    - lwan_log_perror
    - set_vma_anon_name
    linkageType: ''
    returnType: struct config
    signature: 'struct config *

      config_open_path(const char *path, void **data, size_t *size)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_str_new
      Src: /src/lwan/src/lib/lwan-config.c:1076,1
    - Dst: lwan_strbuf_init
      Src: /src/lwan/src/lib/lwan-config.c:1081,1
    - Dst: config_ring_buffer_init
      Src: /src/lwan/src/lib/lwan-config.c:1082,1
    - Dst: lexeme_ring_buffer_init
      Src: /src/lwan/src/lib/lwan-config.c:1083,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - config
    - data
    - len
    argTypes:
    - struct config*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1086
      start: 1058
    functionDepth: 1
    functionLinenumber: 1058
    functionLinenumberEnd: 1086
    functionName: config_init_data
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached:
    - config_ring_buffer_init
    - hash_str_new
    - lwan_strbuf_init
    - lexeme_ring_buffer_init
    linkageType: ''
    returnType: struct config
    signature: 'struct config *

      config_init_data(struct config *config, const void *data, size_t len)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: config_open_path
      Src: /src/lwan/src/lib/lwan-config.c:1094,1
    - Dst: config_init_data
      Src: /src/lwan/src/lib/lwan-config.c:1095,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1096
      start: 1088
    functionDepth: 2
    functionLinenumber: 1088
    functionLinenumberEnd: 1096
    functionName: config_open
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 1
    functionsReached:
    - config_init_data
    - config_open_path
    linkageType: ''
    returnType: struct config
    signature: struct config *config_open(const char *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-config.c:1101,1
    - Dst: config_init_data
      Src: /src/lwan/src/lib/lwan-config.c:1107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - data
    - len
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1111
      start: 1099
    functionDepth: 2
    functionLinenumber: 1099
    functionLinenumberEnd: 1111
    functionName: config_open_for_fuzzing
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 1
    functionsReached:
    - malloc
    - config_init_data
    linkageType: ''
    returnType: struct config
    signature: struct config *config_open_for_fuzzing(const uint8_t *data, size_t
      len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: munmap
      Src: /src/lwan/src/lib/lwan-config.c:1121,1
    - Dst: hash_unref
      Src: /src/lwan/src/lib/lwan-config.c:1124,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-config.c:1126,1
    - Dst: lwan_strbuf_free
      Src: /src/lwan/src/lib/lwan-config.c:1127,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-config.c:1128,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - config
    argTypes:
    - struct config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1129
      start: 1114
    functionDepth: 1
    functionLinenumber: 1114
    functionLinenumberEnd: 1129
    functionName: config_close
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 2
    functionsReached:
    - lwan_strbuf_free
    - free
    - munmap
    - hash_unref
    linkageType: ''
    returnType: void
    signature: void config_close(struct config *config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: parser_next
      Src: /src/lwan/src/lib/lwan-config.c:1133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conf
    argTypes:
    - struct config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1134
      start: 1131
    functionDepth: 3
    functionLinenumber: 1131
    functionLinenumberEnd: 1134
    functionName: config_read_line
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 3
    functionsReached:
    - parser_next
    linkageType: ''
    returnType: struct config_line
    signature: struct config_line *config_read_line(struct config *conf)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: parser_next
      Src: /src/lwan/src/lib/lwan-config.c:1144,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - config
    argTypes:
    - struct config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1156
      start: 1136
    functionDepth: 3
    functionLinenumber: 1136
    functionLinenumberEnd: 1156
    functionName: find_section_end
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached:
    - parser_next
    linkageType: ''
    returnType: bool
    signature: bool find_section_end(struct config *config)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-config.c:1168,1
    - Dst: memcpy
      Src: /src/lwan/src/lib/lwan-config.c:1172,1
    - Dst: lwan_strbuf_init
      Src: /src/lwan/src/lib/lwan-config.c:1173,1
    - Dst: hash_ref
      Src: /src/lwan/src/lib/lwan-config.c:1175,1
    - Dst: find_section_end
      Src: /src/lwan/src/lib/lwan-config.c:1185,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-config.c:1186,1
    - Dst: config_last_error
      Src: /src/lwan/src/lib/lwan-config.c:1188,1
    - Dst: hash_unref
      Src: /src/lwan/src/lib/lwan-config.c:1190,1
    - Dst: lwan_strbuf_free
      Src: /src/lwan/src/lib/lwan-config.c:1191,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-config.c:1192,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 2
    argNames:
    - current_conf
    - current_line
    argTypes:
    - struct config*
    - struct config_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1201
      start: 1158
    functionDepth: 4
    functionLinenumber: 1158
    functionLinenumberEnd: 1201
    functionName: config_isolate_section
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_free
    - lwan_strbuf_init
    - hash_unref
    - free
    - hash_ref
    - memcpy
    - find_section_end
    - config_last_error
    - malloc
    - config_error
    linkageType: ''
    returnType: struct config
    signature: "struct config *config_isolate_section(struct config *current_conf,\n
      \                                     const struct config_line *current_line)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find_section_end
      Src: /src/lwan/src/lib/lwan-config.c:1208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - conf
    - line
    argTypes:
    - struct config*
    - struct config_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1209
      start: 1203
    functionDepth: 4
    functionLinenumber: 1203
    functionLinenumberEnd: 1209
    functionName: config_skip_section
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 0
    functionsReached:
    - find_section_end
    linkageType: ''
    returnType: bool
    signature: bool config_skip_section(struct config *conf, const struct config_line
      *line)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conf
    argTypes:
    - struct config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1214
      start: 1211
    functionDepth: 0
    functionLinenumber: 1211
    functionLinenumberEnd: 1214
    functionName: config_last_error
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *config_last_error(struct config *conf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conf
    argTypes:
    - struct config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1219
      start: 1216
    functionDepth: 0
    functionLinenumber: 1216
    functionLinenumberEnd: 1219
    functionName: config_cur_line
    functionSourceFile: /src/lwan/src/lib/lwan-config.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int config_cur_line(struct config *conf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 85
    functionName: FOR_EACH_LEXEME
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOR_EACH_LEXEME(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - id
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 87
    functionName: GENERATE_ENUM
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GENERATE_ENUM(id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - id
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 88
    functionName: GENERATE_ARRAY_ITEM
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GENERATE_ARRAY_ITEM(id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_find
      Src: /src/lwan/src/lib/lwan-template.c:196,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - parser
    - var_name
    argTypes:
    - struct parser*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 192
    functionDepth: 1
    functionLinenumber: 192
    functionLinenumberEnd: 202
    functionName: symtab_lookup
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - hash_find
    linkageType: ''
    returnType: struct lwan_var_descriptor
    signature: "struct lwan_var_descriptor *symtab_lookup(struct parser *parser,\n
      \                                                const char *var_name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-template.c:208,1
    - Dst: symtab_lookup
      Src: /src/lwan/src/lib/lwan-template.c:212,1
    - Dst: strndupa
      Src: /src/lwan/src/lib/lwan-template.c:213,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - parser
    - lexeme
    argTypes:
    - struct parser*
    - struct lexeme*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 204
    functionDepth: 2
    functionLinenumber: 204
    functionLinenumberEnd: 214
    functionName: symtab_lookup_lexeme
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - strndupa
    - lwan_log_error
    - symtab_lookup
    linkageType: ''
    returnType: struct lwan_var_descriptor
    signature: 'struct lwan_var_descriptor *

      symtab_lookup_lexeme(struct parser *parser, struct lexeme *lexeme)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-template.c:225,1
    - Dst: hash_str_new
      Src: /src/lwan/src/lib/lwan-template.c:229,1
    - Dst: hash_add
      Src: /src/lwan/src/lib/lwan-template.c:239,1
    - Dst: hash_unref
      Src: /src/lwan/src/lib/lwan-template.c:248,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-template.c:250,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 2
    argNames:
    - parser
    - descriptor
    argTypes:
    - struct parser*
    - struct lwan_var_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 216
    functionDepth: 1
    functionLinenumber: 216
    functionLinenumberEnd: 253
    functionName: symtab_push
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - hash_add
    - free
    - hash_unref
    - malloc
    - hash_str_new
    linkageType: ''
    returnType: int
    signature: "int symtab_push(struct parser *parser,\n                       const
      struct lwan_var_descriptor *descriptor)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-template.c:259,1
    - Dst: hash_unref
      Src: /src/lwan/src/lib/lwan-template.c:261,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-template.c:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct parser*
    assertStmts:
    - condition: (tab)
      pos:
        line_end: 258
        line_start: 258
        source_file: /src/lwan/src/lib/lwan-template.c
    constantsTouched: []
    func_position:
      end: 264
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 264
    functionName: symtab_pop
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - free
    - assert
    - hash_unref
    linkageType: ''
    returnType: void
    signature: void symtab_pop(struct parser *parser)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lexeme_ring_buffer_put
      Src: /src/lwan/src/lib/lwan-template.c:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - lexer
    - lexeme
    argTypes:
    - struct lexer*
    - struct lexeme*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 270
    functionName: emit_lexeme
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 1
    functionsReached:
    - lexeme_ring_buffer_put
    linkageType: ''
    returnType: void
    signature: void emit_lexeme(struct lexer *lexer, struct lexeme *lexeme)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: emit_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lexer
    - lexeme_type
    argTypes:
    - struct lexer*
    - enum lexeme_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 282
    functionName: emit
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 8
    functionsReached:
    - emit_lexeme
    linkageType: ''
    returnType: void
    signature: void emit(struct lexer *lexer, enum lexeme_type lexeme_type)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 291
    functionName: next
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int next(struct lexer *lexer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 293
    functionDepth: 0
    functionLinenumber: 293
    functionLinenumberEnd: 296
    functionName: remaining
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t remaining(struct lexer *lexer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: remaining
      Src: /src/lwan/src/lib/lwan-template.c:300,1
    - Dst: strncmp
      Src: /src/lwan/src/lib/lwan-template.c:303,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - lexer
    - str
    - s
    argTypes:
    - struct lexer*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 304
    functionName: lex_streq
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 2
    functionsReached:
    - strncmp
    - remaining
    linkageType: ''
    returnType: bool
    signature: bool lex_streq(struct lexer *lexer, const char *str, size_t s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 306
    functionName: ignore
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ignore(struct lexer *lexer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 308
    functionName: backup
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void backup(struct lexer *lexer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vasprintf
      Src: /src/lwan/src/lib/lwan-template.c:318,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan-template.c:320,1
    - Dst: strerror
      Src: /src/lwan/src/lib/lwan-template.c:320,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-template.c:324,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-template.c:329,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-template.c:330,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - lexeme
    - msg
    - ap
    argTypes:
    - struct lexeme*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 331
    functionName: error_vlexeme
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - strdup
    - strerror
    - free
    - vasprintf
    - strlen
    - lwan_log_error
    linkageType: ''
    returnType: void
    signature: void error_vlexeme(struct lexeme *lexeme, const char *msg, va_list
      ap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/lwan/src/lib/lwan-template.c:337,1
    - Dst: error_vlexeme
      Src: /src/lwan/src/lib/lwan-template.c:338,1
    - Dst: va_end
      Src: /src/lwan/src/lib/lwan-template.c:339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - lexeme
    - msg
    argTypes:
    - struct lexeme*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 333
    functionDepth: 2
    functionLinenumber: 333
    functionLinenumberEnd: 342
    functionName: error_lexeme
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - va_end
    - va_start
    - error_vlexeme
    linkageType: ''
    returnType: void
    signature: void *error_lexeme(struct lexeme *lexeme, const char *msg, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/lwan/src/lib/lwan-template.c:349,1
    - Dst: error_vlexeme
      Src: /src/lwan/src/lib/lwan-template.c:350,1
    - Dst: va_end
      Src: /src/lwan/src/lib/lwan-template.c:351,1
    - Dst: emit_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - lexer
    - msg
    argTypes:
    - struct lexer*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 344
    functionDepth: 2
    functionLinenumber: 344
    functionLinenumberEnd: 355
    functionName: lex_error
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - va_end
    - emit_lexeme
    - va_start
    - error_vlexeme
    linkageType: ''
    returnType: void
    signature: void *lex_error(struct lexer *lexer, const char *msg, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isalnum
      Src: /src/lwan/src/lib/lwan-template.c:359,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 360
    functionName: is_ident
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - isalnum
    linkageType: ''
    returnType: bool
    signature: bool is_ident(int ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: is_ident
      Src: /src/lwan/src/lib/lwan-template.c:364,1
    - Dst: next
      Src: /src/lwan/src/lib/lwan-template.c:364,1
    - Dst: backup
      Src: /src/lwan/src/lib/lwan-template.c:366,1
    - Dst: emit
      Src: /src/lwan/src/lib/lwan-template.c:367,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 362
    functionDepth: 1
    functionLinenumber: 362
    functionLinenumberEnd: 369
    functionName: lex_identifier
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - backup
    - emit
    - is_ident
    - next
    linkageType: ''
    returnType: void
    signature: void *lex_identifier(struct lexer *lexer)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/lwan/src/lib/lwan-template.c:374,1
    - Dst: lex_error
      Src: /src/lwan/src/lib/lwan-template.c:377,1
    - Dst: lex_error
      Src: /src/lwan/src/lib/lwan-template.c:379,1
    - Dst: isspace
      Src: /src/lwan/src/lib/lwan-template.c:380,1
    - Dst: ignore
      Src: /src/lwan/src/lib/lwan-template.c:381,1
    - Dst: is_ident
      Src: /src/lwan/src/lib/lwan-template.c:384,1
    - Dst: backup
      Src: /src/lwan/src/lib/lwan-template.c:385,1
    - Dst: lex_error
      Src: /src/lwan/src/lib/lwan-template.c:388,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 371
    functionDepth: 3
    functionLinenumber: 371
    functionLinenumberEnd: 390
    functionName: lex_partial
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - isspace
    - next
    - lex_error
    - backup
    - is_ident
    - ignore
    linkageType: ''
    returnType: void
    signature: void *lex_partial(struct lexer *lexer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: emit
      Src: /src/lwan/src/lib/lwan-template.c:396,1
    - Dst: lex_identifier
      Src: /src/lwan/src/lib/lwan-template.c:397,1
    - Dst: next
      Src: /src/lwan/src/lib/lwan-template.c:399,1
    - Dst: lex_error
      Src: /src/lwan/src/lib/lwan-template.c:401,1
    - Dst: emit
      Src: /src/lwan/src/lib/lwan-template.c:403,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 392
    functionDepth: 3
    functionLinenumber: 392
    functionLinenumberEnd: 405
    functionName: lex_quoted_identifier
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - lex_error
    - emit
    - lex_identifier
    - next
    linkageType: ''
    returnType: void
    signature: void *lex_quoted_identifier(struct lexer *lexer)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-template.c:409,1
    - Dst: next
      Src: /src/lwan/src/lib/lwan-template.c:412,1
    - Dst: lex_error
      Src: /src/lwan/src/lib/lwan-template.c:418,1
    - Dst: ignore
      Src: /src/lwan/src/lib/lwan-template.c:422,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 407
    functionDepth: 3
    functionLinenumber: 407
    functionLinenumberEnd: 424
    functionName: lex_comment
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - lex_error
    - ignore
    - strlen
    - next
    linkageType: ''
    returnType: void
    signature: void *lex_comment(struct lexer *lexer)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: lex_streq
      Src: /src/lwan/src/lib/lwan-template.c:431,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-template.c:431,1
    - Dst: next
      Src: /src/lwan/src/lib/lwan-template.c:434,1
    - Dst: lex_error
      Src: /src/lwan/src/lib/lwan-template.c:437,1
    - Dst: lex_error
      Src: /src/lwan/src/lib/lwan-template.c:439,1
    - Dst: emit
      Src: /src/lwan/src/lib/lwan-template.c:441,1
    - Dst: emit
      Src: /src/lwan/src/lib/lwan-template.c:444,1
    - Dst: emit
      Src: /src/lwan/src/lib/lwan-template.c:447,1
    - Dst: emit
      Src: /src/lwan/src/lib/lwan-template.c:450,1
    - Dst: emit
      Src: /src/lwan/src/lib/lwan-template.c:455,1
    - Dst: isspace
      Src: /src/lwan/src/lib/lwan-template.c:458,1
    - Dst: ignore
      Src: /src/lwan/src/lib/lwan-template.c:459,1
    - Dst: is_ident
      Src: /src/lwan/src/lib/lwan-template.c:462,1
    - Dst: backup
      Src: /src/lwan/src/lib/lwan-template.c:463,1
    - Dst: lex_error
      Src: /src/lwan/src/lib/lwan-template.c:467,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 426
    functionDepth: 3
    functionLinenumber: 426
    functionLinenumberEnd: 472
    functionName: lex_inside_action
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - isspace
    - lex_error
    - emit
    - strlen
    - lex_streq
    - ignore
    - backup
    - is_ident
    - next
    linkageType: ''
    returnType: void
    signature: void *lex_inside_action(struct lexer *lexer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-template.c:476,1
    - Dst: next
      Src: /src/lwan/src/lib/lwan-template.c:477,1
    - Dst: backup
      Src: /src/lwan/src/lib/lwan-template.c:480,1
    - Dst: emit
      Src: /src/lwan/src/lib/lwan-template.c:482,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 474
    functionDepth: 0
    functionLinenumber: 474
    functionLinenumberEnd: 484
    functionName: lex_left_meta
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - emit
    - backup
    - strlen
    - next
    linkageType: ''
    returnType: void
    signature: void *lex_left_meta(struct lexer *lexer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-template.c:488,1
    - Dst: emit
      Src: /src/lwan/src/lib/lwan-template.c:489,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 486
    functionDepth: 0
    functionLinenumber: 486
    functionLinenumberEnd: 491
    functionName: lex_right_meta
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - strlen
    - emit
    linkageType: ''
    returnType: void
    signature: void *lex_right_meta(struct lexer *lexer)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lex_streq
      Src: /src/lwan/src/lib/lwan-template.c:496,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-template.c:496,1
    - Dst: emit
      Src: /src/lwan/src/lib/lwan-template.c:498,1
    - Dst: lex_streq
      Src: /src/lwan/src/lib/lwan-template.c:502,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-template.c:502,1
    - Dst: lex_error
      Src: /src/lwan/src/lib/lwan-template.c:503,1
    - Dst: next
      Src: /src/lwan/src/lib/lwan-template.c:504,1
    - Dst: emit
      Src: /src/lwan/src/lib/lwan-template.c:506,1
    - Dst: emit
      Src: /src/lwan/src/lib/lwan-template.c:507,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 493
    functionDepth: 3
    functionLinenumber: 493
    functionLinenumberEnd: 509
    functionName: lex_text
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - lex_error
    - emit
    - strlen
    - lex_streq
    - next
    linkageType: ''
    returnType: void
    signature: void *lex_text(struct lexer *lexer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lexeme_ring_buffer_get_ptr_or_null
      Src: /src/lwan/src/lib/lwan-template.c:516,1
    - Dst: struct lexer*::state
      Src: /src/lwan/src/lib/lwan-template.c:519,1
    - Dst: lexeme_ring_buffer_get_ptr_or_null
      Src: /src/lwan/src/lib/lwan-template.c:522,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 511
    functionDepth: 0
    functionLinenumber: 511
    functionLinenumberEnd: 523
    functionName: lex_next_fsm_loop
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - struct lexer*::state
    - lexeme_ring_buffer_get_ptr_or_null
    linkageType: ''
    returnType: struct lexeme
    signature: struct lexeme *lex_next_fsm_loop(struct lexer *lexer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lex_next_fsm_loop
      Src: /src/lwan/src/lib/lwan-template.c:527,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - lexer
    argTypes:
    - struct lexer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 525
    functionDepth: 1
    functionLinenumber: 525
    functionLinenumberEnd: 533
    functionName: lex_next
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 2
    functionsReached:
    - lex_next_fsm_loop
    linkageType: ''
    returnType: struct lexeme
    signature: struct lexeme *lex_next(struct lexer *lexer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lexeme_ring_buffer_init
      Src: /src/lwan/src/lib/lwan-template.c:540,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - lexer
    - input
    argTypes:
    - struct lexer*
    - struct lwan_value
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 535
    functionDepth: 0
    functionLinenumber: 535
    functionLinenumberEnd: 541
    functionName: lex_init
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - lexeme_ring_buffer_init
    linkageType: ''
    returnType: void
    signature: void lex_init(struct lexer *lexer, struct lwan_value input)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: error_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:548,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - lexeme
    argTypes:
    - struct lexeme*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 543
    functionDepth: 3
    functionLinenumber: 543
    functionLinenumberEnd: 551
    functionName: unexpected_lexeme
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - error_lexeme
    linkageType: ''
    returnType: void
    signature: void *unexpected_lexeme(struct lexeme *lexeme)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-template.c:555,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan-template.c:557,1
    - Dst: list_add
      Src: /src/lwan/src/lib/lwan-template.c:560,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - parser
    - lexeme
    argTypes:
    - struct parser*
    - struct lexeme*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 553
    functionDepth: 1
    functionLinenumber: 553
    functionLinenumberEnd: 561
    functionName: parser_push_lexeme
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - malloc
    - lwan_log_critical_perror
    - list_add
    linkageType: ''
    returnType: void
    signature: void parser_push_lexeme(struct parser *parser, struct lexeme *lexeme)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: chunk_array_append
      Src: /src/lwan/src/lib/lwan-template.c:570,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan-template.c:572,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - parser
    - action
    - flags
    - data
    argTypes:
    - struct parser*
    - enum action
    - enum flags
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 563
    functionDepth: 1
    functionLinenumber: 563
    functionLinenumberEnd: 577
    functionName: emit_chunk
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - chunk_array_append
    - lwan_log_critical_perror
    linkageType: ''
    returnType: void
    signature: "void emit_chunk(struct parser *parser,\n                       enum
      action action,\n                       enum flags flags,\n                       void
      *data)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_empty
      Src: /src/lwan/src/lib/lwan-template.c:583,1
    - Dst: error_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:584,1
    - Dst: memcmp
      Src: /src/lwan/src/lib/lwan-template.c:593,1
    - Dst: list_del
      Src: /src/lwan/src/lib/lwan-template.c:596,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-template.c:597,1
    - Dst: error_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:601,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - parser
    - lexeme
    - type
    argTypes:
    - struct parser*
    - struct lexeme*
    - enum lexeme_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 579
    functionDepth: 3
    functionLinenumber: 579
    functionLinenumberEnd: 607
    functionName: parser_stack_top_matches
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - free
    - list_empty
    - list_del
    - error_lexeme
    - memcmp
    linkageType: ''
    returnType: bool
    signature: "bool parser_stack_top_matches(struct parser *parser,\n                                     struct
      lexeme *lexeme,\n                                     enum lexeme_type type)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unexpected_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:613,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - parser
    - lexeme
    argTypes:
    - struct parser*
    - struct lexeme*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 609
    functionDepth: 4
    functionLinenumber: 609
    functionLinenumberEnd: 615
    functionName: parser_right_meta
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - unexpected_lexeme
    linkageType: ''
    returnType: void
    signature: "void *parser_right_meta(struct parser *parser __attribute__((unused)),\n
      \                              struct lexeme *lexeme)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: parser_stack_top_matches
      Src: /src/lwan/src/lib/lwan-template.c:622,1
    - Dst: symtab_lookup_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:625,1
    - Dst: error_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:627,1
    - Dst: LWAN_ARRAY_FOREACH_REVERSE
      Src: /src/lwan/src/lib/lwan-template.c:631,1
    - Dst: chunk_array_get_elem_index
      Src: /src/lwan/src/lib/lwan-template.c:635,1
    - Dst: emit_chunk
      Src: /src/lwan/src/lib/lwan-template.c:637,1
    - Dst: symtab_pop
      Src: /src/lwan/src/lib/lwan-template.c:638,1
    - Dst: error_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:644,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - parser
    - lexeme
    argTypes:
    - struct parser*
    - struct lexeme*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 617
    functionDepth: 4
    functionLinenumber: 617
    functionLinenumberEnd: 646
    functionName: parser_end_iter
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - symtab_pop
    - parser_stack_top_matches
    - symtab_lookup_lexeme
    - emit_chunk
    - error_lexeme
    - LWAN_ARRAY_FOREACH_REVERSE
    - chunk_array_get_elem_index
    linkageType: ''
    returnType: void
    signature: void *parser_end_iter(struct parser *parser, struct lexeme *lexeme)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: parser_stack_top_matches
      Src: /src/lwan/src/lib/lwan-template.c:654,1
    - Dst: symtab_lookup_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:657,1
    - Dst: error_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:659,1
    - Dst: error_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:664,1
    - Dst: LWAN_ARRAY_FOREACH_REVERSE
      Src: /src/lwan/src/lib/lwan-template.c:668,1
    - Dst: emit_chunk
      Src: /src/lwan/src/lib/lwan-template.c:672,1
    - Dst: error_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:677,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - parser
    - lexeme
    argTypes:
    - struct parser*
    - struct lexeme*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 648
    functionDepth: 4
    functionLinenumber: 648
    functionLinenumberEnd: 679
    functionName: parser_end_var_not_empty
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - parser_stack_top_matches
    - symtab_lookup_lexeme
    - emit_chunk
    - error_lexeme
    - LWAN_ARRAY_FOREACH_REVERSE
    linkageType: ''
    returnType: void
    signature: "void *parser_end_var_not_empty(struct parser *parser,\n                                      struct
      lexeme *lexeme)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lex_next
      Src: /src/lwan/src/lib/lwan-template.c:686,1
    - Dst: parser_end_iter
      Src: /src/lwan/src/lib/lwan-template.c:688,1
    - Dst: parser_end_var_not_empty
      Src: /src/lwan/src/lib/lwan-template.c:691,1
    - Dst: unexpected_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:693,1
    - Dst: unexpected_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:697,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - parser
    - lexeme
    argTypes:
    - struct parser*
    - struct lexeme*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 681
    functionDepth: 5
    functionLinenumber: 681
    functionLinenumberEnd: 698
    functionName: parser_slash
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - parser_end_var_not_empty
    - lex_next
    - parser_end_iter
    - unexpected_lexeme
    linkageType: ''
    returnType: void
    signature: void *parser_slash(struct parser *parser, struct lexeme *lexeme)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: symtab_lookup_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:705,1
    - Dst: error_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:707,1
    - Dst: symtab_push
      Src: /src/lwan/src/lib/lwan-template.c:711,1
    - Dst: error_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:714,1
    - Dst: error_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:718,1
    - Dst: emit_chunk
      Src: /src/lwan/src/lib/lwan-template.c:722,1
    - Dst: parser_push_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:724,1
    - Dst: unexpected_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:729,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - parser
    - lexeme
    argTypes:
    - struct parser*
    - struct lexeme*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 700
    functionDepth: 4
    functionLinenumber: 700
    functionLinenumberEnd: 730
    functionName: parser_iter
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - symtab_lookup_lexeme
    - unexpected_lexeme
    - emit_chunk
    - error_lexeme
    - symtab_push
    - parser_push_lexeme
    linkageType: ''
    returnType: void
    signature: void *parser_iter(struct parser *parser, struct lexeme *lexeme)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: unexpected_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:736,1
    - Dst: parser_identifier
      Src: /src/lwan/src/lib/lwan-template.c:744,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - parser
    - lexeme
    argTypes:
    - struct parser*
    - struct lexeme*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 732
    functionDepth: 4
    functionLinenumber: 732
    functionLinenumberEnd: 746
    functionName: parser_negate
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - parser_identifier
    - unexpected_lexeme
    linkageType: ''
    returnType: void
    signature: void *parser_negate(struct parser *parser, struct lexeme *lexeme)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: lex_next
      Src: /src/lwan/src/lib/lwan-template.c:752,1
    - Dst: error_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:757,1
    - Dst: lex_next
      Src: /src/lwan/src/lib/lwan-template.c:758,1
    - Dst: unexpected_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:759,1
    - Dst: symtab_lookup_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:764,1
    - Dst: error_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:766,1
    - Dst: emit_chunk
      Src: /src/lwan/src/lib/lwan-template.c:771,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-template.c:772,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-template.c:773,1
    - Dst: emit_chunk
      Src: /src/lwan/src/lib/lwan-template.c:775,1
    - Dst: symtab_lookup_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:786,1
    - Dst: error_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:788,1
    - Dst: emit_chunk
      Src: /src/lwan/src/lib/lwan-template.c:797,1
    - Dst: parser_push_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:798,1
    - Dst: unexpected_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:805,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 2
    argNames:
    - parser
    - lexeme
    argTypes:
    - struct parser*
    - struct lexeme*
    assertStmts:
    - condition: (!symbol->get_is_empty)
      pos:
        line_end: 771
        line_start: 771
        source_file: /src/lwan/src/lib/lwan-template.c
    - condition: (!symbol->list_desc)
      pos:
        line_end: 772
        line_start: 772
        source_file: /src/lwan/src/lib/lwan-template.c
    constantsTouched: []
    func_position:
      end: 806
      start: 748
    functionDepth: 4
    functionLinenumber: 748
    functionLinenumberEnd: 806
    functionName: parser_identifier
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 1
    functionsReached:
    - lex_next
    - symtab_lookup_lexeme
    - unexpected_lexeme
    - emit_chunk
    - error_lexeme
    - parser_push_lexeme
    - assert
    linkageType: ''
    returnType: void
    signature: void *parser_identifier(struct parser *parser, struct lexeme *lexeme)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strndupa
      Src: /src/lwan/src/lib/lwan-template.c:811,1
    - Dst: unexpected_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:814,1
    - Dst: lwan_tpl_compile_file
      Src: /src/lwan/src/lib/lwan-template.c:816,1
    - Dst: emit_chunk
      Src: /src/lwan/src/lib/lwan-template.c:818,1
    - Dst: error_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:822,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - parser
    - lexeme
    argTypes:
    - struct parser*
    - struct lexeme*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 808
    functionDepth: 4
    functionLinenumber: 808
    functionLinenumberEnd: 823
    functionName: parser_partial
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - unexpected_lexeme
    - emit_chunk
    - error_lexeme
    - strndupa
    - lwan_tpl_compile_file
    linkageType: ''
    returnType: void
    signature: void *parser_partial(struct parser *parser, struct lexeme *lexeme)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: unexpected_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:829,1
    - Dst: unexpected_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:833,1
    - Dst: parser_identifier
      Src: /src/lwan/src/lib/lwan-template.c:839,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - parser
    - lexeme
    argTypes:
    - struct parser*
    - struct lexeme*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 825
    functionDepth: 5
    functionLinenumber: 825
    functionLinenumberEnd: 853
    functionName: parser_meta
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - parser_identifier
    - unexpected_lexeme
    linkageType: ''
    returnType: void
    signature: void *parser_meta(struct parser *parser, struct lexeme *lexeme)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_new_static
      Src: /src/lwan/src/lib/lwan-template.c:859,1
    - Dst: lwan_strbuf_new_with_size
      Src: /src/lwan/src/lib/lwan-template.c:861,1
    - Dst: lwan_strbuf_set
      Src: /src/lwan/src/lib/lwan-template.c:863,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - parser
    - lexeme
    argTypes:
    - struct parser*
    - struct lexeme*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 866
      start: 855
    functionDepth: 1
    functionLinenumber: 855
    functionLinenumberEnd: 866
    functionName: lwan_strbuf_from_lexeme
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_set
    - lwan_strbuf_new_static
    - lwan_strbuf_new_with_size
    linkageType: ''
    returnType: struct lwan_strbuf
    signature: "struct lwan_strbuf *lwan_strbuf_from_lexeme(struct parser *parser,\n
      \                                                  struct lexeme *lexeme)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_from_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:875,1
    - Dst: error_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:877,1
    - Dst: emit_chunk
      Src: /src/lwan/src/lib/lwan-template.c:879,1
    - Dst: LWAN_MIN
      Src: /src/lwan/src/lib/lwan-template.c:884,1
    - Dst: strncpy
      Src: /src/lwan/src/lib/lwan-template.c:892,1
    - Dst: emit_chunk
      Src: /src/lwan/src/lib/lwan-template.c:895,1
    - Dst: emit_chunk
      Src: /src/lwan/src/lib/lwan-template.c:906,1
    - Dst: unexpected_lexeme
      Src: /src/lwan/src/lib/lwan-template.c:910,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 2
    argNames:
    - parser
    - lexeme
    argTypes:
    - struct parser*
    - struct lexeme*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 868
    functionDepth: 4
    functionLinenumber: 868
    functionLinenumberEnd: 911
    functionName: parser_text
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_from_lexeme
    - unexpected_lexeme
    - emit_chunk
    - error_lexeme
    - LWAN_MIN
    - strncpy
    linkageType: ''
    returnType: void
    signature: void *parser_text(struct parser *parser, struct lexeme *lexeme)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: int_to_string
      Src: /src/lwan/src/lib/lwan-template.c:919,1
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/lib/lwan-template.c:920,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buf
    - ptr
    argTypes:
    - struct lwan_strbuf*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 921
      start: 913
    functionDepth: 1
    functionLinenumber: 913
    functionLinenumberEnd: 921
    functionName: lwan_append_int_to_strbuf
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - int_to_string
    - lwan_strbuf_append_str
    linkageType: ''
    returnType: void
    signature: void lwan_append_int_to_strbuf(struct lwan_strbuf *buf, void *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 923
    functionDepth: 0
    functionLinenumber: 923
    functionLinenumberEnd: 923
    functionName: lwan_tpl_int_is_empty
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool lwan_tpl_int_is_empty(void *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_append_printf
      Src: /src/lwan/src/lib/lwan-template.c:927,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buf
    - ptr
    argTypes:
    - struct lwan_strbuf*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 928
      start: 925
    functionDepth: 1
    functionLinenumber: 925
    functionLinenumberEnd: 928
    functionName: lwan_append_double_to_strbuf
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_append_printf
    linkageType: ''
    returnType: void
    signature: void lwan_append_double_to_strbuf(struct lwan_strbuf *buf, void *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_fpclassify
      Src: /src/lwan/src/lib/lwan-template.c:933,1
    - Dst: fpclassify
      Src: /src/lwan/src/lib/lwan-template.c:936,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 930
    functionDepth: 0
    functionLinenumber: 930
    functionLinenumberEnd: 938
    functionName: lwan_tpl_double_is_empty
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - fpclassify
    - __builtin_fpclassify
    linkageType: ''
    returnType: bool
    signature: bool lwan_tpl_double_is_empty(void *ptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-template.c:944,1
    - Dst: lwan_strbuf_append_strz
      Src: /src/lwan/src/lib/lwan-template.c:945,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - buf
    - ptr
    argTypes:
    - struct lwan_strbuf*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 946
      start: 940
    functionDepth: 1
    functionLinenumber: 940
    functionLinenumberEnd: 946
    functionName: lwan_append_str_to_strbuf
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - LIKELY
    - lwan_strbuf_append_strz
    linkageType: ''
    returnType: void
    signature: void lwan_append_str_to_strbuf(struct lwan_strbuf *buf, void *ptr)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: _mm_set1_epi8
      Src: /src/lwan/src/lib/lwan-template.c:958,1
    - Dst: _mm_set_epi8
      Src: /src/lwan/src/lib/lwan-template.c:960,1
    - Dst: __builtin_ffs
      Src: /src/lwan/src/lib/lwan-template.c:962,1
    - Dst: _mm_movemask_epi8
      Src: /src/lwan/src/lib/lwan-template.c:962,1
    - Dst: _mm_cmpeq_epi8
      Src: /src/lwan/src/lib/lwan-template.c:962,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 1
    argNames:
    - ch
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 952
    functionDepth: 0
    functionLinenumber: 952
    functionLinenumberEnd: 981
    functionName: escaped_index
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - _mm_cmpeq_epi8
    - _mm_movemask_epi8
    - _mm_set_epi8
    - __builtin_ffs
    - _mm_set1_epi8
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE escaped_index(char ch)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-template.c:995,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-template.c:999,1
    - Dst: escaped_index
      Src: /src/lwan/src/lib/lwan-template.c:1004,1
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/lib/lwan-template.c:1007,1
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/lib/lwan-template.c:1010,1
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/lib/lwan-template.c:1015,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - buf
    - ptr
    argTypes:
    - struct lwan_strbuf*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1016
      start: 983
    functionDepth: 1
    functionLinenumber: 983
    functionLinenumberEnd: 1016
    functionName: lwan_append_str_escaped_to_strbuf
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - UNLIKELY
    - lwan_strbuf_append_str
    - escaped_index
    linkageType: ''
    returnType: void
    signature: void lwan_append_str_escaped_to_strbuf(struct lwan_strbuf *buf, void
      *ptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-template.c:1020,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1025
      start: 1018
    functionDepth: 0
    functionLinenumber: 1018
    functionLinenumberEnd: 1025
    functionName: lwan_tpl_str_is_empty
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - UNLIKELY
    linkageType: ''
    returnType: bool
    signature: bool lwan_tpl_str_is_empty(void *ptr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LWAN_ARRAY_FOREACH
      Src: /src/lwan/src/lib/lwan-template.c:1035,1
    - Dst: unbake_direct_addresses
      Src: /src/lwan/src/lib/lwan-template.c:1042,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 1
    argNames:
    - tpl
    argTypes:
    - struct lwan_tpl*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 1027
    functionDepth: 1
    functionLinenumber: 1027
    functionLinenumberEnd: 1047
    functionName: unbake_direct_addresses
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 1
    functionsReached:
    - unbake_direct_addresses
    - LWAN_ARRAY_FOREACH
    linkageType: ''
    returnType: void
    signature: void unbake_direct_addresses(struct lwan_tpl *tpl)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/lwan/src/lib/lwan-template.c:1069,1
    - Dst: lwan_strbuf_free
      Src: /src/lwan/src/lib/lwan-template.c:1072,1
    - Dst: lwan_tpl_free
      Src: /src/lwan/src/lib/lwan-template.c:1075,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - chunk
    argTypes:
    - struct chunk*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1078
      start: 1049
    functionDepth: 1
    functionLinenumber: 1049
    functionLinenumberEnd: 1078
    functionName: free_chunk
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_free
    - lwan_tpl_free
    - free
    linkageType: ''
    returnType: void
    signature: void free_chunk(struct chunk *chunk)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWAN_ARRAY_FOREACH
      Src: /src/lwan/src/lib/lwan-template.c:1084,1
    - Dst: free_chunk
      Src: /src/lwan/src/lib/lwan-template.c:1085,1
    - Dst: chunk_array_reset
      Src: /src/lwan/src/lib/lwan-template.c:1086,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - array
    argTypes:
    - struct chunk_array*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1087
      start: 1080
    functionDepth: 2
    functionLinenumber: 1080
    functionLinenumberEnd: 1087
    functionName: free_chunk_array
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - chunk_array_reset
    - free_chunk
    - LWAN_ARRAY_FOREACH
    linkageType: ''
    returnType: void
    signature: void free_chunk_array(struct chunk_array *array)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unbake_direct_addresses
      Src: /src/lwan/src/lib/lwan-template.c:1092,1
    - Dst: free_chunk_array
      Src: /src/lwan/src/lib/lwan-template.c:1093,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-template.c:1094,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - tpl
    argTypes:
    - struct lwan_tpl*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1096
      start: 1089
    functionDepth: 3
    functionLinenumber: 1089
    functionLinenumberEnd: 1096
    functionName: lwan_tpl_free
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 5
    functionsReached:
    - free_chunk_array
    - unbake_direct_addresses
    - free
    linkageType: ''
    returnType: void
    signature: void lwan_tpl_free(struct lwan_tpl *tpl)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: chunk_array_get_elem
      Src: /src/lwan/src/lib/lwan-template.c:1101,1
    - Dst: chunk_array_len
      Src: /src/lwan/src/lib/lwan-template.c:1101,1
    - Dst: LWAN_ARRAY_FOREACH
      Src: /src/lwan/src/lib/lwan-template.c:1105,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-template.c:1111,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-template.c:1120,1
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-template.c:1122,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan-template.c:1124,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-template.c:1139,1
    - Dst: chunk_array_get_elem_index
      Src: /src/lwan/src/lib/lwan-template.c:1146,1
    - Dst: chunk_array_get_elem
      Src: /src/lwan/src/lib/lwan-template.c:1151,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-template.c:1157,1
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-template.c:1159,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan-template.c:1161,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-template.c:1184,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-template.c:1187,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-template.c:1200,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 77
    argCount: 1
    argNames:
    - parser
    argTypes:
    - struct parser*
    assertStmts:
    - condition: (prev_chunk->flags & FLAGS_NO_FREE)
      pos:
        line_end: 1119
        line_start: 1119
        source_file: /src/lwan/src/lib/lwan-template.c
    - condition: (prev_chunk->flags & FLAGS_NO_FREE)
      pos:
        line_end: 1156
        line_start: 1156
        source_file: /src/lwan/src/lib/lwan-template.c
    constantsTouched: []
    func_position:
      end: 1202
      start: 1098
    functionDepth: 1
    functionLinenumber: 1098
    functionLinenumberEnd: 1202
    functionName: post_process_template
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - chunk_array_get_elem
    - chunk_array_len
    - LWAN_ARRAY_FOREACH
    - lwan_log_critical_perror
    - assert
    - malloc
    - lwan_log_error
    - chunk_array_get_elem_index
    linkageType: ''
    returnType: bool
    signature: bool post_process_template(struct parser *parser)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: symtab_push
      Src: /src/lwan/src/lib/lwan-template.c:1208,1
    - Dst: chunk_array_init
      Src: /src/lwan/src/lib/lwan-template.c:1211,1
    - Dst: lex_init
      Src: /src/lwan/src/lib/lwan-template.c:1214,1
    - Dst: list_head_init
      Src: /src/lwan/src/lib/lwan-template.c:1215,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - parser
    - descriptor
    - value
    argTypes:
    - struct parser*
    - struct lwan_var_descriptor*
    - struct lwan_value
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1218
      start: 1204
    functionDepth: 2
    functionLinenumber: 1204
    functionLinenumberEnd: 1218
    functionName: parser_init
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - lex_init
    - chunk_array_init
    - list_head_init
    - symtab_push
    linkageType: ''
    returnType: bool
    signature: "bool parser_init(struct parser *parser,\n                        const
      struct lwan_var_descriptor *descriptor,\n                        struct lwan_value
      value)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-template.c:1225,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-template.c:1227,1
    - Dst: list_empty
      Src: /src/lwan/src/lib/lwan-template.c:1232,1
    - Dst: list_for_each_safe
      Src: /src/lwan/src/lib/lwan-template.c:1235,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-template.c:1236,1
    - Dst: list_del
      Src: /src/lwan/src/lib/lwan-template.c:1239,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-template.c:1240,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-template.c:1247,1
    - Dst: symtab_pop
      Src: /src/lwan/src/lib/lwan-template.c:1251,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-template.c:1253,1
    - Dst: symtab_pop
      Src: /src/lwan/src/lib/lwan-template.c:1257,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-template.c:1264,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-template.c:1268,1
    - Dst: post_process_template
      Src: /src/lwan/src/lib/lwan-template.c:1272,1
    - Dst: free_chunk_array
      Src: /src/lwan/src/lib/lwan-template.c:1275,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 2
    argNames:
    - parser
    - lexeme
    argTypes:
    - struct parser*
    - struct lexeme*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1278
      start: 1220
    functionDepth: 3
    functionLinenumber: 1220
    functionLinenumberEnd: 1278
    functionName: parser_shutdown
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - symtab_pop
    - list_for_each_safe
    - free
    - list_empty
    - list_del
    - post_process_template
    - free_chunk_array
    - lwan_log_error
    linkageType: ''
    returnType: bool
    signature: bool parser_shutdown(struct parser *parser, struct lexeme *lexeme)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: parser_init
      Src: /src/lwan/src/lib/lwan-template.c:1294,1
    - Dst: lex_next
      Src: /src/lwan/src/lib/lwan-template.c:1298,1
    - Dst: state
      Src: /src/lwan/src/lib/lwan-template.c:1301,1
    - Dst: parser_shutdown
      Src: /src/lwan/src/lib/lwan-template.c:1304,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 4
    argNames:
    - tpl
    - value
    - descriptor
    - flags
    argTypes:
    - struct lwan_tpl*
    - struct lwan_value
    - struct lwan_var_descriptor*
    - enum lwan_tpl_flag
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1305
      start: 1280
    functionDepth: 4
    functionLinenumber: 1280
    functionLinenumberEnd: 1305
    functionName: parse_value
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - lex_next
    - state
    - parser_shutdown
    - parser_init
    linkageType: ''
    returnType: bool
    signature: "bool parse_value(struct lwan_tpl *tpl,\n                        struct
      lwan_value value,\n                        const struct lwan_var_descriptor
      *descriptor,\n                        enum lwan_tpl_flag flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/lwan/src/lib/lwan-template.c:1310,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - name
    - buf
    argTypes:
    - char*
    - char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1316
      start: 1308
    functionDepth: 0
    functionLinenumber: 1308
    functionLinenumberEnd: 1316
    functionName: instr
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: char *instr(const char *name, char buf[static 32])
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: LWAN_ARRAY_FOREACH
      Src: /src/lwan/src/lib/lwan-template.c:1326,1
    - Dst: printf
      Src: /src/lwan/src/lib/lwan-template.c:1329,1
    - Dst: printf
      Src: /src/lwan/src/lib/lwan-template.c:1334,1
    - Dst: printf
      Src: /src/lwan/src/lib/lwan-template.c:1344,1
    - Dst: instr
      Src: /src/lwan/src/lib/lwan-template.c:1344,1
    - Dst: lwan_strbuf_get_length
      Src: /src/lwan/src/lib/lwan-template.c:1345,1
    - Dst: lwan_strbuf_get_buffer
      Src: /src/lwan/src/lib/lwan-template.c:1346,1
    - Dst: strnlen
      Src: /src/lwan/src/lib/lwan-template.c:1350,1
    - Dst: printf
      Src: /src/lwan/src/lib/lwan-template.c:1352,1
    - Dst: instr
      Src: /src/lwan/src/lib/lwan-template.c:1352,1
    - Dst: printf
      Src: /src/lwan/src/lib/lwan-template.c:1358,1
    - Dst: instr
      Src: /src/lwan/src/lib/lwan-template.c:1358,1
    - Dst: printf
      Src: /src/lwan/src/lib/lwan-template.c:1364,1
    - Dst: instr
      Src: /src/lwan/src/lib/lwan-template.c:1364,1
    - Dst: printf
      Src: /src/lwan/src/lib/lwan-template.c:1368,1
    - Dst: instr
      Src: /src/lwan/src/lib/lwan-template.c:1368,1
    - Dst: printf
      Src: /src/lwan/src/lib/lwan-template.c:1371,1
    - Dst: instr
      Src: /src/lwan/src/lib/lwan-template.c:1371,1
    - Dst: printf
      Src: /src/lwan/src/lib/lwan-template.c:1376,1
    - Dst: instr
      Src: /src/lwan/src/lib/lwan-template.c:1376,1
    - Dst: printf
      Src: /src/lwan/src/lib/lwan-template.c:1382,1
    - Dst: instr
      Src: /src/lwan/src/lib/lwan-template.c:1382,1
    - Dst: printf
      Src: /src/lwan/src/lib/lwan-template.c:1389,1
    - Dst: instr
      Src: /src/lwan/src/lib/lwan-template.c:1390,1
    - Dst: printf
      Src: /src/lwan/src/lib/lwan-template.c:1399,1
    - Dst: instr
      Src: /src/lwan/src/lib/lwan-template.c:1399,1
    - Dst: printf
      Src: /src/lwan/src/lib/lwan-template.c:1403,1
    - Dst: instr
      Src: /src/lwan/src/lib/lwan-template.c:1403,1
    - Dst: printf
      Src: /src/lwan/src/lib/lwan-template.c:1406,1
    - Dst: instr
      Src: /src/lwan/src/lib/lwan-template.c:1406,1
    - Dst: printf
      Src: /src/lwan/src/lib/lwan-template.c:1409,1
    - Dst: printf
      Src: /src/lwan/src/lib/lwan-template.c:1411,1
    - Dst: printf
      Src: /src/lwan/src/lib/lwan-template.c:1413,1
    - Dst: printf
      Src: /src/lwan/src/lib/lwan-template.c:1415,1
    - Dst: printf
      Src: /src/lwan/src/lib/lwan-template.c:1416,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 70
    argCount: 1
    argNames:
    - tpl
    argTypes:
    - struct lwan_tpl*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1418
      start: 1318
    functionDepth: 1
    functionLinenumber: 1318
    functionLinenumberEnd: 1418
    functionName: dump_program
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_get_length
    - strnlen
    - printf
    - instr
    - lwan_strbuf_get_buffer
    - LWAN_ARRAY_FOREACH
    linkageType: ''
    returnType: void
    signature: void dump_program(const struct lwan_tpl *tpl)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/lwan/src/lib/lwan-template.c:1428,1
    - Dst: parse_value
      Src: /src/lwan/src/lib/lwan-template.c:1430,1
    - Dst: dump_program
      Src: /src/lwan/src/lib/lwan-template.c:1432,1
    - Dst: lwan_tpl_free
      Src: /src/lwan/src/lib/lwan-template.c:1438,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - value
    - descriptor
    - flags
    argTypes:
    - struct lwan_value
    - struct lwan_var_descriptor*
    - enum lwan_tpl_flag
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1442
      start: 1421
    functionDepth: 5
    functionLinenumber: 1421
    functionLinenumberEnd: 1442
    functionName: lwan_tpl_compile_value_full
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 1
    functionsReached:
    - dump_program
    - calloc
    - parse_value
    - lwan_tpl_free
    linkageType: ''
    returnType: struct lwan_tpl
    signature: "struct lwan_tpl *\nlwan_tpl_compile_value_full(struct lwan_value value,\n
      \                           const struct lwan_var_descriptor *descriptor,\n
      \                           enum lwan_tpl_flag flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_tpl_compile_string_full
      Src: /src/lwan/src/lib/lwan-template.c:1448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - string
    - descriptor
    argTypes:
    - char*
    - struct lwan_var_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1449
      start: 1444
    functionDepth: 1
    functionLinenumber: 1444
    functionLinenumberEnd: 1449
    functionName: lwan_tpl_compile_string
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - lwan_tpl_compile_string_full
    linkageType: ''
    returnType: struct lwan_tpl
    signature: "struct lwan_tpl *\nlwan_tpl_compile_string(const char *string,\n                        const
      struct lwan_var_descriptor *descriptor)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/lwan/src/lib/lwan-template.c:1460,1
    - Dst: fstat
      Src: /src/lwan/src/lib/lwan-template.c:1464,1
    - Dst: mmap
      Src: /src/lwan/src/lib/lwan-template.c:1467,1
    - Dst: set_vma_anon_name
      Src: /src/lwan/src/lib/lwan-template.c:1471,1
    - Dst: lwan_tpl_compile_string
      Src: /src/lwan/src/lib/lwan-template.c:1473,1
    - Dst: munmap
      Src: /src/lwan/src/lib/lwan-template.c:1475,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-template.c:1476,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-template.c:1479,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - filename
    - descriptor
    argTypes:
    - char*
    - struct lwan_var_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1482
      start: 1451
    functionDepth: 2
    functionLinenumber: 1451
    functionLinenumberEnd: 1482
    functionName: lwan_tpl_compile_file
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 1
    functionsReached:
    - fstat
    - munmap
    - lwan_tpl_compile_string
    - open
    - close
    - mmap
    - lwan_log_perror
    - set_vma_anon_name
    linkageType: ''
    returnType: struct lwan_tpl
    signature: "struct lwan_tpl *\nlwan_tpl_compile_file(const char *filename,\n                      const
      struct lwan_var_descriptor *descriptor)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWAN_ARRAY_FOREACH
      Src: /src/lwan/src/lib/lwan-template.c:1490,1
    - Dst: bake_direct_addresses
      Src: /src/lwan/src/lib/lwan-template.c:1492,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - tpl
    - dispatch_table
    argTypes:
    - struct lwan_tpl*
    - void*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1498
      start: 1484
    functionDepth: 1
    functionLinenumber: 1484
    functionLinenumberEnd: 1498
    functionName: bake_direct_addresses
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 3
    functionsReached:
    - bake_direct_addresses
    - LWAN_ARRAY_FOREACH
    linkageType: ''
    returnType: void
    signature: "void bake_direct_addresses(struct lwan_tpl *tpl,\n                      const
      void *const dispatch_table[static ACTION_LAST])"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-template.c:1511,1
    - Dst: bake_direct_addresses
      Src: /src/lwan/src/lib/lwan-template.c:1530,1
    - Dst: DISPATCH_ACTION_FAST
      Src: /src/lwan/src/lib/lwan-template.c:1560,1
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/lib/lwan-template.c:1563,1
    - Dst: lwan_strbuf_get_buffer
      Src: /src/lwan/src/lib/lwan-template.c:1563,1
    - Dst: lwan_strbuf_get_length
      Src: /src/lwan/src/lib/lwan-template.c:1564,1
    - Dst: DISPATCH_NEXT_ACTION_FAST
      Src: /src/lwan/src/lib/lwan-template.c:1565,1
    - Dst: strnlen
      Src: /src/lwan/src/lib/lwan-template.c:1569,1
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/lib/lwan-template.c:1571,1
    - Dst: DISPATCH_NEXT_ACTION_FAST
      Src: /src/lwan/src/lib/lwan-template.c:1573,1
    - Dst: struct lwan_var_descriptor*::append_to_strbuf
      Src: /src/lwan/src/lib/lwan-template.c:1578,1
    - Dst: DISPATCH_NEXT_ACTION_FAST
      Src: /src/lwan/src/lib/lwan-template.c:1579,1
    - Dst: struct lwan_var_descriptor*::lambda
      Src: /src/lwan/src/lib/lwan-template.c:1584,1
    - Dst: DISPATCH_NEXT_ACTION_FAST
      Src: /src/lwan/src/lib/lwan-template.c:1585,1
    - Dst: lwan_append_str_to_strbuf
      Src: /src/lwan/src/lib/lwan-template.c:1589,1
    - Dst: DISPATCH_NEXT_ACTION_FAST
      Src: /src/lwan/src/lib/lwan-template.c:1590,1
    - Dst: lwan_append_str_escaped_to_strbuf
      Src: /src/lwan/src/lib/lwan-template.c:1593,1
    - Dst: DISPATCH_NEXT_ACTION_FAST
      Src: /src/lwan/src/lib/lwan-template.c:1595,1
    - Dst: lwan_strbuf_init_with_fixed_buffer
      Src: /src/lwan/src/lib/lwan-template.c:1605,1
    - Dst: struct chunk_descriptor*::descriptor::lambda
      Src: /src/lwan/src/lib/lwan-template.c:1607,1
    - Dst: lwan_strbuf_has_grow_buffer_failed_flag
      Src: /src/lwan/src/lib/lwan-template.c:1608,1
    - Dst: lwan_strbuf_free
      Src: /src/lwan/src/lib/lwan-template.c:1610,1
    - Dst: struct chunk_descriptor*::descriptor::get_is_empty
      Src: /src/lwan/src/lib/lwan-template.c:1612,1
    - Dst: DISPATCH_NEXT_ACTION_FAST
      Src: /src/lwan/src/lib/lwan-template.c:1620,1
    - Dst: apply
      Src: /src/lwan/src/lib/lwan-template.c:1622,1
    - Dst: DISPATCH_NEXT_ACTION_CHECK
      Src: /src/lwan/src/lib/lwan-template.c:1623,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-template.c:1628,1
    - Dst: DISPATCH_NEXT_ACTION_FAST
      Src: /src/lwan/src/lib/lwan-template.c:1630,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-template.c:1635,1
    - Dst: lwan_strbuf_grow_by
      Src: /src/lwan/src/lib/lwan-template.c:1635,1
    - Dst: apply
      Src: /src/lwan/src/lib/lwan-template.c:1636,1
    - Dst: chunk_array_get_array
      Src: /src/lwan/src/lib/lwan-template.c:1636,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan-template.c:1638,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan-template.c:1642,1
    - Dst: DISPATCH_NEXT_ACTION_FAST
      Src: /src/lwan/src/lib/lwan-template.c:1647,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-template.c:1651,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan-template.c:1652,1
    - Dst: coro_new
      Src: /src/lwan/src/lib/lwan-template.c:1657,1
    - Dst: coro_resume_value
      Src: /src/lwan/src/lib/lwan-template.c:1659,1
    - Dst: coro_resume_value
      Src: /src/lwan/src/lib/lwan-template.c:1667,1
    - Dst: coro_free
      Src: /src/lwan/src/lib/lwan-template.c:1669,1
    - Dst: DISPATCH_ACTION_FAST
      Src: /src/lwan/src/lib/lwan-template.c:1673,1
    - Dst: DISPATCH_NEXT_ACTION_FAST
      Src: /src/lwan/src/lib/lwan-template.c:1675,1
    - Dst: apply
      Src: /src/lwan/src/lib/lwan-template.c:1678,1
    - Dst: DISPATCH_ACTION_CHECK
      Src: /src/lwan/src/lib/lwan-template.c:1679,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-template.c:1685,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan-template.c:1687,1
    - Dst: DISPATCH_NEXT_ACTION_FAST
      Src: /src/lwan/src/lib/lwan-template.c:1690,1
    - Dst: coro_resume_value
      Src: /src/lwan/src/lib/lwan-template.c:1693,1
    - Dst: coro_free
      Src: /src/lwan/src/lib/lwan-template.c:1694,1
    - Dst: DISPATCH_NEXT_ACTION_FAST
      Src: /src/lwan/src/lib/lwan-template.c:1696,1
    - Dst: apply
      Src: /src/lwan/src/lib/lwan-template.c:1699,1
    - Dst: DISPATCH_ACTION_CHECK
      Src: /src/lwan/src/lib/lwan-template.c:1701,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 116
    argCount: 5
    argNames:
    - tpl
    - chunks
    - buf
    - variables
    - data
    argTypes:
    - struct lwan_tpl*
    - struct chunk*
    - struct lwan_strbuf*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1712
      start: 1501
    functionDepth: 2
    functionLinenumber: 1501
    functionLinenumberEnd: 1712
    functionName: apply
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 1
    functionsReached:
    - struct chunk_descriptor*::descriptor::get_is_empty
    - lwan_strbuf_init_with_fixed_buffer
    - bake_direct_addresses
    - struct lwan_var_descriptor*::lambda
    - struct chunk_descriptor*::descriptor::lambda
    - lwan_append_str_to_strbuf
    - lwan_strbuf_free
    - lwan_strbuf_grow_by
    - strnlen
    - LIKELY
    - apply
    - DISPATCH_NEXT_ACTION_CHECK
    - lwan_strbuf_get_buffer
    - coro_resume_value
    - coro_free
    - UNLIKELY
    - chunk_array_get_array
    - struct lwan_var_descriptor*::append_to_strbuf
    - lwan_strbuf_get_length
    - lwan_strbuf_append_str
    - DISPATCH_ACTION_FAST
    - DISPATCH_NEXT_ACTION_FAST
    - DISPATCH_ACTION_CHECK
    - lwan_strbuf_has_grow_buffer_failed_flag
    - lwan_log_warning
    - coro_new
    - lwan_append_str_escaped_to_strbuf
    linkageType: ''
    returnType: struct chunk
    signature: "struct chunk *apply(struct lwan_tpl *tpl,\n                                 const
      struct chunk *chunks,\n                                 struct lwan_strbuf *buf,\n
      \                                void *variables,\n                                 const
      void *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - force_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1540
      start: 1533
    functionDepth: 0
    functionLinenumber: 1533
    functionLinenumberEnd: 1540
    functionName: RETURN_IF_NO_CHUNK
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RETURN_IF_NO_CHUNK(force_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - force_check_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1546
      start: 1541
    functionDepth: 0
    functionLinenumber: 1541
    functionLinenumberEnd: 1546
    functionName: DISPATCH_ACTION
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DISPATCH_ACTION(force_check_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - force_check_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1554
      start: 1547
    functionDepth: 0
    functionLinenumber: 1547
    functionLinenumberEnd: 1554
    functionName: DISPATCH_NEXT_ACTION
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DISPATCH_NEXT_ACTION(force_check_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1556
      start: 1555
    functionDepth: 0
    functionLinenumber: 1555
    functionLinenumberEnd: 1556
    functionName: DISPATCH_ACTION_FAST
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DISPATCH_ACTION_FAST()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1557
      start: 1556
    functionDepth: 0
    functionLinenumber: 1556
    functionLinenumberEnd: 1557
    functionName: DISPATCH_ACTION_CHECK
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DISPATCH_ACTION_CHECK()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1558
      start: 1557
    functionDepth: 0
    functionLinenumber: 1557
    functionLinenumberEnd: 1558
    functionName: DISPATCH_NEXT_ACTION_FAST
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DISPATCH_NEXT_ACTION_FAST()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1559
      start: 1558
    functionDepth: 0
    functionLinenumber: 1558
    functionLinenumberEnd: 1559
    functionName: DISPATCH_NEXT_ACTION_CHECK
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DISPATCH_NEXT_ACTION_CHECK()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_reset
      Src: /src/lwan/src/lib/lwan-template.c:1718,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-template.c:1720,1
    - Dst: lwan_strbuf_grow_to
      Src: /src/lwan/src/lib/lwan-template.c:1720,1
    - Dst: apply
      Src: /src/lwan/src/lib/lwan-template.c:1723,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - tpl
    - buf
    - variables
    argTypes:
    - struct lwan_tpl*
    - struct lwan_strbuf*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1727
      start: 1714
    functionDepth: 3
    functionLinenumber: 1714
    functionLinenumberEnd: 1727
    functionName: lwan_tpl_apply_with_buffer
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 3
    functionsReached:
    - apply
    - lwan_strbuf_grow_to
    - UNLIKELY
    - lwan_strbuf_reset
    linkageType: ''
    returnType: bool
    signature: "bool lwan_tpl_apply_with_buffer(struct lwan_tpl *tpl,\n                                struct
      lwan_strbuf *buf,\n                                void *variables)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_new_with_size
      Src: /src/lwan/src/lib/lwan-template.c:1731,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-template.c:1733,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-template.c:1736,1
    - Dst: lwan_tpl_apply_with_buffer
      Src: /src/lwan/src/lib/lwan-template.c:1736,1
    - Dst: lwan_strbuf_free
      Src: /src/lwan/src/lib/lwan-template.c:1739,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - tpl
    - variables
    argTypes:
    - struct lwan_tpl*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1741
      start: 1729
    functionDepth: 4
    functionLinenumber: 1729
    functionLinenumberEnd: 1741
    functionName: lwan_tpl_apply
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_free
    - lwan_tpl_apply_with_buffer
    - LIKELY
    - lwan_strbuf_new_with_size
    - UNLIKELY
    linkageType: ''
    returnType: struct lwan_strbuf
    signature: struct lwan_strbuf *lwan_tpl_apply(struct lwan_tpl *tpl, void *variables)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_append_printf
      Src: /src/lwan/src/lib/lwan-template.c:1754,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - b
    - v
    argTypes:
    - struct lwan_strbuf*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1755
      start: 1750
    functionDepth: 1
    functionLinenumber: 1750
    functionLinenumberEnd: 1755
    functionName: hello_lambda
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_append_printf
    linkageType: ''
    returnType: void
    signature: void hello_lambda(struct lwan_strbuf *b, void *v)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/lwan/src/lib/lwan-template.c:1760,1
    - Dst: printf
      Src: /src/lwan/src/lib/lwan-template.c:1764,1
    - Dst: TPL_VAR_INT
      Src: /src/lwan/src/lib/lwan-template.c:1768,1
    - Dst: TPL_VAR_STR
      Src: /src/lwan/src/lib/lwan-template.c:1769,1
    - Dst: TPL_LAMBDA
      Src: /src/lwan/src/lib/lwan-template.c:1770,1
    - Dst: lwan_tpl_compile_file
      Src: /src/lwan/src/lib/lwan-template.c:1773,1
    - Dst: printf
      Src: /src/lwan/src/lib/lwan-template.c:1777,1
    - Dst: lwan_tpl_apply
      Src: /src/lwan/src/lib/lwan-template.c:1779,1
    - Dst: lwan_strbuf_free
      Src: /src/lwan/src/lib/lwan-template.c:1783,1
    - Dst: lwan_tpl_apply
      Src: /src/lwan/src/lib/lwan-template.c:1786,1
    - Dst: printf
      Src: /src/lwan/src/lib/lwan-template.c:1790,1
    - Dst: lwan_strbuf_get_buffer
      Src: /src/lwan/src/lib/lwan-template.c:1790,1
    - Dst: lwan_strbuf_free
      Src: /src/lwan/src/lib/lwan-template.c:1791,1
    - Dst: lwan_tpl_free
      Src: /src/lwan/src/lib/lwan-template.c:1793,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1795
      start: 1757
    functionDepth: 5
    functionLinenumber: 1757
    functionLinenumberEnd: 1795
    functionName: main
    functionSourceFile: /src/lwan/src/lib/lwan-template.c
    functionUses: 5
    functionsReached:
    - lwan_strbuf_free
    - TPL_LAMBDA
    - printf
    - TPL_VAR_INT
    - lwan_tpl_apply
    - lwan_tpl_free
    - lwan_tpl_compile_file
    - lwan_strbuf_get_buffer
    - TPL_VAR_STR
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - expr
    - ','
    - type
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 56
    functionName: check_type
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: check_type(expr, type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - expr1
    - ','
    - expr2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 82
    functionName: check_types_match
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: check_types_match(expr1, expr2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - member_ptr
    - ','
    - containing_type
    - ','
    - member
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 112
    functionName: container_of
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: container_of(member_ptr, containing_type, member)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - member_ptr
    - ','
    - container_var
    - ','
    - member
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 132
    functionName: container_of_var
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: container_of_var(member_ptr, container_var, member)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - member_ptr
    - ','
    - container_var
    - ','
    - member
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 136
    functionName: container_of_var
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: container_of_var(member_ptr, container_var, member)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - containing_type
    - ','
    - member
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 164
    functionName: container_off
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: container_off(containing_type, member)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - var
    - ','
    - member
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 177
    functionName: container_off_var
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: container_off_var(var, member)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 264
    functionName: list_poison
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_poison(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - h
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 265
    functionName: list_debug
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_debug(h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 265
    functionDepth: 0
    functionLinenumber: 265
    functionLinenumberEnd: 266
    functionName: list_debug_node
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_debug_node(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - h
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 269
    functionName: list_debug
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_debug(h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 270
    functionName: list_debug_node
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_debug_node(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct list_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 286
    functionName: list_head_init
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void list_head_init(struct list_head *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_debug
      Src: /src/lwan/src/lib/list.h:307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - h
    - n
    argTypes:
    - struct list_head*
    - struct list_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 308
    functionName: list_add
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 1
    functionsReached:
    - list_debug
    linkageType: ''
    returnType: void
    signature: void list_add(struct list_head *h, struct list_node *n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_debug
      Src: /src/lwan/src/lib/list.h:326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - h
    - n
    argTypes:
    - struct list_head*
    - struct list_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 320
    functionDepth: 1
    functionLinenumber: 320
    functionLinenumberEnd: 327
    functionName: list_add_tail
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached:
    - list_debug
    linkageType: ''
    returnType: void
    signature: void list_add_tail(struct list_head *h, struct list_node *n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_debug
      Src: /src/lwan/src/lib/list.h:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - h
    argTypes:
    - struct list_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 338
    functionDepth: 1
    functionLinenumber: 338
    functionLinenumberEnd: 342
    functionName: list_empty
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 2
    functionsReached:
    - list_debug
    linkageType: ''
    returnType: bool
    signature: bool list_empty(const struct list_head *h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_debug_node
      Src: /src/lwan/src/lib/list.h:360,1
    - Dst: list_poison
      Src: /src/lwan/src/lib/list.h:365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - n
    argTypes:
    - struct list_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 358
    functionDepth: 1
    functionLinenumber: 358
    functionLinenumberEnd: 366
    functionName: list_del
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 2
    functionsReached:
    - list_poison
    - list_debug_node
    linkageType: ''
    returnType: void
    signature: void list_del(struct list_node *n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/list.h:389,1
    - Dst: assert
      Src: /src/lwan/src/lib/list.h:396,1
    - Dst: list_empty
      Src: /src/lwan/src/lib/list.h:396,1
    - Dst: list_del
      Src: /src/lwan/src/lib/list.h:397,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - h
    - n
    argTypes:
    - struct list_head*
    - struct list_node*
    assertStmts:
    - condition: (i != &h->n)
      pos:
        line_end: 388
        line_start: 388
        source_file: /src/lwan/src/lib/list.h
    - condition: (!list_empty(h))
      pos:
        line_end: 395
        line_start: 395
        source_file: /src/lwan/src/lib/list.h
    constantsTouched: []
    func_position:
      end: 398
      start: 382
    functionDepth: 2
    functionLinenumber: 382
    functionLinenumberEnd: 398
    functionName: list_del_from
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached:
    - list_empty
    - list_del
    - assert
    linkageType: ''
    returnType: void
    signature: void list_del_from(struct list_head *h, struct list_node *n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - n
    - ','
    - type
    - ','
    - member
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 413
    functionDepth: 0
    functionLinenumber: 413
    functionLinenumberEnd: 414
    functionName: list_entry
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_entry(n, type, member)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - h
    - ','
    - type
    - ','
    - member
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 429
    functionDepth: 0
    functionLinenumber: 429
    functionLinenumberEnd: 431
    functionName: list_top
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_top(h, type, member)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_empty
      Src: /src/lwan/src/lib/list.h:434,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - h
    - 'off'
    argTypes:
    - struct list_head*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 432
    functionDepth: 2
    functionLinenumber: 432
    functionLinenumberEnd: 437
    functionName: list_top_
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached:
    - list_empty
    linkageType: ''
    returnType: void
    signature: void *list_top_(const struct list_head *h, size_t off)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - h
    - ','
    - type
    - ','
    - member
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 453
    functionDepth: 0
    functionLinenumber: 453
    functionLinenumberEnd: 455
    functionName: list_pop
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_pop(h, type, member)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_empty
      Src: /src/lwan/src/lib/list.h:460,1
    - Dst: list_del
      Src: /src/lwan/src/lib/list.h:463,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - h
    - 'off'
    argTypes:
    - struct list_head*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 456
    functionDepth: 2
    functionLinenumber: 456
    functionLinenumberEnd: 465
    functionName: list_pop_
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached:
    - list_empty
    - list_del
    linkageType: ''
    returnType: void
    signature: void *list_pop_(const struct list_head *h, size_t off)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - h
    - ','
    - type
    - ','
    - member
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 481
    functionDepth: 0
    functionLinenumber: 481
    functionLinenumberEnd: 483
    functionName: list_tail
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_tail(h, type, member)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_empty
      Src: /src/lwan/src/lib/list.h:486,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - h
    - 'off'
    argTypes:
    - struct list_head*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 484
    functionDepth: 2
    functionLinenumber: 484
    functionLinenumberEnd: 489
    functionName: list_tail_
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached:
    - list_empty
    linkageType: ''
    returnType: void
    signature: void *list_tail_(const struct list_head *h, size_t off)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - h
    - ','
    - i
    - ','
    - member
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 504
    functionDepth: 0
    functionLinenumber: 504
    functionLinenumberEnd: 506
    functionName: list_for_each
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_for_each(h, i, member)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - h
    - ','
    - i
    - ','
    - member
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 520
    functionDepth: 0
    functionLinenumber: 520
    functionLinenumberEnd: 524
    functionName: list_for_each_rev
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_for_each_rev(h, i, member)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - h
    - ','
    - i
    - ','
    - nxt
    - ','
    - member
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 543
    functionDepth: 0
    functionLinenumber: 543
    functionLinenumberEnd: 545
    functionName: list_for_each_safe
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_for_each_safe(h, i, nxt, member)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_debug
      Src: /src/lwan/src/lib/list.h:564,1
    - Dst: list_debug
      Src: /src/lwan/src/lib/list.h:565,1
    - Dst: list_del
      Src: /src/lwan/src/lib/list.h:574,1
    - Dst: list_head_init
      Src: /src/lwan/src/lib/list.h:575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - to
    - from
    argTypes:
    - struct list_head*
    - struct list_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 561
    functionDepth: 2
    functionLinenumber: 561
    functionLinenumberEnd: 576
    functionName: list_append_list
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached:
    - list_del
    - list_head_init
    - list_debug
    linkageType: ''
    returnType: void
    signature: "void list_append_list(struct list_head *to,\n\t\t\t\t    struct list_head
      *from)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_debug
      Src: /src/lwan/src/lib/list.h:594,1
    - Dst: list_debug
      Src: /src/lwan/src/lib/list.h:595,1
    - Dst: list_del
      Src: /src/lwan/src/lib/list.h:604,1
    - Dst: list_head_init
      Src: /src/lwan/src/lib/list.h:605,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - to
    - from
    argTypes:
    - struct list_head*
    - struct list_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 591
    functionDepth: 2
    functionLinenumber: 591
    functionLinenumberEnd: 606
    functionName: list_prepend_list
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached:
    - list_del
    - list_head_init
    - list_debug
    linkageType: ''
    returnType: void
    signature: "void list_prepend_list(struct list_head *to,\n\t\t\t\t     struct
      list_head *from)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - h
    - ','
    - i
    - ','
    - 'off'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 637
    functionDepth: 0
    functionLinenumber: 637
    functionLinenumberEnd: 642
    functionName: list_for_each_off
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_for_each_off(h, i, off)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - h
    - ','
    - i
    - ','
    - nxt
    - ','
    - 'off'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 667
      start: 659
    functionDepth: 0
    functionLinenumber: 659
    functionLinenumberEnd: 667
    functionName: list_for_each_safe_off
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_for_each_safe_off(h, i, nxt, off)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - n
    - ','
    - type
    - ','
    - 'off'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 670
    functionDepth: 0
    functionLinenumber: 670
    functionLinenumberEnd: 672
    functionName: list_entry_off
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_entry_off(n, type, off)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - h
    - ','
    - type
    - ','
    - 'off'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 673
    functionDepth: 0
    functionLinenumber: 673
    functionLinenumberEnd: 675
    functionName: list_head_off
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_head_off(h, type, off)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - h
    - ','
    - type
    - ','
    - 'off'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 676
    functionDepth: 0
    functionLinenumber: 676
    functionLinenumberEnd: 678
    functionName: list_tail_off
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_tail_off(h, type, off)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - h
    - ','
    - n
    - ','
    - 'off'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 679
    functionDepth: 0
    functionLinenumber: 679
    functionLinenumberEnd: 681
    functionName: list_add_off
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_add_off(h, n, off)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - n
    - ','
    - 'off'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 682
    functionDepth: 0
    functionLinenumber: 682
    functionLinenumberEnd: 684
    functionName: list_del_off
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_del_off(n, off)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - h
    - ','
    - n
    - ','
    - 'off'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 685
    functionDepth: 0
    functionLinenumber: 685
    functionLinenumberEnd: 687
    functionName: list_del_from_off
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_del_from_off(h, n, off)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - 'off'
    argTypes:
    - struct list_node*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 689
    functionDepth: 0
    functionLinenumber: 689
    functionLinenumberEnd: 692
    functionName: list_node_to_off_
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void *list_node_to_off_(struct list_node *node, size_t off)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - 'off'
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 693
    functionDepth: 0
    functionLinenumber: 693
    functionLinenumberEnd: 696
    functionName: list_node_from_off_
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct list_node
    signature: struct list_node *list_node_from_off_(void *ptr, size_t off)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type
    - ','
    - member
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 702
      start: 699
    functionDepth: 0
    functionLinenumber: 699
    functionLinenumberEnd: 702
    functionName: list_off_
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_off_(type, member)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - var
    - ','
    - member
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 706
      start: 703
    functionDepth: 0
    functionLinenumber: 703
    functionLinenumberEnd: 706
    functionName: list_off_var_
    functionSourceFile: /src/lwan/src/lib/list.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: list_off_var_(var, member)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type_
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 28
    functionName: DECLARE_LOG_PROTO
    functionSourceFile: /src/lwan/src/lib/lwan-log.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_LOG_PROTO(type_, ...)
  - 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: 32
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 32
    functionName: lwan_log_debug
    functionSourceFile: /src/lwan/src/lib/lwan-log.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lwan_log_debug(fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type_
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 38
    functionName: DECLARE_LOG_PROTO
    functionSourceFile: /src/lwan/src/lib/lwan-log.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DECLARE_LOG_PROTO(type_, ...)
  - 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: 41
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 41
    functionName: lwan_log_info
    functionSourceFile: /src/lwan/src/lib/lwan-log.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lwan_log_info(fmt, ...)
  - 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: 43
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 43
    functionName: lwan_log_warning
    functionSourceFile: /src/lwan/src/lib/lwan-log.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lwan_log_warning(fmt, ...)
  - 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: 45
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 45
    functionName: lwan_log_error
    functionSourceFile: /src/lwan/src/lib/lwan-log.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lwan_log_error(fmt, ...)
  - 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: 47
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 47
    functionName: lwan_log_perror
    functionSourceFile: /src/lwan/src/lib/lwan-log.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lwan_log_perror(fmt, ...)
  - 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: 50
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 50
    functionName: lwan_log_critical
    functionSourceFile: /src/lwan/src/lib/lwan-log.h
    functionUses: 19
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lwan_log_critical(fmt, ...)
  - 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: 53
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 53
    functionName: lwan_log_critical_perror
    functionSourceFile: /src/lwan/src/lib/lwan-log.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lwan_log_critical_perror(fmt, ...)
  - 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: 55
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 55
    functionName: lwan_log_debug
    functionSourceFile: /src/lwan/src/lib/lwan-log.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lwan_log_debug(fmt, ...)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lwan_send_fd
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:49,1
    - Dst: sendmsg
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:57,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:59,1
    - Dst: lwan_request_await_read
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:88,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 4
    argNames:
    - request
    - fd
    - iov
    - iov_count
    argTypes:
    - struct lwan_request*
    - int
    - struct iovec*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 34
    functionDepth: 1
    functionLinenumber: 34
    functionLinenumberEnd: 92
    functionName: lwan_writev_fd
    functionSourceFile: /src/lwan/src/lib/lwan-io-wrappers.c
    functionUses: 0
    functionsReached:
    - UNLIKELY
    - lwan_request_await_read
    - lwan_send_fd
    - sendmsg
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t lwan_writev_fd(struct lwan_request *request,\n                       int
      fd,\n                       struct iovec *iov,\n                       int iov_count)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lwan_recv_fd
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:107,1
    - Dst: recvmsg
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:114,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:115,1
    - Dst: lwan_request_await_read
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:145,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 4
    argNames:
    - request
    - fd
    - iov
    - iov_count
    argTypes:
    - struct lwan_request*
    - int
    - struct iovec*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 149
    functionName: lwan_readv_fd
    functionSourceFile: /src/lwan/src/lib/lwan-io-wrappers.c
    functionUses: 0
    functionsReached:
    - lwan_request_await_read
    - recvmsg
    - lwan_recv_fd
    - UNLIKELY
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t lwan_readv_fd(struct lwan_request *request,\n                      int
      fd,\n                      struct iovec *iov,\n                      int iov_count)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: send
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:163,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:164,1
    - Dst: lwan_request_await_write
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:181,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 5
    argNames:
    - request
    - fd
    - buf
    - count
    - flags
    argTypes:
    - struct lwan_request*
    - int
    - void*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 185
    functionName: lwan_send_fd
    functionSourceFile: /src/lwan/src/lib/lwan-io-wrappers.c
    functionUses: 1
    functionsReached:
    - send
    - UNLIKELY
    - lwan_request_await_write
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t lwan_send_fd(struct lwan_request *request,\n                     int
      fd,\n                     const void *buf,\n                     size_t count,\n
      \                    int flags)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: recv
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:193,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:194,1
    - Dst: lwan_request_await_read
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:213,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 5
    argNames:
    - request
    - fd
    - buf
    - count
    - flags
    argTypes:
    - struct lwan_request*
    - int
    - void*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 217
    functionName: lwan_recv_fd
    functionSourceFile: /src/lwan/src/lib/lwan-io-wrappers.c
    functionUses: 1
    functionsReached:
    - recv
    - lwan_request_await_read
    - UNLIKELY
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t lwan_recv_fd(struct lwan_request *request, int fd, void *buf,
      size_t count, int flags)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LWAN_MIN
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:240,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:244,1
    - Dst: lwan_send_fd
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:246,1
    - Dst: sendfile
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:251,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:252,1
    - Dst: LWAN_MIN
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:265,1
    - Dst: lwan_readahead_queue
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:266,1
    - Dst: lwan_request_await_write
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:269,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 7
    argNames:
    - request
    - out_fd
    - in_fd
    - offset
    - count
    - header
    - header_len
    argTypes:
    - struct lwan_request*
    - int
    - int
    - off_t
    - size_t
    - char*
    - size_t
    assertStmts:
    - condition: (header_len < (1ul << 21))
      pos:
        line_end: 243
        line_start: 243
        source_file: /src/lwan/src/lib/lwan-io-wrappers.c
    constantsTouched: []
    func_position:
      end: 271
      start: 220
    functionDepth: 2
    functionLinenumber: 220
    functionLinenumberEnd: 271
    functionName: lwan_sendfile_fd
    functionSourceFile: /src/lwan/src/lib/lwan-io-wrappers.c
    functionUses: 0
    functionsReached:
    - lwan_send_fd
    - lwan_request_await_write
    - lwan_readahead_queue
    - LWAN_MIN
    - sendfile
    - assert
    - UNLIKELY
    linkageType: ''
    returnType: int
    signature: "int lwan_sendfile_fd(struct lwan_request *request,\n                     int
      out_fd,\n                     int in_fd,\n                     off_t offset,\n
      \                    size_t count,\n                     const char *header,\n
      \                    size_t header_len)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lwan_send_fd
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:283,1
    - Dst: sendfile
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:296,1
    - Dst: sendfile
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:298,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:301,1
    - Dst: lwan_request_await_write
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:316,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 7
    argNames:
    - request
    - out_fd
    - in_fd
    - offset
    - count
    - header
    - header_len
    argTypes:
    - struct lwan_request*
    - int
    - int
    - off_t
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 273
    functionDepth: 2
    functionLinenumber: 273
    functionLinenumberEnd: 318
    functionName: lwan_sendfile_fd
    functionSourceFile: /src/lwan/src/lib/lwan-io-wrappers.c
    functionUses: 0
    functionsReached:
    - UNLIKELY
    - lwan_request_await_write
    - sendfile
    - lwan_send_fd
    linkageType: ''
    returnType: int
    signature: "int lwan_sendfile_fd(struct lwan_request *request,\n                     int
      out_fd,\n                     int in_fd,\n                     off_t offset,\n
      \                    size_t count,\n                     const char *header,\n
      \                    size_t header_len)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: pread
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:329,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:331,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:338,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 5
    argNames:
    - request
    - fd
    - buffer
    - len
    - offset
    argTypes:
    - struct lwan_request*
    - int
    - void*
    - size_t
    - off_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 320
    functionDepth: 1
    functionLinenumber: 320
    functionLinenumberEnd: 354
    functionName: try_pread_file
    functionSourceFile: /src/lwan/src/lib/lwan-io-wrappers.c
    functionUses: 0
    functionsReached:
    - coro_yield
    - pread
    - UNLIKELY
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t try_pread_file(struct lwan_request *request,\n                              int
      fd,\n                              void *buffer,\n                              size_t
      len,\n                              off_t offset)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lwan_send_fd
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:368,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:369,1
    - Dst: try_pread_file
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:374,1
    - Dst: LWAN_MIN
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:375,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:376,1
    - Dst: lwan_send_fd
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:380,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:382,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-io-wrappers.c:390,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 7
    argNames:
    - request
    - out_fd
    - in_fd
    - offset
    - count
    - header
    - header_len
    argTypes:
    - struct lwan_request*
    - int
    - int
    - off_t
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 356
    functionDepth: 2
    functionLinenumber: 356
    functionLinenumberEnd: 395
    functionName: lwan_sendfile_fd
    functionSourceFile: /src/lwan/src/lib/lwan-io-wrappers.c
    functionUses: 0
    functionsReached:
    - lwan_send_fd
    - try_pread_file
    - LWAN_MIN
    - coro_yield
    - UNLIKELY
    linkageType: ''
    returnType: int
    signature: "int lwan_sendfile_fd(struct lwan_request *request,\n                     int
      out_fd,\n                     int in_fd,\n                     off_t offset,\n
      \                    size_t count,\n                     const char *header,\n
      \                    size_t header_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 46
    functionName: LWAN_LUA_METHOD
    functionSourceFile: /src/lwan/src/lib/lwan-lua.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LWAN_LUA_METHOD(name_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - sub_
    - ','
    - msg_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 53
    functionName: LWAN_PUBSUB_FOREACH_MSG
    functionSourceFile: /src/lwan/src/lib/lwan-pubsub.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LWAN_PUBSUB_FOREACH_MSG(sub_, msg_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: coro_memdup
      Src: /src/lwan/src/lib/lwan-mod-redirect.c:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - request
    - response
    - instance
    argTypes:
    - struct lwan_request*
    - struct lwan_response*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 44
    functionName: redirect_handle_request
    functionSourceFile: /src/lwan/src/lib/lwan-mod-redirect.c
    functionUses: 0
    functionsReached:
    - coro_memdup
    linkageType: ''
    returnType: enum lwan_http_status
    signature: "enum lwan_http_status redirect_handle_request(struct lwan_request
      *request,\n                        struct lwan_response *response,\n                        void
      *instance)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-mod-redirect.c:50,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan-mod-redirect.c:55,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-redirect.c:57,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - prefix
    - instance
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 64
    functionName: redirect_create
    functionSourceFile: /src/lwan/src/lib/lwan-mod-redirect.c
    functionUses: 0
    functionsReached:
    - malloc
    - strdup
    - free
    linkageType: ''
    returnType: void
    signature: "void *redirect_create(const char *prefix __attribute__((unused)),\n
      \                            void *instance)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-redirect.c:71,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-redirect.c:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 74
    functionName: redirect_destroy
    functionSourceFile: /src/lwan/src/lib/lwan-mod-redirect.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void redirect_destroy(void *data)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: parse_int
      Src: /src/lwan/src/lib/lwan-mod-redirect.c:85,1
    - Dst: lwan_http_status_as_string_with_code
      Src: /src/lwan/src/lib/lwan-mod-redirect.c:89,1
    - Dst: strncmp
      Src: /src/lwan/src/lib/lwan-mod-redirect.c:90,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - code
    - fallback
    argTypes:
    - char*
    - enum lwan_http_status
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 94
    functionName: parse_http_code
    functionSourceFile: /src/lwan/src/lib/lwan-mod-redirect.c
    functionUses: 0
    functionsReached:
    - parse_int
    - strncmp
    - lwan_http_status_as_string_with_code
    linkageType: ''
    returnType: enum lwan_http_status
    signature: "enum lwan_http_status parse_http_code(const char *code,\n                                             enum
      lwan_http_status fallback)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_find
      Src: /src/lwan/src/lib/lwan-mod-redirect.c:100,1
    - Dst: parse_http_code
      Src: /src/lwan/src/lib/lwan-mod-redirect.c:102,1
    - Dst: hash_find
      Src: /src/lwan/src/lib/lwan-mod-redirect.c:102,1
    - Dst: redirect_create
      Src: /src/lwan/src/lib/lwan-mod-redirect.c:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - prefix
    - hash
    argTypes:
    - char*
    - struct hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 96
    functionDepth: 2
    functionLinenumber: 96
    functionLinenumberEnd: 106
    functionName: redirect_create_from_hash
    functionSourceFile: /src/lwan/src/lib/lwan-mod-redirect.c
    functionUses: 0
    functionsReached:
    - redirect_create
    - hash_find
    - parse_http_code
    linkageType: ''
    returnType: void
    signature: "void *redirect_create_from_hash(const char *prefix,\n                                       const
      struct hash *hash)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type_
    - ','
    - name_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 47
    functionName: LWAN_LAZY_GLOBAL
    functionSourceFile: /src/lwan/src/lib/lwan-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LWAN_LAZY_GLOBAL(type_, name_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type_
    - ','
    - name_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 52
    functionName: LWAN_LAZY_THREAD_LOCAL
    functionSourceFile: /src/lwan/src/lib/lwan-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LWAN_LAZY_THREAD_LOCAL(type_, name_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - type_
    - ','
    - name_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 67
    functionName: LWAN_LAZY_THREAD_LOCAL
    functionSourceFile: /src/lwan/src/lib/lwan-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LWAN_LAZY_THREAD_LOCAL(type_, name_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name_
    - ','
    - prio_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 85
    functionName: LWAN_CONSTRUCTOR
    functionSourceFile: /src/lwan/src/lib/lwan-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LWAN_CONSTRUCTOR(name_, prio_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a_
    - ','
    - b_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 139
    functionName: LWAN_CONCAT
    functionSourceFile: /src/lwan/src/lib/lwan-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LWAN_CONCAT(a_, b_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 140
    functionName: LWAN_TMP_ID_DETAIL
    functionSourceFile: /src/lwan/src/lib/lwan-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LWAN_TMP_ID_DETAIL(n_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - a_
    - ','
    - b_
    - ','
    - name_a_
    - ','
    - name_b_
    - ','
    - op_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 148
    functionName: LWAN_MIN_MAX_DETAIL
    functionSourceFile: /src/lwan/src/lib/lwan-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LWAN_MIN_MAX_DETAIL(a_, b_, name_a_, name_b_, op_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a_
    - ','
    - b_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 150
    functionName: LWAN_MIN
    functionSourceFile: /src/lwan/src/lib/lwan-private.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LWAN_MIN(a_, b_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a_
    - ','
    - b_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 152
    functionName: LWAN_MAX
    functionSourceFile: /src/lwan/src/lib/lwan-private.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LWAN_MAX(a_, b_)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_clz
      Src: /src/lwan/src/lib/lwan-private.h:211,1
    - Dst: __builtin_clzl
      Src: /src/lwan/src/lib/lwan-private.h:213,1
    - Dst: __builtin_clzll
      Src: /src/lwan/src/lib/lwan-private.h:215,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-private.h:217,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - number
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 218
    functionName: lwan_nextpow2
    functionSourceFile: /src/lwan/src/lib/lwan-private.h
    functionUses: 0
    functionsReached:
    - __builtin_clz
    - __builtin_clzl
    - __builtin_clzll
    - __builtin_unreachable
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE lwan_nextpow2(size_t number)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 252
    functionName: LWAN_NO_DISCARD
    functionSourceFile: /src/lwan/src/lib/lwan-private.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LWAN_NO_DISCARD(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWAN_NO_DISCARD
      Src: /src/lwan/src/lib/lwan-private.h:255,1
    - Dst: memset
      Src: /src/lwan/src/lib/lwan-private.h:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 256
    functionName: lwan_always_bzero
    functionSourceFile: /src/lwan/src/lib/lwan-private.h
    functionUses: 0
    functionsReached:
    - memset
    - LWAN_NO_DISCARD
    linkageType: ''
    returnType: void
    signature: void lwan_always_bzero(void *ptr, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 260
    functionName: SECTION_START
    functionSourceFile: /src/lwan/src/lib/lwan-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SECTION_START(name_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 261
    functionName: SECTION_END
    functionSourceFile: /src/lwan/src/lib/lwan-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SECTION_END(name_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 263
    functionName: SECTION_START
    functionSourceFile: /src/lwan/src/lib/lwan-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SECTION_START(name_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 264
    functionName: SECTION_END
    functionSourceFile: /src/lwan/src/lib/lwan-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SECTION_END(name_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - section_name_
    - ','
    - iter_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 271
    functionName: SECTION_START_SYMBOL
    functionSourceFile: /src/lwan/src/lib/lwan-private.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SECTION_START_SYMBOL(section_name_, iter_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - section_name_
    - ','
    - iter_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 277
    functionName: SECTION_STOP_SYMBOL
    functionSourceFile: /src/lwan/src/lib/lwan-private.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SECTION_STOP_SYMBOL(section_name_, iter_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - section_name_
    - ','
    - iter_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 281
    functionName: LWAN_SECTION_FOREACH
    functionSourceFile: /src/lwan/src/lib/lwan-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LWAN_SECTION_FOREACH(section_name_, iter_)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-private.h:289,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-private.h:290,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-private.h:293,1
    - Dst: posix_memalign
      Src: /src/lwan/src/lib/lwan-private.h:293,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - n
    - alignment
    argTypes:
    - size_t
    - size_t
    assertStmts:
    - condition: ((alignment & (alignment - 1)) == 0)
      pos:
        line_end: 288
        line_start: 288
        source_file: /src/lwan/src/lib/lwan-private.h
    - condition: ((alignment % (sizeof(void *))) == 0)
      pos:
        line_end: 289
        line_start: 289
        source_file: /src/lwan/src/lib/lwan-private.h
    constantsTouched: []
    func_position:
      end: 297
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 297
    functionName: lwan_aligned_alloc
    functionSourceFile: /src/lwan/src/lib/lwan-private.h
    functionUses: 0
    functionsReached:
    - UNLIKELY
    - posix_memalign
    - assert
    linkageType: ''
    returnType: void
    signature: 'void *

      lwan_aligned_alloc(size_t n, size_t alignment)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWAN_MAX
      Src: /src/lwan/src/lib/lwan-private.h:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - total
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 304
    functionName: lwan_calculate_n_packets
    functionSourceFile: /src/lwan/src/lib/lwan-private.h
    functionUses: 0
    functionsReached:
    - LWAN_MAX
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE lwan_calculate_n_packets(size_t total)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - lwan
    - conn
    argTypes:
    - struct lwan*
    - struct lwan_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 321
    functionName: lwan_connection_get_fd
    functionSourceFile: /src/lwan/src/lib/lwan-private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: "ALWAYS_INLINE lwan_connection_get_fd(const struct lwan *lwan,\n                       const
      struct lwan_connection *conn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - request
    - response
    - instance
    argTypes:
    - struct lwan_request*
    - struct lwan_response*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 33
    functionName: response_handle_request
    functionSourceFile: /src/lwan/src/lib/lwan-mod-response.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum lwan_http_status
    signature: "enum lwan_http_status response_handle_request(struct lwan_request
      *request __attribute__((unused)),\n                        struct lwan_response
      *response __attribute__((unused)),\n                        void *instance)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_http_status_as_string_with_code
      Src: /src/lwan/src/lib/lwan-mod-response.c:41,1
    - Dst: strncmp
      Src: /src/lwan/src/lib/lwan-mod-response.c:42,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-mod-response.c:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - prefix
    - instance
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 35
    functionDepth: 1
    functionLinenumber: 35
    functionLinenumberEnd: 49
    functionName: response_create
    functionSourceFile: /src/lwan/src/lib/lwan-mod-response.c
    functionUses: 0
    functionsReached:
    - strncmp
    - lwan_log_error
    - lwan_http_status_as_string_with_code
    linkageType: ''
    returnType: void
    signature: "void *response_create(const char *prefix __attribute__((unused)),\n
      \                            void *instance)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_find
      Src: /src/lwan/src/lib/lwan-mod-response.c:54,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-mod-response.c:57,1
    - Dst: parse_int
      Src: /src/lwan/src/lib/lwan-mod-response.c:61,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-mod-response.c:63,1
    - Dst: response_create
      Src: /src/lwan/src/lib/lwan-mod-response.c:70,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - prefix
    - hash
    argTypes:
    - char*
    - struct hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 71
    functionName: response_create_from_hash
    functionSourceFile: /src/lwan/src/lib/lwan-mod-response.c
    functionUses: 0
    functionsReached:
    - parse_int
    - response_create
    - hash_find
    - lwan_log_error
    linkageType: ''
    returnType: void
    signature: "void *response_create_from_hash(const char *prefix,\n                                       const
      struct hash *hash)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_writev_fd
      Src: /src/lwan/src/lib/lwan-io-wrappers.h:56,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-io-wrappers.h:57,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-io-wrappers.h:58,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-io-wrappers.h:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - request
    - iov
    - iovcnt
    argTypes:
    - struct lwan_request*
    - struct iovec*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 62
    functionName: lwan_writev
    functionSourceFile: /src/lwan/src/lib/lwan-io-wrappers.h
    functionUses: 0
    functionsReached:
    - UNLIKELY
    - coro_yield
    - lwan_writev_fd
    - __builtin_unreachable
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t lwan_writev(struct lwan_request *request, struct iovec *iov,
      int iovcnt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_send_fd
      Src: /src/lwan/src/lib/lwan-io-wrappers.h:69,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-io-wrappers.h:70,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-io-wrappers.h:71,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-io-wrappers.h:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - request
    - buf
    - count
    - flags
    argTypes:
    - struct lwan_request*
    - void*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 64
    functionDepth: 2
    functionLinenumber: 64
    functionLinenumberEnd: 75
    functionName: lwan_send
    functionSourceFile: /src/lwan/src/lib/lwan-io-wrappers.h
    functionUses: 0
    functionsReached:
    - UNLIKELY
    - coro_yield
    - lwan_send_fd
    - __builtin_unreachable
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t lwan_send(struct lwan_request *request,\n                                const
      void *buf,\n                                size_t count,\n                                int
      flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_sendfile_fd
      Src: /src/lwan/src/lib/lwan-io-wrappers.h:84,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-io-wrappers.h:86,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-io-wrappers.h:87,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-io-wrappers.h:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 6
    argNames:
    - request
    - in_fd
    - offset
    - count
    - header
    - header_len
    argTypes:
    - struct lwan_request*
    - int
    - off_t
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 77
    functionDepth: 3
    functionLinenumber: 77
    functionLinenumberEnd: 91
    functionName: lwan_sendfile
    functionSourceFile: /src/lwan/src/lib/lwan-io-wrappers.h
    functionUses: 0
    functionsReached:
    - lwan_sendfile_fd
    - coro_yield
    - UNLIKELY
    - __builtin_unreachable
    linkageType: ''
    returnType: int
    signature: "int lwan_sendfile(struct lwan_request *request,\n                                int
      in_fd,\n                                off_t offset,\n                                size_t
      count,\n                                const char *header,\n                                size_t
      header_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_recv_fd
      Src: /src/lwan/src/lib/lwan-io-wrappers.h:96,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-io-wrappers.h:97,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-io-wrappers.h:98,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-io-wrappers.h:99,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - request
    - buf
    - count
    - flags
    argTypes:
    - struct lwan_request*
    - void*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 102
    functionName: lwan_recv
    functionSourceFile: /src/lwan/src/lib/lwan-io-wrappers.h
    functionUses: 0
    functionsReached:
    - coro_yield
    - lwan_recv_fd
    - UNLIKELY
    - __builtin_unreachable
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t lwan_recv(struct lwan_request *request, void *buf, size_t count,
      int flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_readv_fd
      Src: /src/lwan/src/lib/lwan-io-wrappers.h:107,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-io-wrappers.h:108,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-io-wrappers.h:109,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-io-wrappers.h:110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - request
    - iov
    - iov_count
    argTypes:
    - struct lwan_request*
    - struct iovec*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 104
    functionDepth: 2
    functionLinenumber: 104
    functionLinenumberEnd: 113
    functionName: lwan_readv
    functionSourceFile: /src/lwan/src/lib/lwan-io-wrappers.h
    functionUses: 0
    functionsReached:
    - coro_yield
    - lwan_readv_fd
    - UNLIKELY
    - __builtin_unreachable
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t lwan_readv(struct lwan_request *request, struct iovec *iov,
      int iov_count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - socket_path_
    - ','
    - script_path_
    - ','
    - default_index_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 45
    functionName: FASTCGI
    functionSourceFile: /src/lwan/src/lib/lwan-mod-fastcgi.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FASTCGI(socket_path_, script_path_, default_index_)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sysconf
      Src: /src/lwan/src/lib/lwan-straitjacket.c:44,1
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-straitjacket.c:54,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-straitjacket.c:56,1
    - Dst: getpwnam_r
      Src: /src/lwan/src/lib/lwan-straitjacket.c:60,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-straitjacket.c:63,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-straitjacket.c:69,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-straitjacket.c:72,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 3
    argNames:
    - user
    - uid
    - gid
    argTypes:
    - char*
    - uid_t*
    - gid_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 76
    functionName: get_user_uid_gid
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 0
    functionsReached:
    - free
    - sysconf
    - getpwnam_r
    - lwan_log_perror
    - malloc
    - lwan_log_error
    linkageType: ''
    returnType: bool
    signature: bool get_user_uid_gid(const char *user, uid_t *uid, gid_t *gid)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lwan_log_info
      Src: /src/lwan/src/lib/lwan-straitjacket.c:83,1
    - Dst: setresgid
      Src: /src/lwan/src/lib/lwan-straitjacket.c:86,1
    - Dst: initgroups
      Src: /src/lwan/src/lib/lwan-straitjacket.c:89,1
    - Dst: initgroups
      Src: /src/lwan/src/lib/lwan-straitjacket.c:92,1
    - Dst: setresuid
      Src: /src/lwan/src/lib/lwan-straitjacket.c:95,1
    - Dst: getresuid
      Src: /src/lwan/src/lib/lwan-straitjacket.c:98,1
    - Dst: getresgid
      Src: /src/lwan/src/lib/lwan-straitjacket.c:103,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 19
    argCount: 3
    argNames:
    - uid
    - gid
    - username
    argTypes:
    - uid_t
    - gid_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 109
    functionName: switch_to_user
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 0
    functionsReached:
    - setresgid
    - initgroups
    - getresuid
    - setresuid
    - lwan_log_info
    - getresgid
    linkageType: ''
    returnType: bool
    signature: bool switch_to_user(uid_t uid, gid_t gid, const char *username)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/lwan/src/lib/lwan-straitjacket.c:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - attr
    - size
    - flags
    argTypes:
    - struct landlock_ruleset_attr*
    - size_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 130
    functionName: lwan_landlock_create_ruleset
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 0
    functionsReached:
    - syscall
    linkageType: ''
    returnType: int
    signature: "int lwan_landlock_create_ruleset(const struct landlock_ruleset_attr
      *attr,\n                             const size_t size,\n                             uint32_t
      flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/lwan/src/lib/lwan-straitjacket.c:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - fd
    - type
    - rule_attr
    - flags
    argTypes:
    - int
    - enum landlock_rule_type
    - void*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 138
    functionName: lwan_landlock_add_rule
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 0
    functionsReached:
    - syscall
    linkageType: ''
    returnType: int
    signature: "int lwan_landlock_add_rule(int fd,\n                                         enum
      landlock_rule_type type,\n                                         const void
      *rule_attr,\n                                         uint32_t flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/lwan/src/lib/lwan-straitjacket.c:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fd
    - flags
    argTypes:
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 143
    functionName: lwan_landlock_restrict_self
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 0
    functionsReached:
    - syscall
    linkageType: ''
    returnType: int
    signature: int lwan_landlock_restrict_self(int fd, uint32_t flags)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-straitjacket.c:149,1
    - Dst: lwan_landlock_create_ruleset
      Src: /src/lwan/src/lib/lwan-straitjacket.c:169,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-straitjacket.c:176,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-straitjacket.c:179,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-straitjacket.c:182,1
    - Dst: lwan_landlock_create_ruleset
      Src: /src/lwan/src/lib/lwan-straitjacket.c:227,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-straitjacket.c:229,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-straitjacket.c:238,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 240
    functionName: LWAN_LAZY_GLOBAL
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 0
    functionsReached:
    - free
    - lwan_landlock_create_ruleset
    - lwan_log_perror
    - malloc
    - lwan_log_error
    linkageType: ''
    returnType: void
    signature: void LWAN_LAZY_GLOBAL(struct lwan_landlock *, get_landlock_ruleset)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_landlock_ruleset
      Src: /src/lwan/src/lib/lwan-straitjacket.c:244,1
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan-straitjacket.c:247,1
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan-straitjacket.c:252,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 242
    functionDepth: 1
    functionLinenumber: 242
    functionLinenumberEnd: 257
    functionName: get_landlock
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 0
    functionsReached:
    - lwan_log_debug
    - get_landlock_ruleset
    linkageType: ''
    returnType: struct lwan_landlock
    signature: struct lwan_landlock *get_landlock(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_landlock
      Src: /src/lwan/src/lib/lwan-straitjacket.c:261,1
    - Dst: lwan_landlock_add_rule
      Src: /src/lwan/src/lib/lwan-straitjacket.c:274,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - allowed_access
    - fd
    argTypes:
    - uint64_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 259
    functionDepth: 2
    functionLinenumber: 259
    functionLinenumberEnd: 276
    functionName: lwan_straitjacket_allow_path
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 0
    functionsReached:
    - lwan_landlock_add_rule
    - get_landlock
    linkageType: ''
    returnType: bool
    signature: bool lwan_straitjacket_allow_path(uint64_t allowed_access, int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_straitjacket_allow_path
      Src: /src/lwan/src/lib/lwan-straitjacket.c:280,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 278
    functionDepth: 3
    functionLinenumber: 278
    functionLinenumberEnd: 282
    functionName: lwan_straitjacket_allow_dirfd_ro
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 0
    functionsReached:
    - lwan_straitjacket_allow_path
    linkageType: ''
    returnType: bool
    signature: bool lwan_straitjacket_allow_dirfd_ro(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_straitjacket_allow_path
      Src: /src/lwan/src/lib/lwan-straitjacket.c:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 284
    functionDepth: 3
    functionLinenumber: 284
    functionLinenumberEnd: 289
    functionName: lwan_straitjacket_allow_dirfd_rw
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 0
    functionsReached:
    - lwan_straitjacket_allow_path
    linkageType: ''
    returnType: bool
    signature: bool lwan_straitjacket_allow_dirfd_rw(int fd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_landlock
      Src: /src/lwan/src/lib/lwan-straitjacket.c:293,1
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan-straitjacket.c:299,1
    - Dst: lwan_landlock_add_rule
      Src: /src/lwan/src/lib/lwan-straitjacket.c:308,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - allowed_access
    - port
    argTypes:
    - uint64_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 291
    functionDepth: 2
    functionLinenumber: 291
    functionLinenumberEnd: 310
    functionName: lwan_straitjacket_allow_net
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 0
    functionsReached:
    - lwan_log_debug
    - lwan_landlock_add_rule
    - get_landlock
    linkageType: ''
    returnType: bool
    signature: bool lwan_straitjacket_allow_net(uint64_t allowed_access, int port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_straitjacket_allow_net
      Src: /src/lwan/src/lib/lwan-straitjacket.c:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 312
    functionDepth: 3
    functionLinenumber: 312
    functionLinenumberEnd: 315
    functionName: lwan_straitjacket_allow_bind
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 0
    functionsReached:
    - lwan_straitjacket_allow_net
    linkageType: ''
    returnType: bool
    signature: bool lwan_straitjacket_allow_bind(int port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_straitjacket_allow_net
      Src: /src/lwan/src/lib/lwan-straitjacket.c:319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 317
    functionDepth: 3
    functionLinenumber: 317
    functionLinenumberEnd: 320
    functionName: lwan_straitjacket_allow_connect
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 0
    functionsReached:
    - lwan_straitjacket_allow_net
    linkageType: ''
    returnType: bool
    signature: bool lwan_straitjacket_allow_connect(int port)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/lwan/src/lib/lwan-straitjacket.c:324,1
    - Dst: lwan_straitjacket_allow_dirfd_ro
      Src: /src/lwan/src/lib/lwan-straitjacket.c:327,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-straitjacket.c:328,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 322
    functionDepth: 4
    functionLinenumber: 322
    functionLinenumberEnd: 330
    functionName: lwan_straitjacket_allow_dir_path_ro
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 0
    functionsReached:
    - open
    - close
    - lwan_straitjacket_allow_dirfd_ro
    linkageType: ''
    returnType: bool
    signature: bool lwan_straitjacket_allow_dir_path_ro(const char *path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/lwan/src/lib/lwan-straitjacket.c:334,1
    - Dst: lwan_straitjacket_allow_dirfd_rw
      Src: /src/lwan/src/lib/lwan-straitjacket.c:337,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-straitjacket.c:338,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 332
    functionDepth: 4
    functionLinenumber: 332
    functionLinenumberEnd: 340
    functionName: lwan_straitjacket_allow_dir_path_rw
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 1
    functionsReached:
    - lwan_straitjacket_allow_dirfd_rw
    - open
    - close
    linkageType: ''
    returnType: bool
    signature: bool lwan_straitjacket_allow_dir_path_rw(const char *path)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lwan_straitjacket_allow_dir_path_ro
      Src: /src/lwan/src/lib/lwan-straitjacket.c:347,1
    - Dst: lwan_straitjacket_allow_dir_path_ro
      Src: /src/lwan/src/lib/lwan-straitjacket.c:351,1
    - Dst: lwan_straitjacket_allow_dir_path_ro
      Src: /src/lwan/src/lib/lwan-straitjacket.c:355,1
    - Dst: lwan_straitjacket_allow_dir_path_ro
      Src: /src/lwan/src/lib/lwan-straitjacket.c:360,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 342
    functionDepth: 5
    functionLinenumber: 342
    functionLinenumberEnd: 365
    functionName: add_base_rules
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 0
    functionsReached:
    - lwan_straitjacket_allow_dir_path_ro
    linkageType: ''
    returnType: bool
    signature: bool add_base_rules(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: get_landlock
      Src: /src/lwan/src/lib/lwan-straitjacket.c:369,1
    - Dst: add_base_rules
      Src: /src/lwan/src/lib/lwan-straitjacket.c:374,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-straitjacket.c:375,1
    - Dst: prctl
      Src: /src/lwan/src/lib/lwan-straitjacket.c:379,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-straitjacket.c:380,1
    - Dst: lwan_landlock_restrict_self
      Src: /src/lwan/src/lib/lwan-straitjacket.c:384,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-straitjacket.c:385,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-straitjacket.c:389,1
    - Dst: lwan_always_bzero
      Src: /src/lwan/src/lib/lwan-straitjacket.c:390,1
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan-straitjacket.c:393,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 367
    functionDepth: 6
    functionLinenumber: 367
    functionLinenumberEnd: 395
    functionName: lwan_landlock_enforce
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 0
    functionsReached:
    - add_base_rules
    - lwan_landlock_restrict_self
    - close
    - lwan_always_bzero
    - lwan_log_debug
    - lwan_log_perror
    - prctl
    - get_landlock
    - lwan_log_error
    linkageType: ''
    returnType: bool
    signature: bool lwan_landlock_enforce(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_landlock
      Src: /src/lwan/src/lib/lwan-straitjacket.c:398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 397
    functionDepth: 2
    functionLinenumber: 397
    functionLinenumberEnd: 399
    functionName: lwan_landlock_available
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 0
    functionsReached:
    - get_landlock
    linkageType: ''
    returnType: bool
    signature: bool lwan_landlock_available(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 401
    functionDepth: 0
    functionLinenumber: 401
    functionLinenumberEnd: 401
    functionName: lwan_landlock_available
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool lwan_landlock_available(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 402
    functionName: lwan_landlock_enforce
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool lwan_landlock_enforce(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 404
    functionDepth: 0
    functionLinenumber: 404
    functionLinenumberEnd: 404
    functionName: lwan_straitjacket_allow_bind
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool lwan_straitjacket_allow_bind(int port)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - port
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 405
    functionDepth: 0
    functionLinenumber: 405
    functionLinenumberEnd: 405
    functionName: lwan_straitjacket_allow_connect
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool lwan_straitjacket_allow_connect(int port)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 406
    functionDepth: 0
    functionLinenumber: 406
    functionLinenumberEnd: 406
    functionName: lwan_straitjacket_allow_dirfd_ro
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool lwan_straitjacket_allow_dirfd_ro(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 407
    functionName: lwan_straitjacket_allow_dirfd_rw
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool lwan_straitjacket_allow_dirfd_rw(int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 408
    functionDepth: 0
    functionLinenumber: 408
    functionLinenumberEnd: 408
    functionName: lwan_straitjacket_allow_dir_path_ro
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool lwan_straitjacket_allow_dir_path_ro(const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 409
    functionDepth: 0
    functionLinenumber: 409
    functionLinenumberEnd: 409
    functionName: lwan_straitjacket_allow_dir_path_rw
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool lwan_straitjacket_allow_dir_path_rw(const char *path)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/lwan/src/lib/lwan-straitjacket.c:419,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan-straitjacket.c:425,1
    - Dst: snprintf
      Src: /src/lwan/src/lib/lwan-straitjacket.c:429,1
    - Dst: dirfd
      Src: /src/lwan/src/lib/lwan-straitjacket.c:429,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-straitjacket.c:431,1
    - Dst: readdir
      Src: /src/lwan/src/lib/lwan-straitjacket.c:434,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-straitjacket.c:439,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-straitjacket.c:441,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-straitjacket.c:441,1
    - Dst: readlinkat
      Src: /src/lwan/src/lib/lwan-straitjacket.c:444,1
    - Dst: dirfd
      Src: /src/lwan/src/lib/lwan-straitjacket.c:444,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan-straitjacket.c:446,1
    - Dst: stat
      Src: /src/lwan/src/lib/lwan-straitjacket.c:459,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan-straitjacket.c:460,1
    - Dst: S_ISDIR
      Src: /src/lwan/src/lib/lwan-straitjacket.c:464,1
    - Dst: closedir
      Src: /src/lwan/src/lib/lwan-straitjacket.c:465,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-straitjacket.c:467,1
    - Dst: closedir
      Src: /src/lwan/src/lib/lwan-straitjacket.c:474,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 413
    functionDepth: 1
    functionLinenumber: 413
    functionLinenumberEnd: 475
    functionName: abort_on_open_directories
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 0
    functionsReached:
    - opendir
    - lwan_log_critical
    - closedir
    - readdir
    - lwan_log_critical_perror
    - readlinkat
    - S_ISDIR
    - dirfd
    - snprintf
    - streq
    - stat
    linkageType: ''
    returnType: void
    signature: void abort_on_open_directories(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 477
    functionDepth: 0
    functionLinenumber: 477
    functionLinenumberEnd: 477
    functionName: abort_on_open_directories
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void abort_on_open_directories(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_user_uid_gid
      Src: /src/lwan/src/lib/lwan-straitjacket.c:490,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-straitjacket.c:491,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - sj
    - uid
    - gid
    argTypes:
    - struct lwan_straitjacket*
    - uid_t*
    - gid_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 480
    functionDepth: 2
    functionLinenumber: 480
    functionLinenumberEnd: 496
    functionName: lookup_user
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 0
    functionsReached:
    - get_user_uid_gid
    - lwan_log_critical
    linkageType: ''
    returnType: bool
    signature: bool lookup_user(const struct lwan_straitjacket *sj, uid_t *uid, gid_t
      *gid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: geteuid
      Src: /src/lwan/src/lib/lwan-straitjacket.c:503,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-straitjacket.c:504,1
    - Dst: abort_on_open_directories
      Src: /src/lwan/src/lib/lwan-straitjacket.c:506,1
    - Dst: chroot
      Src: /src/lwan/src/lib/lwan-straitjacket.c:508,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan-straitjacket.c:509,1
    - Dst: chdir
      Src: /src/lwan/src/lib/lwan-straitjacket.c:513,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan-straitjacket.c:514,1
    - Dst: lwan_log_info
      Src: /src/lwan/src/lib/lwan-straitjacket.c:516,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - sj
    argTypes:
    - struct lwan_straitjacket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 498
    functionDepth: 2
    functionLinenumber: 498
    functionLinenumberEnd: 517
    functionName: enforce_chroot
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 0
    functionsReached:
    - abort_on_open_directories
    - lwan_log_critical
    - geteuid
    - chdir
    - lwan_log_info
    - chroot
    - lwan_log_critical_perror
    linkageType: ''
    returnType: void
    signature: void enforce_chroot(const struct lwan_straitjacket *sj)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lookup_user
      Src: /src/lwan/src/lib/lwan-straitjacket.c:523,1
    - Dst: lwan_landlock_available
      Src: /src/lwan/src/lib/lwan-straitjacket.c:525,1
    - Dst: enforce_chroot
      Src: /src/lwan/src/lib/lwan-straitjacket.c:526,1
    - Dst: switch_to_user
      Src: /src/lwan/src/lib/lwan-straitjacket.c:530,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-straitjacket.c:531,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-straitjacket.c:533,1
    - Dst: capset
      Src: /src/lwan/src/lib/lwan-straitjacket.c:543,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan-straitjacket.c:544,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - sj
    argTypes:
    - struct lwan_straitjacket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 519
    functionDepth: 3
    functionLinenumber: 519
    functionLinenumberEnd: 546
    functionName: lwan_straitjacket_enforce
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 1
    functionsReached:
    - lookup_user
    - lwan_log_critical
    - __builtin_unreachable
    - switch_to_user
    - enforce_chroot
    - lwan_log_critical_perror
    - capset
    - lwan_landlock_available
    linkageType: ''
    returnType: void
    signature: void lwan_straitjacket_enforce(const struct lwan_straitjacket *sj)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: config_read_line
      Src: /src/lwan/src/lib/lwan-straitjacket.c:555,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-straitjacket.c:559,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-straitjacket.c:561,1
    - Dst: strdupa
      Src: /src/lwan/src/lib/lwan-straitjacket.c:564,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-straitjacket.c:565,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-straitjacket.c:567,1
    - Dst: lwan_landlock_available
      Src: /src/lwan/src/lib/lwan-straitjacket.c:570,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-straitjacket.c:571,1
    - Dst: strdupa
      Src: /src/lwan/src/lib/lwan-straitjacket.c:574,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-straitjacket.c:575,1
    - Dst: parse_bool
      Src: /src/lwan/src/lib/lwan-straitjacket.c:576,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-straitjacket.c:578,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-straitjacket.c:583,1
    - Dst: lwan_straitjacket_enforce
      Src: /src/lwan/src/lib/lwan-straitjacket.c:586,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-straitjacket.c:596,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 38
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 548
    functionDepth: 4
    functionLinenumber: 548
    functionLinenumberEnd: 597
    functionName: lwan_straitjacket_enforce_from_config
    functionSourceFile: /src/lwan/src/lib/lwan-straitjacket.c
    functionUses: 0
    functionsReached:
    - parse_bool
    - lwan_straitjacket_enforce
    - strdupa
    - config_read_line
    - streq
    - lwan_landlock_available
    - config_error
    linkageType: ''
    returnType: void
    signature: void lwan_straitjacket_enforce_from_config(struct config *c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - symbol_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 57
    functionName: Z
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Z(symbol_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - symbol_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 60
    functionName: Z
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Z(symbol_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 65
    functionName: MINCORE_VEC_LEN
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MINCORE_VEC_LEN(len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mode
    argTypes:
    - mode_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 275
    functionName: is_world_readable
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool is_world_readable(mode_t mode)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: opendir
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:286,1
    - Dst: dirfd
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:290,1
    - Dst: readdir
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:294,1
    - Dst: fstatat
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:300,1
    - Dst: is_world_readable
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:303,1
    - Dst: S_ISDIR
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:306,1
    - Dst: S_ISREG
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:311,1
    - Dst: lwan_determine_mime_type_for_file_name
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:315,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:341,1
    - Dst: closedir
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:346,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 57
    argCount: 2
    argNames:
    - coro
    - data
    argTypes:
    - struct coro*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 277
    functionDepth: 1
    functionLinenumber: 277
    functionLinenumberEnd: 348
    functionName: directory_list_generator
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - lwan_determine_mime_type_for_file_name
    - opendir
    - fstatat
    - readdir
    - is_world_readable
    - closedir
    - S_ISREG
    - S_ISDIR
    - dirfd
    - coro_yield
    linkageType: ''
    returnType: int
    signature: int directory_list_generator(struct coro *coro, void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - compressed_sz
    - uncompressed_sz
    argTypes:
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 357
    functionName: is_compression_worthy
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: "ALWAYS_INLINE is_compression_worthy(const size_t compressed_sz,\n
      \                                               const size_t uncompressed_sz)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: libdeflate_alloc_compressor
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:362,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 363
    functionName: LWAN_LAZY_THREAD_LOCAL
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - libdeflate_alloc_compressor
    linkageType: ''
    returnType: void
    signature: void LWAN_LAZY_THREAD_LOCAL(struct libdeflate_compressor *, libdeflate_compressor)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: libdeflate_compressor
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:368,1
    - Dst: libdeflate_deflate_compress_bound
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:371,1
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:372,1
    - Dst: libdeflate_deflate_compress
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:376,1
    - Dst: is_compression_worthy
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:380,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:385,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - uncompressed
    - compressed
    argTypes:
    - struct lwan_value*
    - struct lwan_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 365
    functionDepth: 1
    functionLinenumber: 365
    functionLinenumberEnd: 390
    functionName: deflate_value
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - libdeflate_compressor
    - libdeflate_deflate_compress
    - free
    - malloc
    - is_compression_worthy
    - libdeflate_deflate_compress_bound
    linkageType: ''
    returnType: void
    signature: "void deflate_value(const struct lwan_value *uncompressed,\n                          struct
      lwan_value *compressed)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: Z
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:395,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:399,1
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:399,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:402,1
    - Dst: Z
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:402,1
    - Dst: is_compression_worthy
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:407,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:411,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - uncompressed
    - compressed
    argTypes:
    - struct lwan_value*
    - struct lwan_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 392
    functionDepth: 1
    functionLinenumber: 392
    functionLinenumberEnd: 415
    functionName: deflate_value
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - free
    - malloc
    - is_compression_worthy
    - Z
    - UNLIKELY
    linkageType: ''
    returnType: void
    signature: "void deflate_value(const struct lwan_value *uncompressed,\n                          struct
      lwan_value *compressed)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BrotliEncoderMaxCompressedSize
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:424,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:428,1
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:428,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:431,1
    - Dst: BrotliEncoderCompress
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:432,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:440,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:444,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - uncompressed
    - brotli
    - deflated
    argTypes:
    - struct lwan_value*
    - struct lwan_value*
    - struct lwan_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 448
    functionName: brotli_value
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - BrotliEncoderMaxCompressedSize
    - free
    - BrotliEncoderCompress
    - LIKELY
    - malloc
    - UNLIKELY
    linkageType: ''
    returnType: void
    signature: "void brotli_value(const struct lwan_value *uncompressed,\n                         struct
      lwan_value *brotli,\n                         const struct lwan_value *deflated)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ZSTD_compressBound
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:456,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:460,1
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:460,1
    - Dst: ZSTD_compress
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:463,1
    - Dst: ZSTD_defaultCLevel
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:464,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:465,1
    - Dst: ZSTD_isError
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:465,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:470,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:474,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - uncompressed
    - zstd
    - deflated
    argTypes:
    - struct lwan_value*
    - struct lwan_value*
    - struct lwan_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 452
    functionDepth: 0
    functionLinenumber: 452
    functionLinenumberEnd: 478
    functionName: zstd_value
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - ZSTD_defaultCLevel
    - ZSTD_isError
    - ZSTD_compressBound
    - free
    - LIKELY
    - ZSTD_compress
    - malloc
    - UNLIKELY
    linkageType: ''
    returnType: void
    signature: "void zstd_value(const struct lwan_value *uncompressed,\n                       struct
      lwan_value *zstd,\n                       const struct lwan_value *deflated)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_readahead_queue
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:484,1
    - Dst: LWAN_MIN
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:484,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - priv
    - fd
    - size
    argTypes:
    - struct serve_files_priv*
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 481
    functionDepth: 1
    functionLinenumber: 481
    functionLinenumberEnd: 485
    functionName: try_readahead
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - LWAN_MIN
    - lwan_readahead_queue
    linkageType: ''
    returnType: void
    signature: void try_readahead(const struct serve_files_priv *priv, int fd, size_t
      size)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:497,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:498,1
    - Dst: openat
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:501,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:502,1
    - Dst: fstat
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:505,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:506,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:509,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:512,1
    - Dst: is_world_readable
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:512,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:515,1
    - Dst: is_compression_worthy
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:515,1
    - Dst: try_readahead
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:519,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:525,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 4
    argNames:
    - relpath
    - priv
    - uncompressed
    - compressed_sz
    argTypes:
    - char*
    - struct serve_files_priv*
    - struct stat*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 487
    functionDepth: 2
    functionLinenumber: 487
    functionLinenumberEnd: 529
    functionName: try_open_compressed
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - fstat
    - openat
    - is_world_readable
    - LIKELY
    - close
    - is_compression_worthy
    - snprintf
    - UNLIKELY
    - try_readahead
    linkageType: ''
    returnType: int
    signature: "int try_open_compressed(const char *relpath,\n                               const
      struct serve_files_priv *priv,\n                               const struct
      stat *uncompressed,\n                               size_t *compressed_sz)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:538,1
    - Dst: mmap
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:541,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:542,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:543,1
    - Dst: set_vma_anon_name
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:546,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - priv
    - fd
    - size
    - value
    argTypes:
    - struct serve_files_priv*
    - int
    - size_t
    - struct lwan_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 531
    functionDepth: 1
    functionLinenumber: 531
    functionLinenumberEnd: 554
    functionName: mmap_fd
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - set_vma_anon_name
    - mmap
    - UNLIKELY
    - close
    linkageType: ''
    returnType: bool
    signature: "bool mmap_fd(const struct serve_files_priv *priv __attribute__((unused)),\n
      \                   int fd,\n                    const size_t size,\n                    struct
      lwan_value *value)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: openat
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:565,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:566,1
    - Dst: mmap_fd
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:568,1
    - Dst: lwan_madvise_queue
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:570,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:572,1
    - Dst: try_open_compressed
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:575,1
    - Dst: mmap_fd
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:576,1
    - Dst: deflate_value
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:582,1
    - Dst: brotli_value
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:584,1
    - Dst: zstd_value
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:587,1
    - Dst: lwan_determine_mime_type_for_file_name
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:591,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 4
    argNames:
    - ce
    - priv
    - full_path
    - st
    argTypes:
    - struct file_cache_entry*
    - struct serve_files_priv*
    - char*
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 556
    functionDepth: 3
    functionLinenumber: 556
    functionLinenumberEnd: 596
    functionName: mmap_init
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - deflate_value
    - lwan_determine_mime_type_for_file_name
    - lwan_madvise_queue
    - openat
    - try_open_compressed
    - mmap_fd
    - LIKELY
    - brotli_value
    - zstd_value
    - UNLIKELY
    linkageType: ''
    returnType: bool
    signature: "bool mmap_init(struct file_cache_entry *ce,\n                      struct
      serve_files_priv *priv,\n                      const char *full_path,\n                      struct
      stat *st)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lwan_determine_mime_type_for_file_name
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:606,1
    - Dst: openat
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:608,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:609,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:626,1
    - Dst: try_open_compressed
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:628,1
    - Dst: try_readahead
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:638,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 4
    argNames:
    - ce
    - priv
    - full_path
    - st
    argTypes:
    - struct file_cache_entry*
    - struct serve_files_priv*
    - char*
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 598
    functionDepth: 3
    functionLinenumber: 598
    functionLinenumberEnd: 641
    functionName: sendfile_init
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - lwan_determine_mime_type_for_file_name
    - try_open_compressed
    - openat
    - LIKELY
    - UNLIKELY
    - try_readahead
    linkageType: ''
    returnType: bool
    signature: "bool sendfile_init(struct file_cache_entry *ce,\n                          struct
      serve_files_priv *priv,\n                          const char *full_path,\n
      \                         struct stat *st)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:657,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - full_path
    - priv
    argTypes:
    - char*
    - struct serve_files_priv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 643
    functionDepth: 1
    functionLinenumber: 643
    functionLinenumberEnd: 661
    functionName: get_rel_path
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - streq
    linkageType: ''
    returnType: char
    signature: "char *get_rel_path(const char *full_path,\n                                struct
      serve_files_priv *priv)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:673,1
    - Dst: snprintf
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:677,1
    - Dst: lwan_strbuf_init_from_file
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:681,1
    - Dst: lwan_strbuf_get_buffer
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:682,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 3
    argNames:
    - readme
    - priv
    - full_path
    argTypes:
    - struct lwan_strbuf*
    - struct serve_files_priv*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 663
    functionDepth: 1
    functionLinenumber: 663
    functionLinenumberEnd: 686
    functionName: dirlist_find_readme
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - snprintf
    - lwan_strbuf_get_buffer
    - N_ELEMENTS
    - lwan_strbuf_init_from_file
    linkageType: ''
    returnType: char
    signature: "char *dirlist_find_readme(struct lwan_strbuf *readme,\n                                       struct
      serve_files_priv *priv,\n                                       const char *full_path)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_init
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:697,1
    - Dst: lwan_strbuf_init
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:699,1
    - Dst: get_rel_path
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:704,1
    - Dst: dirlist_find_readme
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:705,1
    - Dst: lwan_tpl_apply_with_buffer
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:708,1
    - Dst: lwan_strbuf_to_value
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:714,1
    - Dst: deflate_value
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:715,1
    - Dst: brotli_value
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:717,1
    - Dst: lwan_strbuf_free
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:724,1
    - Dst: lwan_strbuf_free
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:726,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 4
    argNames:
    - ce
    - priv
    - full_path
    - st
    argTypes:
    - struct file_cache_entry*
    - struct serve_files_priv*
    - char*
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 688
    functionDepth: 4
    functionLinenumber: 688
    functionLinenumberEnd: 728
    functionName: dirlist_init
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - deflate_value
    - lwan_strbuf_free
    - lwan_strbuf_init
    - dirlist_find_readme
    - lwan_tpl_apply_with_buffer
    - get_rel_path
    - brotli_value
    - lwan_strbuf_to_value
    linkageType: ''
    returnType: bool
    signature: "bool dirlist_init(struct file_cache_entry *ce,\n                         struct
      serve_files_priv *priv,\n                         const char *full_path,\n                         struct
      stat *st __attribute__((unused)))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: asprintf
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:737,1
    - Dst: get_rel_path
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:738,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ce
    - priv
    - full_path
    - st
    argTypes:
    - struct file_cache_entry*
    - struct serve_files_priv*
    - char*
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 730
    functionDepth: 2
    functionLinenumber: 730
    functionLinenumberEnd: 739
    functionName: redir_init
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - asprintf
    - get_rel_path
    linkageType: ''
    returnType: bool
    signature: "bool redir_init(struct file_cache_entry *ce,\n                       struct
      serve_files_priv *priv,\n                       const char *full_path,\n                       struct
      stat *st __attribute__((unused)))"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: S_ISDIR
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:749,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:757,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:762,1
    - Dst: snprintf
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:766,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:768,1
    - Dst: fstatat
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:775,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:776,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:779,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:789,1
    - Dst: is_world_readable
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:789,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:793,1
    - Dst: strncpy
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:796,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:801,1
    - Dst: S_ISREG
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:801,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 4
    argNames:
    - priv
    - key
    - full_path
    - st
    argTypes:
    - struct serve_files_priv*
    - char*
    - char*
    - struct stat*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 810
      start: 741
    functionDepth: 1
    functionLinenumber: 741
    functionLinenumberEnd: 810
    functionName: get_funcs
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - fstatat
    - is_world_readable
    - LIKELY
    - S_ISREG
    - strlen
    - S_ISDIR
    - strncpy
    - snprintf
    - UNLIKELY
    linkageType: ''
    returnType: struct cache_funcs
    signature: "struct cache_funcs *get_funcs(struct serve_files_priv *priv,\n                                           const
      char *key,\n                                           char *full_path,\n                                           struct
      stat *st)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:820,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:821,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:824,1
    - Dst: struct cache_funcs*::init
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:824,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:829,1
    - Dst: create_cache_entry_from_funcs
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:834,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - priv
    - full_path
    - st
    - funcs
    argTypes:
    - struct serve_files_priv*
    - char*
    - struct stat*
    - struct cache_funcs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 835
      start: 812
    functionDepth: 1
    functionLinenumber: 812
    functionLinenumberEnd: 835
    functionName: create_cache_entry_from_funcs
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 1
    functionsReached:
    - free
    - LIKELY
    - create_cache_entry_from_funcs
    - malloc
    - struct cache_funcs*::init
    - UNLIKELY
    linkageType: ''
    returnType: struct file_cache_entry
    signature: "struct file_cache_entry *\ncreate_cache_entry_from_funcs(struct serve_files_priv
      *priv,\n                              const char *full_path,\n                              struct
      stat *st,\n                              const struct cache_funcs *funcs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct file_cache_entry*::funcs::free
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:842,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:843,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - entry
    - context
    argTypes:
    - struct cache_entry*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 844
      start: 837
    functionDepth: 0
    functionLinenumber: 837
    functionLinenumberEnd: 844
    functionName: destroy_cache_entry
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - struct file_cache_entry*::funcs::free
    - free
    linkageType: ''
    returnType: void
    signature: "void destroy_cache_entry(struct cache_entry *entry,\n                                void
      *context __attribute__((unused)))"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:857,1
    - Dst: realpathat2
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:858,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:861,1
    - Dst: is_world_readable
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:861,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:864,1
    - Dst: strncmp
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:864,1
    - Dst: get_funcs
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:867,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:868,1
    - Dst: create_cache_entry_from_funcs
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:871,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:872,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:875,1
    - Dst: lwan_format_rfc_time
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:875,1
    - Dst: destroy_cache_entry
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:877,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - key
    - cache_ctx
    - create_ctx
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 846
    functionDepth: 2
    functionLinenumber: 846
    functionLinenumberEnd: 883
    functionName: create_cache_entry
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - is_world_readable
    - destroy_cache_entry
    - get_funcs
    - strncmp
    - realpathat2
    - create_cache_entry_from_funcs
    - lwan_format_rfc_time
    - UNLIKELY
    linkageType: ''
    returnType: struct cache_entry
    signature: "struct cache_entry *create_cache_entry(const void *key,\n                                              void
      *cache_ctx,\n                                              void *create_ctx\n
      \                                             __attribute__((unused)))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: munmap
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:889,1
    - Dst: munmap
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:891,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:892,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:894,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:897,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - fce
    argTypes:
    - struct file_cache_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 885
    functionDepth: 0
    functionLinenumber: 885
    functionLinenumberEnd: 899
    functionName: mmap_free
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - munmap
    - free
    linkageType: ''
    returnType: void
    signature: void mmap_free(struct file_cache_entry *fce)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:906,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:908,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - fce
    argTypes:
    - struct file_cache_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 909
      start: 901
    functionDepth: 0
    functionLinenumber: 901
    functionLinenumberEnd: 909
    functionName: sendfile_free
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void sendfile_free(struct file_cache_entry *fce)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_free
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:915,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:916,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:918,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - fce
    argTypes:
    - struct file_cache_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 911
    functionDepth: 1
    functionLinenumber: 911
    functionLinenumberEnd: 920
    functionName: dirlist_free
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_free
    - free
    linkageType: ''
    returnType: void
    signature: void dirlist_free(struct file_cache_entry *fce)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:926,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fce
    argTypes:
    - struct file_cache_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 927
      start: 922
    functionDepth: 0
    functionLinenumber: 922
    functionLinenumberEnd: 927
    functionName: redir_free
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void redir_free(struct file_cache_entry *fce)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: realpath
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:934,1
    - Dst: strrchr
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:938,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:943,1
    - Dst: asprintf
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:946,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - root_path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 929
    functionDepth: 0
    functionLinenumber: 929
    functionLinenumberEnd: 950
    functionName: lwan_get_real_root_path
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - realpath
    - strrchr
    - strdup
    - asprintf
    linkageType: ''
    returnType: char
    signature: char *lwan_get_real_root_path(const char *root_path)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:960,1
    - Dst: lwan_get_real_root_path
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:964,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:966,1
    - Dst: open
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:971,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:973,1
    - Dst: lwan_straitjacket_allow_dirfd_ro
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:977,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:978,1
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:982,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:984,1
    - Dst: cache_create
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:988,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:991,1
    - Dst: lwan_tpl_compile_file
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:996,1
    - Dst: lwan_tpl_compile_value_full
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1000,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1005,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1009,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1011,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1016,1
    - Dst: cache_destroy
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1034,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1036,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1039,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1041,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 81
    argCount: 2
    argNames:
    - prefix
    - args
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 952
    functionDepth: 6
    functionLinenumber: 952
    functionLinenumberEnd: 1044
    functionName: serve_files_create
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - lwan_get_real_root_path
    - strdup
    - lwan_log_perror
    - free
    - cache_create
    - lwan_tpl_compile_value_full
    - open
    - cache_destroy
    - close
    - strlen
    - lwan_straitjacket_allow_dirfd_ro
    - malloc
    - lwan_tpl_compile_file
    - lwan_log_error
    linkageType: ''
    returnType: void
    signature: void *serve_files_create(const char *prefix, void *args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_find
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1050,1
    - Dst: hash_find
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1051,1
    - Dst: parse_bool
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1053,1
    - Dst: hash_find
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1053,1
    - Dst: parse_bool
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1054,1
    - Dst: hash_find
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1054,1
    - Dst: hash_find
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1055,1
    - Dst: parse_long
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1056,1
    - Dst: hash_find
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1056,1
    - Dst: parse_bool
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1059,1
    - Dst: hash_find
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1059,1
    - Dst: parse_time_period
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1060,1
    - Dst: hash_find
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1060,1
    - Dst: serve_files_create
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1064,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - prefix
    - hash
    argTypes:
    - char*
    - struct hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1065
      start: 1046
    functionDepth: 7
    functionLinenumber: 1046
    functionLinenumberEnd: 1065
    functionName: serve_files_create_from_hash
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - parse_bool
    - parse_long
    - hash_find
    - parse_time_period
    - serve_files_create
    linkageType: ''
    returnType: void
    signature: "void *serve_files_create_from_hash(const char *prefix,\n                                          const
      struct hash *hash)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1072,1
    - Dst: lwan_tpl_free
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1076,1
    - Dst: cache_destroy
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1077,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1078,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1079,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1080,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1081,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1082
      start: 1067
    functionDepth: 4
    functionLinenumber: 1067
    functionLinenumberEnd: 1082
    functionName: serve_files_destroy
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - free
    - cache_destroy
    - close
    - lwan_log_warning
    - lwan_tpl_free
    linkageType: ''
    returnType: void
    signature: void serve_files_destroy(void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_request_get_if_modified_since
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1088,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1090,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - request
    - mtime
    argTypes:
    - struct lwan_request*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1091
      start: 1084
    functionDepth: 0
    functionLinenumber: 1084
    functionLinenumberEnd: 1091
    functionName: client_has_fresh_content
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - lwan_request_get_if_modified_since
    - LIKELY
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: "ALWAYS_INLINE client_has_fresh_content(struct lwan_request *request,\n
      \                                                  time_t mtime)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: uint_to_string
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1109,1
    - Dst: lwan_prepare_response_header_full
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1116,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 6
    argNames:
    - request
    - return_status
    - fce
    - size
    - user_hdr
    - header_buf
    argTypes:
    - struct lwan_request*
    - enum lwan_http_status
    - struct file_cache_entry*
    - size_t
    - struct lwan_key_value*
    - char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1119
      start: 1093
    functionDepth: 1
    functionLinenumber: 1093
    functionLinenumberEnd: 1119
    functionName: prepare_headers
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - lwan_prepare_response_header_full
    - uint_to_string
    linkageType: ''
    returnType: size_t
    signature: "size_t prepare_headers(struct lwan_request *request,\n                              enum
      lwan_http_status return_status,\n                              struct file_cache_entry
      *fce,\n                              size_t size,\n                              const
      struct lwan_key_value *user_hdr,\n                              char header_buf[static
      DEFAULT_HEADERS_SIZE])"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lwan_request_get_range
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1125,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1128,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1137,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1141,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1148,1
    - Dst: __builtin_sub_overflow
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1148,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 4
    argNames:
    - request
    - from
    - to
    - size
    argTypes:
    - struct lwan_request*
    - off_t*
    - off_t*
    - off_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1155
      start: 1121
    functionDepth: 0
    functionLinenumber: 1121
    functionLinenumberEnd: 1155
    functionName: compute_range
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - UNLIKELY
    - __builtin_sub_overflow
    - lwan_request_get_range
    - LIKELY
    linkageType: ''
    returnType: enum lwan_http_status
    signature: enum lwan_http_status compute_range(struct lwan_request *request, off_t
      *from, off_t *to, off_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_request_get_accept_encoding
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - request
    - encoding
    argTypes:
    - struct lwan_request*
    - enum lwan_request_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1161
      start: 1157
    functionDepth: 0
    functionLinenumber: 1157
    functionLinenumberEnd: 1161
    functionName: accepts_encoding
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - lwan_request_get_accept_encoding
    linkageType: ''
    returnType: bool
    signature: "bool accepts_encoding(struct lwan_request *request,\n                                    const
      enum lwan_request_flags encoding)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: accepts_encoding
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1176,1
    - Dst: compute_range
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1187,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1188,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1195,1
    - Dst: prepare_headers
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1207,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1209,1
    - Dst: lwan_request_get_method
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1212,1
    - Dst: lwan_send
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1213,1
    - Dst: lwan_sendfile
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1215,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 36
    argCount: 2
    argNames:
    - request
    - data
    argTypes:
    - struct lwan_request*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1219
      start: 1163
    functionDepth: 4
    functionLinenumber: 1163
    functionLinenumberEnd: 1219
    functionName: sendfile_serve
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - accepts_encoding
    - prepare_headers
    - lwan_sendfile
    - lwan_send
    - compute_range
    - lwan_request_get_method
    - UNLIKELY
    linkageType: ''
    returnType: enum lwan_http_status
    signature: "enum lwan_http_status sendfile_serve(struct lwan_request *request,\n
      \                                           void *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_set_static
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 6
    argNames:
    - request
    - mime_type
    - buffer
    - buffer_len
    - headers
    - status_code
    argTypes:
    - struct lwan_request*
    - char*
    - void*
    - size_t
    - struct lwan_key_value*
    - enum lwan_http_status
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1234
      start: 1221
    functionDepth: 1
    functionLinenumber: 1221
    functionLinenumberEnd: 1234
    functionName: serve_buffer
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_set_static
    linkageType: ''
    returnType: enum lwan_http_status
    signature: "enum lwan_http_status serve_buffer(struct lwan_request *request,\n
      \                                         const char *mime_type,\n                                          const
      void *buffer,\n                                          size_t buffer_len,\n
      \                                         const struct lwan_key_value *headers,\n
      \                                         enum lwan_http_status status_code)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: serve_buffer
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1243,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - request
    - mime_type
    - value
    - headers
    - status_code
    argTypes:
    - struct lwan_request*
    - char*
    - struct lwan_value*
    - struct lwan_key_value*
    - enum lwan_http_status
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1245
      start: 1236
    functionDepth: 2
    functionLinenumber: 1236
    functionLinenumberEnd: 1245
    functionName: serve_value
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - serve_buffer
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: "ALWAYS_INLINE serve_value(struct lwan_request *request,\n            const
      char *mime_type,\n            const struct lwan_value *value,\n            const
      struct lwan_key_value *headers,\n            enum lwan_http_status status_code)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: serve_value
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - request
    - mime_type
    - value
    - headers
    argTypes:
    - struct lwan_request*
    - char*
    - struct lwan_value*
    - struct lwan_key_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1254
      start: 1247
    functionDepth: 3
    functionLinenumber: 1247
    functionLinenumberEnd: 1254
    functionName: serve_value_ok
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - serve_value
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: "ALWAYS_INLINE serve_value_ok(struct lwan_request *request,\n               const
      char *mime_type,\n               const struct lwan_value *value,\n               const
      struct lwan_key_value *headers)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: accepts_encoding
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1267,1
    - Dst: accepts_encoding
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1275,1
    - Dst: accepts_encoding
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1282,1
    - Dst: accepts_encoding
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1288,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 19
    argCount: 3
    argNames:
    - request
    - md
    - header
    argTypes:
    - struct lwan_request*
    - struct mmap_cache_data*
    - struct lwan_key_value**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1294
      start: 1256
    functionDepth: 1
    functionLinenumber: 1256
    functionLinenumberEnd: 1294
    functionName: mmap_best_data
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - accepts_encoding
    linkageType: ''
    returnType: struct lwan_value
    signature: "struct lwan_value *\nmmap_best_data(struct lwan_request *request,\n
      \              struct mmap_cache_data *md,\n               const struct lwan_key_value
      **header)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mmap_best_data
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1303,1
    - Dst: serve_value_ok
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1306,1
    - Dst: ATOMIC_DEC
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1310,1
    - Dst: MINCORE_VEC_LEN
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1311,1
    - Dst: mincore
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1315,1
    - Dst: MINCORE_VEC_LEN
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1316,1
    - Dst: lwan_madvise_queue
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1323,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1324,1
    - Dst: compute_range
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1333,1
    - Dst: serve_buffer
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1337,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 2
    argNames:
    - request
    - data
    argTypes:
    - struct lwan_request*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1339
      start: 1296
    functionDepth: 4
    functionLinenumber: 1296
    functionLinenumberEnd: 1339
    functionName: mmap_serve
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - mmap_best_data
    - MINCORE_VEC_LEN
    - lwan_madvise_queue
    - serve_buffer
    - mincore
    - serve_value_ok
    - ATOMIC_DEC
    - compute_range
    - coro_yield
    linkageType: ''
    returnType: enum lwan_http_status
    signature: "enum lwan_http_status mmap_serve(struct lwan_request *request,\n                                        void
      *data)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lwan_request_get_query_param
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1346,1
    - Dst: accepts_encoding
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1350,1
    - Dst: serve_value_ok
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1351,1
    - Dst: accepts_encoding
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1356,1
    - Dst: serve_value_ok
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1357,1
    - Dst: serve_buffer
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1361,1
    - Dst: lwan_strbuf_get_buffer
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1362,1
    - Dst: lwan_strbuf_get_length
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1363,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1367,1
    - Dst: serve_value_ok
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1368,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1370,1
    - Dst: serve_value_ok
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1371,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1373,1
    - Dst: serve_value_ok
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1374,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - request
    - data
    argTypes:
    - struct lwan_request*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1378
      start: 1341
    functionDepth: 4
    functionLinenumber: 1341
    functionLinenumberEnd: 1378
    functionName: dirlist_serve
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - STR4_INT
    - accepts_encoding
    - serve_buffer
    - lwan_strbuf_get_length
    - lwan_request_get_query_param
    - serve_value_ok
    - lwan_strbuf_get_buffer
    linkageType: ''
    returnType: enum lwan_http_status
    signature: "enum lwan_http_status dirlist_serve(struct lwan_request *request,\n
      \                                          void *data)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1367,1
    - Dst: serve_value_ok
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1368,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1370,1
    - Dst: serve_value_ok
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1371,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1373,1
    - Dst: serve_value_ok
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1375
      start: 1366
    functionDepth: 4
    functionLinenumber: 1366
    functionLinenumberEnd: 1375
    functionName: STRING_SWITCH
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - STR4_INT
    - serve_value_ok
    linkageType: ''
    returnType: void
    signature: void STRING_SWITCH (icon)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_set_staticz
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1387,1
    - Dst: coro_memdup
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - request
    - data
    argTypes:
    - struct lwan_request*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1394
      start: 1380
    functionDepth: 1
    functionLinenumber: 1380
    functionLinenumberEnd: 1394
    functionName: redir_serve
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_set_staticz
    - coro_memdup
    linkageType: ''
    returnType: enum lwan_http_status
    signature: "enum lwan_http_status redir_serve(struct lwan_request *request,\n
      \                                        void *data)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: cache_coro_get_and_ref_entry
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1405,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1407,1
    - Dst: client_has_fresh_content
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1411,1
    - Dst: struct file_cache_entry*::funcs::serve
      Src: /src/lwan/src/lib/lwan-mod-serve-files.c:1424,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - request
    - response
    - instance
    argTypes:
    - struct lwan_request*
    - struct lwan_response*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1425
      start: 1396
    functionDepth: 1
    functionLinenumber: 1396
    functionLinenumberEnd: 1425
    functionName: serve_files_handle_request
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.c
    functionUses: 0
    functionsReached:
    - cache_coro_get_and_ref_entry
    - struct file_cache_entry*::funcs::serve
    - UNLIKELY
    - client_has_fresh_content
    linkageType: ''
    returnType: enum lwan_http_status
    signature: "enum lwan_http_status serve_files_handle_request(struct lwan_request
      *request,\n                           struct lwan_response *response,\n                           void
      *instance)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_free
      Src: /src/lwan/src/lib/lwan-thread.c:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 56
    functionName: lwan_strbuf_free_defer
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_free
    linkageType: ''
    returnType: void
    signature: void lwan_strbuf_free_defer(void *data)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lwan_connection_get_fd
      Src: /src/lwan/src/lib/lwan-thread.c:61,1
    - Dst: ioctl
      Src: /src/lwan/src/lib/lwan-thread.c:68,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:78,1
    - Dst: shutdown
      Src: /src/lwan/src/lib/lwan-thread.c:78,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:79,1
    - Dst: recv
      Src: /src/lwan/src/lib/lwan-thread.c:85,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-thread.c:101,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 27
    argCount: 2
    argNames:
    - l
    - conn
    argTypes:
    - struct lwan*
    - struct lwan_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 105
    functionName: graceful_close
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - shutdown
    - ioctl
    - lwan_connection_get_fd
    - recv
    - coro_yield
    - UNLIKELY
    linkageType: ''
    returnType: void
    signature: "void graceful_close(struct lwan *l,\n                           struct
      lwan_connection *conn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct lwan_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 111
    functionName: lwan_random_seed_prng_for_thread
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void lwan_random_seed_prng_for_thread(const struct lwan_thread *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ATOMIC_INC
      Src: /src/lwan/src/lib/lwan-thread.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 118
    functionName: lwan_random_uint64
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 3
    functionsReached:
    - ATOMIC_INC
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t lwan_random_uint64(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_getentropy
      Src: /src/lwan/src/lib/lwan-thread.c:124,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan-thread.c:125,1
    - Dst: fnv1a_64
      Src: /src/lwan/src/lib/lwan-thread.c:127,1
    - Dst: fnv1a_64
      Src: /src/lwan/src/lib/lwan-thread.c:129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - t
    argTypes:
    - struct lwan_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 131
    functionName: lwan_random_seed_prng_for_thread
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - lwan_log_warning
    - lwan_getentropy
    - fnv1a_64
    linkageType: ''
    returnType: void
    signature: void lwan_random_seed_prng_for_thread(const struct lwan_thread *t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 138
    functionName: lwan_random_uint64
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t lwan_random_uint64(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lwan_random_uint64
      Src: /src/lwan/src/lib/lwan-thread.c:146,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:148,1
    - Dst: lwan_random_seed_prng_for_thread
      Src: /src/lwan/src/lib/lwan-thread.c:149,1
    - Dst: lwan_request_get_id
      Src: /src/lwan/src/lib/lwan-thread.c:150,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct lwan_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 141
    functionDepth: 2
    functionLinenumber: 141
    functionLinenumberEnd: 155
    functionName: lwan_request_get_id
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 2
    functionsReached:
    - lwan_random_seed_prng_for_thread
    - lwan_random_uint64
    - UNLIKELY
    - lwan_request_get_id
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t lwan_request_get_id(struct lwan_request *request)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-thread.c:181,1
    - Dst: memcpy
      Src: /src/lwan/src/lib/lwan-thread.c:187,1
    - Dst: memcpy
      Src: /src/lwan/src/lib/lwan-thread.c:188,1
    - Dst: memcpy
      Src: /src/lwan/src/lib/lwan-thread.c:189,1
    - Dst: memcpy
      Src: /src/lwan/src/lib/lwan-thread.c:190,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:192,1
    - Dst: setsockopt
      Src: /src/lwan/src/lib/lwan-thread.c:192,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-thread.c:193,1
    - Dst: lwan_always_bzero
      Src: /src/lwan/src/lib/lwan-thread.c:196,1
    - Dst: lwan_always_bzero
      Src: /src/lwan/src/lib/lwan-thread.c:200,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 3
    argNames:
    - fd
    - ssl
    - rx_or_tx
    argTypes:
    - int
    - mbedtls_ssl_context*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 158
    functionDepth: 1
    functionLinenumber: 158
    functionLinenumberEnd: 202
    functionName: lwan_setup_tls_keys
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - lwan_log_perror
    - __builtin_unreachable
    - memcpy
    - setsockopt
    - lwan_always_bzero
    - UNLIKELY
    linkageType: ''
    returnType: bool
    signature: bool lwan_setup_tls_keys(int fd, const mbedtls_ssl_context *ssl, int
      rx_or_tx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: format
      Src: /src/lwan/src/lib/lwan-thread.c:204,1
    - Dst: va_start
      Src: /src/lwan/src/lib/lwan-thread.c:212,1
    - Dst: vasprintf
      Src: /src/lwan/src/lib/lwan-thread.c:213,1
    - Dst: mbedtls_strerror
      Src: /src/lwan/src/lib/lwan-thread.c:217,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-thread.c:218,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-thread.c:219,1
    - Dst: va_end
      Src: /src/lwan/src/lib/lwan-thread.c:221,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - error_code
    - fmt
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 222
    functionName: lwan_log_mbedtls_error
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - va_end
    - va_start
    - free
    - vasprintf
    - format
    - mbedtls_strerror
    - lwan_log_error
    linkageType: ''
    returnType: void
    signature: void lwan_log_mbedtls_error(int error_code, const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mbedtls_ssl_free
      Src: /src/lwan/src/lib/lwan-thread.c:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 229
    functionName: lwan_setup_tls_free_ssl_context
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - mbedtls_ssl_free
    linkageType: ''
    returnType: void
    signature: void lwan_setup_tls_free_ssl_context(void *data)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: send
      Src: /src/lwan/src/lib/lwan-thread.c:246,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:247,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:261,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - ctx
    - buf
    - len
    argTypes:
    - void*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 266
    functionName: lwan_mbedtls_send
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - send
    - UNLIKELY
    linkageType: ''
    returnType: int
    signature: int lwan_mbedtls_send(void *ctx, const unsigned char *buf, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/lwan/src/lib/lwan-thread.c:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 272
    functionName: flush_pending_output
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - setsockopt
    linkageType: ''
    returnType: void
    signature: void flush_pending_output(int fd)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: flush_pending_output
      Src: /src/lwan/src/lib/lwan-thread.c:280,1
    - Dst: recv
      Src: /src/lwan/src/lib/lwan-thread.c:284,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:285,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:296,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - ctx
    - buf
    - len
    argTypes:
    - void*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 274
    functionDepth: 1
    functionLinenumber: 274
    functionLinenumberEnd: 300
    functionName: lwan_mbedtls_recv
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - recv
    - UNLIKELY
    - flush_pending_output
    linkageType: ''
    returnType: int
    signature: int lwan_mbedtls_recv(void *ctx, unsigned char *buf, size_t len)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: mbedtls_ssl_init
      Src: /src/lwan/src/lib/lwan-thread.c:308,1
    - Dst: mbedtls_ssl_setup
      Src: /src/lwan/src/lib/lwan-thread.c:310,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:311,1
    - Dst: lwan_log_mbedtls_error
      Src: /src/lwan/src/lib/lwan-thread.c:312,1
    - Dst: coro_defer
      Src: /src/lwan/src/lib/lwan-thread.c:321,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:323,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-thread.c:324,1
    - Dst: lwan_connection_get_fd
      Src: /src/lwan/src/lib/lwan-thread.c:328,1
    - Dst: mbedtls_ssl_set_bio
      Src: /src/lwan/src/lib/lwan-thread.c:331,1
    - Dst: mbedtls_ssl_handshake
      Src: /src/lwan/src/lib/lwan-thread.c:335,1
    - Dst: flush_pending_output
      Src: /src/lwan/src/lib/lwan-thread.c:337,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-thread.c:342,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-thread.c:345,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:353,1
    - Dst: setsockopt
      Src: /src/lwan/src/lib/lwan-thread.c:353,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:355,1
    - Dst: lwan_setup_tls_keys
      Src: /src/lwan/src/lib/lwan-thread.c:355,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:357,1
    - Dst: lwan_setup_tls_keys
      Src: /src/lwan/src/lib/lwan-thread.c:357,1
    - Dst: coro_defer_disarm
      Src: /src/lwan/src/lib/lwan-thread.c:363,1
    - Dst: mbedtls_ssl_free
      Src: /src/lwan/src/lib/lwan-thread.c:364,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 48
    argCount: 2
    argNames:
    - l
    - conn
    argTypes:
    - struct lwan*
    - struct lwan_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 302
    functionDepth: 2
    functionLinenumber: 302
    functionLinenumberEnd: 366
    functionName: lwan_setup_tls
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - lwan_log_mbedtls_error
    - lwan_setup_tls_keys
    - coro_defer_disarm
    - lwan_connection_get_fd
    - mbedtls_ssl_setup
    - setsockopt
    - lwan_log_error
    - mbedtls_ssl_free
    - coro_defer
    - mbedtls_ssl_handshake
    - coro_yield
    - mbedtls_ssl_init
    - mbedtls_ssl_set_bio
    - UNLIKELY
    - flush_pending_output
    linkageType: ''
    returnType: bool
    signature: bool lwan_setup_tls(const struct lwan *l, struct lwan_connection *conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: send
      Src: /src/lwan/src/lib/lwan-thread.c:379,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 4
    argNames:
    - fd
    - buf
    - buf_len
    - flags
    argTypes:
    - int
    - char*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 392
    functionName: send_buffer_without_coro
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - send
    linkageType: ''
    returnType: bool
    signature: bool send_buffer_without_coro(int fd, const char *buf, size_t buf_len,
      int flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: send_buffer_without_coro
      Src: /src/lwan/src/lib/lwan-thread.c:397,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-thread.c:397,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - fd
    - str
    - flags
    argTypes:
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 394
    functionDepth: 1
    functionLinenumber: 394
    functionLinenumberEnd: 398
    functionName: send_string_without_coro
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - send_buffer_without_coro
    - strlen
    linkageType: ''
    returnType: bool
    signature: bool send_string_without_coro(int fd, const char *str, int flags)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lwan_connection_get_fd
      Src: /src/lwan/src/lib/lwan-thread.c:405,1
    - Dst: send_string_without_coro
      Src: /src/lwan/src/lib/lwan-thread.c:417,1
    - Dst: send_string_without_coro
      Src: /src/lwan/src/lib/lwan-thread.c:420,1
    - Dst: lwan_http_status_as_string_with_code
      Src: /src/lwan/src/lib/lwan-thread.c:421,1
    - Dst: send_string_without_coro
      Src: /src/lwan/src/lib/lwan-thread.c:424,1
    - Dst: send_string_without_coro
      Src: /src/lwan/src/lib/lwan-thread.c:427,1
    - Dst: send_buffer_without_coro
      Src: /src/lwan/src/lib/lwan-thread.c:430,1
    - Dst: lwan_strbuf_init
      Src: /src/lwan/src/lib/lwan-thread.c:434,1
    - Dst: lwan_fill_default_response
      Src: /src/lwan/src/lib/lwan-thread.c:435,1
    - Dst: send_buffer_without_coro
      Src: /src/lwan/src/lib/lwan-thread.c:437,1
    - Dst: lwan_strbuf_get_buffer
      Src: /src/lwan/src/lib/lwan-thread.c:437,1
    - Dst: lwan_strbuf_get_length
      Src: /src/lwan/src/lib/lwan-thread.c:438,1
    - Dst: lwan_strbuf_free
      Src: /src/lwan/src/lib/lwan-thread.c:440,1
    - Dst: shutdown
      Src: /src/lwan/src/lib/lwan-thread.c:444,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-thread.c:445,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 3
    argNames:
    - l
    - conn
    - status
    argTypes:
    - struct lwan*
    - struct lwan_connection*
    - enum lwan_http_status
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 400
    functionDepth: 2
    functionLinenumber: 400
    functionLinenumberEnd: 446
    functionName: send_last_response_without_coro
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_free
    - lwan_strbuf_init
    - shutdown
    - lwan_strbuf_get_length
    - lwan_connection_get_fd
    - close
    - lwan_fill_default_response
    - send_buffer_without_coro
    - send_string_without_coro
    - lwan_strbuf_get_buffer
    - lwan_http_status_as_string_with_code
    linkageType: ''
    returnType: void
    signature: "void send_last_response_without_coro(const struct lwan *l,\n                                const
      struct lwan_connection *conn,\n                                enum lwan_http_status
      status)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lwan_connection_get_fd
      Src: /src/lwan/src/lib/lwan-thread.c:457,1
    - Dst: lwan_calculate_n_packets
      Src: /src/lwan/src/lib/lwan-thread.c:460,1
    - Dst: coro_defer
      Src: /src/lwan/src/lib/lwan-thread.c:467,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:471,1
    - Dst: lwan_setup_tls
      Src: /src/lwan/src/lib/lwan-thread.c:471,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-thread.c:472,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-thread.c:473,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-thread.c:477,1
    - Dst: coro_malloc_full
      Src: /src/lwan/src/lib/lwan-thread.c:482,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:486,1
    - Dst: send_last_response_without_coro
      Src: /src/lwan/src/lib/lwan-thread.c:494,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-thread.c:496,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-thread.c:497,1
    - Dst: alloca
      Src: /src/lwan/src/lib/lwan-thread.c:503,1
    - Dst: lwan_process_request
      Src: /src/lwan/src/lib/lwan-thread.c:525,1
    - Dst: coro_deferred_run
      Src: /src/lwan/src/lib/lwan-thread.c:530,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:532,1
    - Dst: graceful_close
      Src: /src/lwan/src/lib/lwan-thread.c:533,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-thread.c:541,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-thread.c:544,1
    - Dst: lwan_strbuf_reset_trim
      Src: /src/lwan/src/lib/lwan-thread.c:549,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-thread.c:556,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-thread.c:557,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 43
    argCount: 2
    argNames:
    - coro
    - data
    argTypes:
    - struct coro*
    - void*
    assertStmts:
    - condition: (!(conn->flags & CONN_TLS))
      pos:
        line_end: 476
        line_start: 476
        source_file: /src/lwan/src/lib/lwan-thread.c
    constantsTouched: []
    func_position:
      end: 558
      start: 448
    functionDepth: 3
    functionLinenumber: 448
    functionLinenumberEnd: 558
    functionName: process_request_coro
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - send_last_response_without_coro
    - __builtin_unreachable
    - lwan_connection_get_fd
    - alloca
    - coro_deferred_run
    - lwan_strbuf_reset_trim
    - coro_malloc_full
    - lwan_process_request
    - coro_defer
    - coro_yield
    - assert
    - graceful_close
    - lwan_calculate_n_packets
    - UNLIKELY
    - lwan_setup_tls
    linkageType: ''
    returnType: int
    signature: "int process_request_coro(struct coro *coro,\n                                                          void
      *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 560
    functionDepth: 0
    functionLinenumber: 560
    functionLinenumberEnd: 561
    functionName: EPOLL_EVENTS
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EPOLL_EVENTS(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 561
    functionDepth: 0
    functionLinenumber: 561
    functionLinenumberEnd: 562
    functionName: LWAN_EVENTS
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LWAN_EVENTS(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-thread.c:566,1
    - Dst: EPOLL_EVENTS
      Src: /src/lwan/src/lib/lwan-thread.c:566,1
    - Dst: EPOLL_EVENTS
      Src: /src/lwan/src/lib/lwan-thread.c:568,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - flags
    argTypes:
    - enum lwan_connection_flags
    assertStmts:
    - condition: "((EPOLL_EVENTS(flags) &\n            (uint32_t) ~(EPOLLIN | EPOLLOUT
        | EPOLLRDHUP)) == 0)"
      pos:
        line_end: 566
        line_start: 565
        source_file: /src/lwan/src/lib/lwan-thread.c
    constantsTouched: []
    func_position:
      end: 569
      start: 563
    functionDepth: 1
    functionLinenumber: 563
    functionLinenumberEnd: 569
    functionName: conn_flags_to_epoll_events
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - assert
    - EPOLL_EVENTS
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE conn_flags_to_epoll_events(enum lwan_connection_flags
      flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-thread.c:613,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-thread.c:614,1
    - Dst: LWAN_EVENTS
      Src: /src/lwan/src/lib/lwan-thread.c:616,1
    - Dst: LWAN_EVENTS
      Src: /src/lwan/src/lib/lwan-thread.c:616,1
    - Dst: conn_flags_to_epoll_events
      Src: /src/lwan/src/lib/lwan-thread.c:619,1
    - Dst: lwan_connection_get_fd
      Src: /src/lwan/src/lib/lwan-thread.c:621,1
    - Dst: epoll_ctl
      Src: /src/lwan/src/lib/lwan-thread.c:622,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - lwan
    - conn
    - epoll_fd
    - yield_result
    argTypes:
    - struct lwan*
    - struct lwan_connection*
    - int
    - enum lwan_connection_coro_yield
    assertStmts:
    - condition: (!(conn->flags & CONN_LISTENER))
      pos:
        line_end: 612
        line_start: 612
        source_file: /src/lwan/src/lib/lwan-thread.c
    - condition: ((conn->flags & CONN_TLS) == (prev_flags & CONN_TLS))
      pos:
        line_end: 613
        line_start: 613
        source_file: /src/lwan/src/lib/lwan-thread.c
    constantsTouched: []
    func_position:
      end: 623
      start: 571
    functionDepth: 2
    functionLinenumber: 571
    functionLinenumberEnd: 623
    functionName: update_epoll_flags
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - conn_flags_to_epoll_events
    - epoll_ctl
    - lwan_connection_get_fd
    - LWAN_EVENTS
    - assert
    linkageType: ''
    returnType: int
    signature: "int update_epoll_flags(const struct lwan *lwan,\n                              struct
      lwan_connection *conn,\n                              int epoll_fd,\n                              enum
      lwan_connection_coro_yield yield_result)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-thread.c:631,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - data1
    - data2
    argTypes:
    - void*
    - void*
    assertStmts:
    - condition: (async_fd_conn->parent)
      pos:
        line_end: 630
        line_start: 630
        source_file: /src/lwan/src/lib/lwan-thread.c
    constantsTouched: []
    func_position:
      end: 646
      start: 625
    functionDepth: 0
    functionLinenumber: 625
    functionLinenumberEnd: 646
    functionName: unasync_await_conn
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: void unasync_await_conn(void *data1, void *data2)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-thread.c:662,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-thread.c:663,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:669,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:670,1
    - Dst: LWAN_EVENTS
      Src: /src/lwan/src/lib/lwan-thread.c:670,1
    - Dst: LWAN_EVENTS
      Src: /src/lwan/src/lib/lwan-thread.c:670,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-thread.c:683,1
    - Dst: coro_defer2
      Src: /src/lwan/src/lib/lwan-thread.c:696,1
    - Dst: conn_flags_to_epoll_events
      Src: /src/lwan/src/lib/lwan-thread.c:699,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:701,1
    - Dst: epoll_ctl
      Src: /src/lwan/src/lib/lwan-thread.c:701,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 5
    argNames:
    - l
    - yield_result
    - await_fd
    - conn
    - epoll_fd
    argTypes:
    - struct lwan*
    - enum lwan_connection_coro_yield
    - int
    - struct lwan_connection*
    - int
    assertStmts:
    - condition: (await_fd >= 0)
      pos:
        line_end: 661
        line_start: 661
        source_file: /src/lwan/src/lib/lwan-thread.c
    - condition: "(yield_result >= CONN_CORO_WANT_READ &&\n           yield_result
        <= CONN_CORO_WANT_READ_WRITE)"
      pos:
        line_end: 663
        line_start: 662
        source_file: /src/lwan/src/lib/lwan-thread.c
    - condition: (!await_fd_conn->coro)
      pos:
        line_end: 682
        line_start: 682
        source_file: /src/lwan/src/lib/lwan-thread.c
    constantsTouched: []
    func_position:
      end: 708
      start: 648
    functionDepth: 2
    functionLinenumber: 648
    functionLinenumberEnd: 708
    functionName: prepare_await
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - conn_flags_to_epoll_events
    - coro_defer2
    - epoll_ctl
    - LIKELY
    - LWAN_EVENTS
    - assert
    linkageType: ''
    returnType: int
    signature: "int prepare_await(const struct lwan *l,\n                         enum
      lwan_connection_coro_yield yield_result,\n                         int await_fd,\n
      \                        struct lwan_connection *conn,\n                         int
      epoll_fd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_copy
      Src: /src/lwan/src/lib/lwan-thread.c:714,1
    - Dst: va_arg
      Src: /src/lwan/src/lib/lwan-thread.c:715,1
    - Dst: va_arg
      Src: /src/lwan/src/lib/lwan-thread.c:715,1
    - Dst: va_end
      Src: /src/lwan/src/lib/lwan-thread.c:719,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - conns
    - ap_orig
    argTypes:
    - struct lwan_connection*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 710
    functionDepth: 0
    functionLinenumber: 710
    functionLinenumberEnd: 720
    functionName: clear_awaitv_flags
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - va_end
    - va_copy
    - va_arg
    linkageType: ''
    returnType: void
    signature: void clear_awaitv_flags(struct lwan_connection *conns, va_list ap_orig)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: clear_awaitv_flags
      Src: /src/lwan/src/lib/lwan-thread.c:739,1
    - Dst: va_arg
      Src: /src/lwan/src/lib/lwan-thread.c:741,1
    - Dst: va_arg
      Src: /src/lwan/src/lib/lwan-thread.c:742,1
    - Dst: va_arg
      Src: /src/lwan/src/lib/lwan-thread.c:745,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:747,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:751,1
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan-thread.c:752,1
    - Dst: prepare_await
      Src: /src/lwan/src/lib/lwan-thread.c:765,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:766,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-thread.c:768,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 4
    argNames:
    - r
    - l
    - ap
    - state
    argTypes:
    - struct lwan_request*
    - struct lwan*
    - va_list
    - struct awaitv_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 727
    functionDepth: 3
    functionLinenumber: 727
    functionLinenumberEnd: 774
    functionName: prepare_awaitv
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - va_arg
    - clear_awaitv_flags
    - lwan_log_debug
    - prepare_await
    - lwan_log_perror
    - UNLIKELY
    linkageType: ''
    returnType: int
    signature: "int prepare_awaitv(struct lwan_request *r,\n                          struct
      lwan *l,\n                          va_list ap,\n                          struct
      awaitv_state *state)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/lwan/src/lib/lwan-thread.c:782,1
    - Dst: prepare_awaitv
      Src: /src/lwan/src/lib/lwan-thread.c:783,1
    - Dst: va_end
      Src: /src/lwan/src/lib/lwan-thread.c:784,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:786,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-thread.c:788,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-thread.c:789,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-thread.c:790,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-thread.c:794,1
    - Dst: va_start
      Src: /src/lwan/src/lib/lwan-thread.c:800,1
    - Dst: clear_awaitv_flags
      Src: /src/lwan/src/lib/lwan-thread.c:801,1
    - Dst: va_end
      Src: /src/lwan/src/lib/lwan-thread.c:802,1
    - Dst: lwan_connection_get_fd
      Src: /src/lwan/src/lib/lwan-thread.c:804,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:805,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct lwan_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 808
      start: 776
    functionDepth: 4
    functionLinenumber: 776
    functionLinenumberEnd: 808
    functionName: lwan_request_awaitv_any
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - va_end
    - va_start
    - __builtin_unreachable
    - clear_awaitv_flags
    - prepare_awaitv
    - lwan_connection_get_fd
    - coro_yield
    - lwan_log_perror
    - UNLIKELY
    linkageType: ''
    returnType: int
    signature: int lwan_request_awaitv_any(struct lwan_request *r, ...)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/lwan/src/lib/lwan-thread.c:816,1
    - Dst: prepare_awaitv
      Src: /src/lwan/src/lib/lwan-thread.c:817,1
    - Dst: va_end
      Src: /src/lwan/src/lib/lwan-thread.c:818,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:820,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-thread.c:822,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-thread.c:823,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-thread.c:824,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-thread.c:828,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:834,1
    - Dst: va_start
      Src: /src/lwan/src/lib/lwan-thread.c:837,1
    - Dst: clear_awaitv_flags
      Src: /src/lwan/src/lib/lwan-thread.c:838,1
    - Dst: va_end
      Src: /src/lwan/src/lib/lwan-thread.c:839,1
    - Dst: lwan_connection_get_fd
      Src: /src/lwan/src/lib/lwan-thread.c:841,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct lwan_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 810
    functionDepth: 4
    functionLinenumber: 810
    functionLinenumberEnd: 849
    functionName: lwan_request_awaitv_all
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - va_end
    - va_start
    - __builtin_unreachable
    - clear_awaitv_flags
    - prepare_awaitv
    - lwan_connection_get_fd
    - coro_yield
    - lwan_log_perror
    - UNLIKELY
    linkageType: ''
    returnType: int
    signature: int lwan_request_awaitv_all(struct lwan_request *r, ...)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:858,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:860,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:865,1
    - Dst: prepare_await
      Src: /src/lwan/src/lib/lwan-thread.c:870,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:871,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-thread.c:878,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:883,1
    - Dst: lwan_connection_get_fd
      Src: /src/lwan/src/lib/lwan-thread.c:885,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 3
    argNames:
    - request
    - fd
    - events
    argTypes:
    - struct lwan_request*
    - int
    - enum lwan_connection_coro_yield
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 851
    functionDepth: 3
    functionLinenumber: 851
    functionLinenumberEnd: 895
    functionName: async_await_fd
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - coro_yield
    - prepare_await
    - lwan_connection_get_fd
    - UNLIKELY
    linkageType: ''
    returnType: int
    signature: "int async_await_fd(struct lwan_request *request,\n                          int
      fd,\n                          enum lwan_connection_coro_yield events)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: async_await_fd
      Src: /src/lwan/src/lib/lwan-thread.c:899,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - r
    - fd
    argTypes:
    - struct lwan_request*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 897
    functionDepth: 4
    functionLinenumber: 897
    functionLinenumberEnd: 900
    functionName: lwan_request_await_read
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 3
    functionsReached:
    - async_await_fd
    linkageType: ''
    returnType: int
    signature: int lwan_request_await_read(struct lwan_request *r, int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: async_await_fd
      Src: /src/lwan/src/lib/lwan-thread.c:904,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - r
    - fd
    argTypes:
    - struct lwan_request*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 905
      start: 902
    functionDepth: 4
    functionLinenumber: 902
    functionLinenumberEnd: 905
    functionName: lwan_request_await_write
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 3
    functionsReached:
    - async_await_fd
    linkageType: ''
    returnType: int
    signature: int lwan_request_await_write(struct lwan_request *r, int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: async_await_fd
      Src: /src/lwan/src/lib/lwan-thread.c:909,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - r
    - fd
    argTypes:
    - struct lwan_request*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 910
      start: 907
    functionDepth: 4
    functionLinenumber: 907
    functionLinenumberEnd: 910
    functionName: lwan_request_await_read_write
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - async_await_fd
    linkageType: ''
    returnType: int
    signature: int lwan_request_await_read_write(struct lwan_request *r, int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_request_sleep_internal
      Src: /src/lwan/src/lib/lwan-thread.c:917,1
    - Dst: async_await_fd
      Src: /src/lwan/src/lib/lwan-thread.c:918,1
    - Dst: coro_defer_fire_and_disarm
      Src: /src/lwan/src/lib/lwan-thread.c:921,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - r
    - fd
    - events
    - ms
    argTypes:
    - struct lwan_request*
    - int
    - enum lwan_connection_coro_yield
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 924
      start: 912
    functionDepth: 4
    functionLinenumber: 912
    functionLinenumberEnd: 924
    functionName: async_await_fd_timeout
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - lwan_request_sleep_internal
    - coro_defer_fire_and_disarm
    - async_await_fd
    linkageType: ''
    returnType: int
    signature: "int async_await_fd_timeout(struct lwan_request *r,\n                                  int
      fd,\n                                  enum lwan_connection_coro_yield events,\n
      \                                 uint64_t ms)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: async_await_fd_timeout
      Src: /src/lwan/src/lib/lwan-thread.c:929,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - r
    - fd
    - ms
    argTypes:
    - struct lwan_request*
    - int
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 930
      start: 926
    functionDepth: 5
    functionLinenumber: 926
    functionLinenumberEnd: 930
    functionName: lwan_request_await_read_timeout
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - async_await_fd_timeout
    linkageType: ''
    returnType: int
    signature: int lwan_request_await_read_timeout(struct lwan_request *r, int fd,
      uint64_t ms)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: async_await_fd_timeout
      Src: /src/lwan/src/lib/lwan-thread.c:935,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - r
    - fd
    - ms
    argTypes:
    - struct lwan_request*
    - int
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 932
    functionDepth: 5
    functionLinenumber: 932
    functionLinenumberEnd: 936
    functionName: lwan_request_await_write_timeout
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - async_await_fd_timeout
    linkageType: ''
    returnType: int
    signature: int lwan_request_await_write_timeout(struct lwan_request *r, int fd,
      uint64_t ms)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: async_await_fd_timeout
      Src: /src/lwan/src/lib/lwan-thread.c:942,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - r
    - fd
    - ms
    argTypes:
    - struct lwan_request*
    - int
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 943
      start: 938
    functionDepth: 5
    functionLinenumber: 938
    functionLinenumberEnd: 943
    functionName: lwan_request_await_read_write_timeout
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - async_await_fd_timeout
    linkageType: ''
    returnType: int
    signature: "int lwan_request_await_read_write_timeout(struct lwan_request *r,\n
      \                                                int fd,\n                                                 uint64_t
      ms)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-thread.c:950,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-thread.c:951,1
    - Dst: coro_resume_value
      Src: /src/lwan/src/lib/lwan-thread.c:953,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:955,1
    - Dst: timeout_queue_expire
      Src: /src/lwan/src/lib/lwan-thread.c:956,1
    - Dst: update_epoll_flags
      Src: /src/lwan/src/lib/lwan-thread.c:961,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:962,1
    - Dst: timeout_queue_move_to_last
      Src: /src/lwan/src/lib/lwan-thread.c:963,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - tq
    - conn_to_resume
    - conn_to_yield
    - epoll_fd
    argTypes:
    - struct timeout_queue*
    - struct lwan_connection*
    - struct lwan_connection*
    - int
    assertStmts:
    - condition: (conn_to_resume->coro)
      pos:
        line_end: 949
        line_start: 949
        source_file: /src/lwan/src/lib/lwan-thread.c
    - condition: (conn_to_yield->coro)
      pos:
        line_end: 950
        line_start: 950
        source_file: /src/lwan/src/lib/lwan-thread.c
    constantsTouched: []
    func_position:
      end: 964
      start: 945
    functionDepth: 3
    functionLinenumber: 945
    functionLinenumberEnd: 964
    functionName: resume_coro
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - timeout_queue_expire
    - LIKELY
    - timeout_queue_move_to_last
    - coro_resume_value
    - assert
    - update_epoll_flags
    - UNLIKELY
    linkageType: ''
    returnType: void
    signature: "void resume_coro(struct timeout_queue *tq,\n                        struct
      lwan_connection *conn_to_resume,\n                        struct lwan_connection
      *conn_to_yield,\n                        int epoll_fd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/lwan/src/lib/lwan-thread.c:968,1
    - Dst: lwan_format_rfc_time
      Src: /src/lwan/src/lib/lwan-thread.c:970,1
    - Dst: lwan_format_rfc_time
      Src: /src/lwan/src/lib/lwan-thread.c:971,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct lwan_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 966
    functionDepth: 1
    functionLinenumber: 966
    functionLinenumberEnd: 973
    functionName: update_date_cache
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - lwan_format_rfc_time
    - time
    linkageType: ''
    returnType: void
    signature: void update_date_cache(struct lwan_thread *thread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-thread.c:986,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-thread.c:987,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-thread.c:988,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-thread.c:989,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-thread.c:990,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-thread.c:991,1
    - Dst: coro_new
      Src: /src/lwan/src/lib/lwan-thread.c:995,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:1000,1
    - Dst: timeout_queue_insert
      Src: /src/lwan/src/lib/lwan-thread.c:1001,1
    - Dst: lwan_connection_get_fd
      Src: /src/lwan/src/lib/lwan-thread.c:1007,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-thread.c:1009,1
    - Dst: send_last_response_without_coro
      Src: /src/lwan/src/lib/lwan-thread.c:1011,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 3
    argNames:
    - conn
    - switcher
    - tq
    argTypes:
    - struct lwan_connection*
    - coro_context*
    - struct timeout_queue*
    assertStmts:
    - condition: (!conn->coro)
      pos:
        line_end: 985
        line_start: 985
        source_file: /src/lwan/src/lib/lwan-thread.c
    - condition: ((uintptr_t)t >= (uintptr_t)tq->lwan->thread.threads)
      pos:
        line_end: 989
        line_start: 989
        source_file: /src/lwan/src/lib/lwan-thread.c
    - condition: (t)
      pos:
        line_end: 988
        line_start: 988
        source_file: /src/lwan/src/lib/lwan-thread.c
    - condition: (!(conn->flags & (CONN_ASYNC_AWAITV | CONN_ASYNC_AWAIT | CONN_HUNG_UP)))
      pos:
        line_end: 986
        line_start: 986
        source_file: /src/lwan/src/lib/lwan-thread.c
    - condition: (!(conn->flags & CONN_LISTENER))
      pos:
        line_end: 987
        line_start: 987
        source_file: /src/lwan/src/lib/lwan-thread.c
    - condition: "((uintptr_t)t <\n           (uintptr_t)(tq->lwan->thread.threads
        + tq->lwan->thread.count))"
      pos:
        line_end: 991
        line_start: 990
        source_file: /src/lwan/src/lib/lwan-thread.c
    constantsTouched: []
    func_position:
      end: 1013
      start: 975
    functionDepth: 3
    functionLinenumber: 975
    functionLinenumberEnd: 1013
    functionName: spawn_coro
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - send_last_response_without_coro
    - timeout_queue_insert
    - lwan_connection_get_fd
    - LIKELY
    - coro_new
    - assert
    - lwan_log_error
    linkageType: ''
    returnType: bool
    signature: "bool spawn_coro(struct lwan_connection *conn,\n                       coro_context
      *switcher,\n                       struct timeout_queue *tq)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: timeouts_get
      Src: /src/lwan/src/lib/lwan-thread.c:1022,1
    - Dst: container_of
      Src: /src/lwan/src/lib/lwan-thread.c:1029,1
    - Dst: update_epoll_flags
      Src: /src/lwan/src/lib/lwan-thread.c:1030,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:1032,1
    - Dst: timeout_queue_expire
      Src: /src/lwan/src/lib/lwan-thread.c:1033,1
    - Dst: timeout_queue_expire_waiting
      Src: /src/lwan/src/lib/lwan-thread.c:1038,1
    - Dst: update_date_cache
      Src: /src/lwan/src/lib/lwan-thread.c:1042,1
    - Dst: timeout_queue_empty
      Src: /src/lwan/src/lib/lwan-thread.c:1044,1
    - Dst: timeouts_add
      Src: /src/lwan/src/lib/lwan-thread.c:1045,1
    - Dst: timeouts_del
      Src: /src/lwan/src/lib/lwan-thread.c:1049,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 3
    argNames:
    - tq
    - t
    - epoll_fd
    argTypes:
    - struct timeout_queue*
    - struct lwan_thread*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1053
      start: 1015
    functionDepth: 3
    functionLinenumber: 1015
    functionLinenumberEnd: 1053
    functionName: process_pending_timers
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - container_of
    - timeout_queue_expire_waiting
    - timeout_queue_empty
    - timeout_queue_expire
    - timeouts_get
    - timeouts_del
    - update_date_cache
    - update_epoll_flags
    - timeouts_add
    - UNLIKELY
    linkageType: ''
    returnType: bool
    signature: "bool process_pending_timers(struct timeout_queue *tq,\n                                   struct
      lwan_thread *t,\n                                   int epoll_fd)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:1062,1
    - Dst: clock_gettime
      Src: /src/lwan/src/lib/lwan-thread.c:1062,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-thread.c:1063,1
    - Dst: timeouts_update
      Src: /src/lwan/src/lib/lwan-thread.c:1065,1
    - Dst: timeouts_timeout
      Src: /src/lwan/src/lib/lwan-thread.c:1069,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:1075,1
    - Dst: process_pending_timers
      Src: /src/lwan/src/lib/lwan-thread.c:1078,1
    - Dst: timeouts_timeout
      Src: /src/lwan/src/lib/lwan-thread.c:1082,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - tq
    - t
    - epoll_fd
    argTypes:
    - struct timeout_queue*
    - struct lwan_thread*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 1055
    functionDepth: 4
    functionLinenumber: 1055
    functionLinenumberEnd: 1083
    functionName: turn_timer_wheel
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - lwan_log_critical
    - clock_gettime
    - process_pending_timers
    - timeouts_update
    - UNLIKELY
    - timeouts_timeout
    linkageType: ''
    returnType: int
    signature: int turn_timer_wheel(struct timeout_queue *tq, struct lwan_thread *t,
      int epoll_fd)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: conn_flags_to_epoll_events
      Src: /src/lwan/src/lib/lwan-thread.c:1090,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-thread.c:1098,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-thread.c:1100,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-thread.c:1103,1
    - Dst: accept4
      Src: /src/lwan/src/lib/lwan-thread.c:1108,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:1110,1
    - Dst: epoll_ctl
      Src: /src/lwan/src/lib/lwan-thread.c:1117,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:1118,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-thread.c:1119,1
    - Dst: send_last_response_without_coro
      Src: /src/lwan/src/lib/lwan-thread.c:1122,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-thread.c:1131,1
    - Dst: lwan_log_info
      Src: /src/lwan/src/lib/lwan-thread.c:1140,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-thread.c:1145,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 4
    argNames:
    - t
    - listen_socket
    - switcher
    - tq
    argTypes:
    - struct lwan_thread*
    - struct lwan_connection*
    - coro_context*
    - struct timeout_queue*
    assertStmts:
    - condition: (!(new_conn_flags & CONN_TLS))
      pos:
        line_end: 1102
        line_start: 1102
        source_file: /src/lwan/src/lib/lwan-thread.c
    - condition: (listen_fd == t->tls_listen_fd)
      pos:
        line_end: 1097
        line_start: 1097
        source_file: /src/lwan/src/lib/lwan-thread.c
    - condition: (listen_fd == t->listen_fd)
      pos:
        line_end: 1099
        line_start: 1099
        source_file: /src/lwan/src/lib/lwan-thread.c
    constantsTouched: []
    func_position:
      end: 1146
      start: 1085
    functionDepth: 3
    functionLinenumber: 1085
    functionLinenumberEnd: 1146
    functionName: accept_waiting_clients
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - send_last_response_without_coro
    - conn_flags_to_epoll_events
    - __builtin_unreachable
    - epoll_ctl
    - accept4
    - LIKELY
    - lwan_log_info
    - assert
    - lwan_log_perror
    - UNLIKELY
    linkageType: ''
    returnType: bool
    signature: "bool accept_waiting_clients(const struct lwan_thread *t,\n                                   const
      struct lwan_connection *listen_socket,\n                                   coro_context
      *switcher,\n                                   struct timeout_queue *tq)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lwan_create_listen_socket
      Src: /src/lwan/src/lib/lwan-thread.c:1155,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-thread.c:1157,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/lib/lwan-thread.c:1194,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-thread.c:1199,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-thread.c:1200,1
    - Dst: setsockopt
      Src: /src/lwan/src/lib/lwan-thread.c:1206,1
    - Dst: setsockopt
      Src: /src/lwan/src/lib/lwan-thread.c:1208,1
    - Dst: setsockopt
      Src: /src/lwan/src/lib/lwan-thread.c:1212,1
    - Dst: epoll_ctl
      Src: /src/lwan/src/lib/lwan-thread.c:1220,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan-thread.c:1221,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 3
    argNames:
    - t
    - num
    - tls
    argTypes:
    - struct lwan_thread*
    - unsigned int
    - bool
    assertStmts:
    - condition: (filter[1].k == n_sockets)
      pos:
        line_end: 1199
        line_start: 1199
        source_file: /src/lwan/src/lib/lwan-thread.c
    - condition: (filter[1].code == (BPF_ALU | BPF_MOD))
      pos:
        line_end: 1198
        line_start: 1198
        source_file: /src/lwan/src/lib/lwan-thread.c
    constantsTouched: []
    func_position:
      end: 1224
      start: 1148
    functionDepth: 1
    functionLinenumber: 1148
    functionLinenumberEnd: 1224
    functionName: create_listen_socket
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 1
    functionsReached:
    - lwan_create_listen_socket
    - lwan_log_critical
    - epoll_ctl
    - N_ELEMENTS
    - lwan_log_critical_perror
    - assert
    - setsockopt
    linkageType: ''
    returnType: int
    signature: "int create_listen_socket(struct lwan_thread *t,\n                                unsigned
      int num,\n                                bool tls)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: LWAN_MIN
      Src: /src/lwan/src/lib/lwan-thread.c:1230,1
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan-thread.c:1237,1
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan-thread.c:1240,1
    - Dst: lwan_set_thread_name
      Src: /src/lwan/src/lib/lwan-thread.c:1244,1
    - Dst: calloc
      Src: /src/lwan/src/lib/lwan-thread.c:1246,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:1247,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-thread.c:1248,1
    - Dst: update_date_cache
      Src: /src/lwan/src/lib/lwan-thread.c:1250,1
    - Dst: timeout_queue_init
      Src: /src/lwan/src/lib/lwan-thread.c:1252,1
    - Dst: lwan_random_seed_prng_for_thread
      Src: /src/lwan/src/lib/lwan-thread.c:1254,1
    - Dst: pthread_barrier_wait
      Src: /src/lwan/src/lib/lwan-thread.c:1256,1
    - Dst: turn_timer_wheel
      Src: /src/lwan/src/lib/lwan-thread.c:1259,1
    - Dst: epoll_wait
      Src: /src/lwan/src/lib/lwan-thread.c:1260,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:1263,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-thread.c:1277,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-thread.c:1278,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-thread.c:1282,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-thread.c:1292,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-thread.c:1293,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-thread.c:1294,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:1296,1
    - Dst: resume_coro
      Src: /src/lwan/src/lib/lwan-thread.c:1299,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-thread.c:1304,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:1306,1
    - Dst: accept_waiting_clients
      Src: /src/lwan/src/lib/lwan-thread.c:1306,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-thread.c:1309,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:1314,1
    - Dst: timeout_queue_expire
      Src: /src/lwan/src/lib/lwan-thread.c:1317,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-thread.c:1322,1
    - Dst: spawn_coro
      Src: /src/lwan/src/lib/lwan-thread.c:1322,1
    - Dst: resume_coro
      Src: /src/lwan/src/lib/lwan-thread.c:1327,1
    - Dst: timeouts_add
      Src: /src/lwan/src/lib/lwan-thread.c:1331,1
    - Dst: pthread_barrier_wait
      Src: /src/lwan/src/lib/lwan-thread.c:1334,1
    - Dst: timeout_queue_expire_all
      Src: /src/lwan/src/lib/lwan-thread.c:1336,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-thread.c:1337,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 59
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts:
    - condition: (conn->parent >= lwan->conns)
      pos:
        line_end: 1276
        line_start: 1276
        source_file: /src/lwan/src/lib/lwan-thread.c
    - condition: (!(conn->parent->flags & CONN_ASYNC_AWAIT))
      pos:
        line_end: 1281
        line_start: 1281
        source_file: /src/lwan/src/lib/lwan-thread.c
    - condition: (conn->thread == conn->parent->thread)
      pos:
        line_end: 1293
        line_start: 1293
        source_file: /src/lwan/src/lib/lwan-thread.c
    - condition: (conn->coro)
      pos:
        line_end: 1291
        line_start: 1291
        source_file: /src/lwan/src/lib/lwan-thread.c
    - condition: (conn->parent <= &lwan->conns[lwan->thread.max_fd])
      pos:
        line_end: 1277
        line_start: 1277
        source_file: /src/lwan/src/lib/lwan-thread.c
    - condition: (conn->coro == conn->parent->coro)
      pos:
        line_end: 1292
        line_start: 1292
        source_file: /src/lwan/src/lib/lwan-thread.c
    - condition: (conn->flags & CONN_LISTENER)
      pos:
        line_end: 1303
        line_start: 1303
        source_file: /src/lwan/src/lib/lwan-thread.c
    constantsTouched: []
    func_position:
      end: 1340
      start: 1226
    functionDepth: 5
    functionLinenumber: 1226
    functionLinenumberEnd: 1340
    functionName: thread_io_loop
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - free
    - lwan_log_critical
    - turn_timer_wheel
    - update_date_cache
    - assert
    - lwan_set_thread_name
    - accept_waiting_clients
    - pthread_barrier_wait
    - LIKELY
    - LWAN_MIN
    - timeout_queue_init
    - timeout_queue_expire_all
    - spawn_coro
    - close
    - lwan_log_debug
    - lwan_random_seed_prng_for_thread
    - resume_coro
    - epoll_wait
    - UNLIKELY
    - calloc
    - timeout_queue_expire
    - timeouts_add
    linkageType: ''
    returnType: void
    signature: void *thread_io_loop(void *data)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: timeouts_open
      Src: /src/lwan/src/lib/lwan-thread.c:1349,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-thread.c:1351,1
    - Dst: epoll_create1
      Src: /src/lwan/src/lib/lwan-thread.c:1353,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan-thread.c:1354,1
    - Dst: pthread_attr_init
      Src: /src/lwan/src/lib/lwan-thread.c:1356,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan-thread.c:1357,1
    - Dst: pthread_attr_setscope
      Src: /src/lwan/src/lib/lwan-thread.c:1359,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan-thread.c:1360,1
    - Dst: pthread_attr_setdetachstate
      Src: /src/lwan/src/lib/lwan-thread.c:1362,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan-thread.c:1363,1
    - Dst: pthread_create
      Src: /src/lwan/src/lib/lwan-thread.c:1365,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan-thread.c:1366,1
    - Dst: pthread_attr_destroy
      Src: /src/lwan/src/lib/lwan-thread.c:1368,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan-thread.c:1369,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - l
    - thread
    argTypes:
    - struct lwan*
    - struct lwan_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1370
      start: 1342
    functionDepth: 1
    functionLinenumber: 1342
    functionLinenumberEnd: 1370
    functionName: create_thread
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - pthread_attr_setdetachstate
    - lwan_log_critical
    - timeouts_open
    - pthread_attr_init
    - pthread_attr_destroy
    - epoll_create1
    - lwan_log_critical_perror
    - pthread_attr_setscope
    - pthread_create
    linkageType: ''
    returnType: void
    signature: void create_thread(struct lwan *l, struct lwan_thread *thread)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/lwan/src/lib/lwan-thread.c:1385,1
    - Dst: fopen
      Src: /src/lwan/src/lib/lwan-thread.c:1389,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan-thread.c:1391,1
    - Dst: fscanf
      Src: /src/lwan/src/lib/lwan-thread.c:1396,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-thread.c:1402,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-thread.c:1403,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-thread.c:1409,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-thread.c:1410,1
    - Dst: fclose
      Src: /src/lwan/src/lib/lwan-thread.c:1413,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan-thread.c:1424,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan-thread.c:1429,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 2
    argNames:
    - l
    - siblings
    argTypes:
    - struct lwan*
    - uint32_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1438
      start: 1373
    functionDepth: 1
    functionLinenumber: 1373
    functionLinenumberEnd: 1438
    functionName: read_cpu_topology
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - fclose
    - lwan_log_critical
    - __builtin_unreachable
    - fscanf
    - lwan_log_warning
    - fopen
    - snprintf
    linkageType: ''
    returnType: bool
    signature: bool read_cpu_topology(struct lwan *l, uint32_t siblings[])
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/lwan/src/lib/lwan-thread.c:1443,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-thread.c:1447,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-thread.c:1467,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 3
    argNames:
    - l
    - siblings
    - schedtbl
    argTypes:
    - struct lwan*
    - uint32_t[]
    - uint32_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1468
      start: 1440
    functionDepth: 1
    functionLinenumber: 1440
    functionLinenumberEnd: 1468
    functionName: siblings_to_schedtbl
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - calloc
    - free
    - lwan_log_critical
    linkageType: ''
    returnType: void
    signature: void siblings_to_schedtbl(struct lwan *l, uint32_t siblings[], uint32_t
      schedtbl[])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/lwan/src/lib/lwan-thread.c:1473,1
    - Dst: read_cpu_topology
      Src: /src/lwan/src/lib/lwan-thread.c:1477,1
    - Dst: siblings_to_schedtbl
      Src: /src/lwan/src/lib/lwan-thread.c:1478,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-thread.c:1485,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - l
    - schedtbl
    - n_threads
    argTypes:
    - struct lwan*
    - uint32_t[]
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1489
      start: 1470
    functionDepth: 2
    functionLinenumber: 1470
    functionLinenumberEnd: 1489
    functionName: topology_to_schedtbl
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - read_cpu_topology
    - siblings_to_schedtbl
    - calloc
    - free
    linkageType: ''
    returnType: bool
    signature: bool topology_to_schedtbl(struct lwan *l, uint32_t schedtbl[], uint32_t
      n_threads)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CPU_ZERO
      Src: /src/lwan/src/lib/lwan-thread.c:1496,1
    - Dst: CPU_SET
      Src: /src/lwan/src/lib/lwan-thread.c:1497,1
    - Dst: pthread_setaffinity_np
      Src: /src/lwan/src/lib/lwan-thread.c:1499,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan-thread.c:1500,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - thread
    argTypes:
    - struct lwan_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1501
      start: 1491
    functionDepth: 1
    functionLinenumber: 1491
    functionLinenumberEnd: 1501
    functionName: adjust_thread_affinity
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - CPU_ZERO
    - pthread_setaffinity_np
    - lwan_log_warning
    - CPU_SET
    linkageType: ''
    returnType: void
    signature: void adjust_thread_affinity(const struct lwan_thread *thread)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/lwan/src/lib/lwan-thread.c:1509,1
    - Dst: fgets
      Src: /src/lwan/src/lib/lwan-thread.c:1516,1
    - Dst: strstr
      Src: /src/lwan/src/lib/lwan-thread.c:1517,1
    - Dst: fclose
      Src: /src/lwan/src/lib/lwan-thread.c:1521,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1523
      start: 1507
    functionDepth: 0
    functionLinenumber: 1507
    functionLinenumberEnd: 1523
    functionName: is_tls_ulp_supported
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - strstr
    - fopen
    - fgets
    - fclose
    linkageType: ''
    returnType: bool
    signature: bool is_tls_ulp_supported(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: is_tls_ulp_supported
      Src: /src/lwan/src/lib/lwan-thread.c:1547,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-thread.c:1548,1
    - Dst: calloc
      Src: /src/lwan/src/lib/lwan-thread.c:1552,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-thread.c:1554,1
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan-thread.c:1556,1
    - Dst: mbedtls_ssl_config_init
      Src: /src/lwan/src/lib/lwan-thread.c:1558,1
    - Dst: mbedtls_x509_crt_init
      Src: /src/lwan/src/lib/lwan-thread.c:1559,1
    - Dst: mbedtls_pk_init
      Src: /src/lwan/src/lib/lwan-thread.c:1560,1
    - Dst: mbedtls_entropy_init
      Src: /src/lwan/src/lib/lwan-thread.c:1561,1
    - Dst: mbedtls_ctr_drbg_init
      Src: /src/lwan/src/lib/lwan-thread.c:1562,1
    - Dst: mbedtls_x509_crt_parse_file
      Src: /src/lwan/src/lib/lwan-thread.c:1564,1
    - Dst: lwan_log_mbedtls_error
      Src: /src/lwan/src/lib/lwan-thread.c:1566,1
    - Dst: abort
      Src: /src/lwan/src/lib/lwan-thread.c:1568,1
    - Dst: mbedtls_pk_parse_keyfile
      Src: /src/lwan/src/lib/lwan-thread.c:1571,1
    - Dst: lwan_log_mbedtls_error
      Src: /src/lwan/src/lib/lwan-thread.c:1573,1
    - Dst: abort
      Src: /src/lwan/src/lib/lwan-thread.c:1575,1
    - Dst: lwan_always_bzero
      Src: /src/lwan/src/lib/lwan-thread.c:1581,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-thread.c:1581,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-thread.c:1582,1
    - Dst: lwan_always_bzero
      Src: /src/lwan/src/lib/lwan-thread.c:1583,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-thread.c:1583,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-thread.c:1584,1
    - Dst: lwan_always_bzero
      Src: /src/lwan/src/lib/lwan-thread.c:1585,1
    - Dst: mbedtls_ssl_conf_ca_chain
      Src: /src/lwan/src/lib/lwan-thread.c:1587,1
    - Dst: mbedtls_ssl_conf_own_cert
      Src: /src/lwan/src/lib/lwan-thread.c:1588,1
    - Dst: lwan_log_mbedtls_error
      Src: /src/lwan/src/lib/lwan-thread.c:1591,1
    - Dst: abort
      Src: /src/lwan/src/lib/lwan-thread.c:1592,1
    - Dst: mbedtls_ctr_drbg_seed
      Src: /src/lwan/src/lib/lwan-thread.c:1595,1
    - Dst: lwan_log_mbedtls_error
      Src: /src/lwan/src/lib/lwan-thread.c:1598,1
    - Dst: abort
      Src: /src/lwan/src/lib/lwan-thread.c:1599,1
    - Dst: mbedtls_ssl_config_defaults
      Src: /src/lwan/src/lib/lwan-thread.c:1602,1
    - Dst: lwan_log_mbedtls_error
      Src: /src/lwan/src/lib/lwan-thread.c:1606,1
    - Dst: abort
      Src: /src/lwan/src/lib/lwan-thread.c:1607,1
    - Dst: mbedtls_ssl_conf_rng
      Src: /src/lwan/src/lib/lwan-thread.c:1610,1
    - Dst: mbedtls_ssl_conf_ciphersuites
      Src: /src/lwan/src/lib/lwan-thread.c:1612,1
    - Dst: mbedtls_ssl_conf_renegotiation
      Src: /src/lwan/src/lib/lwan-thread.c:1614,1
    - Dst: mbedtls_ssl_conf_legacy_renegotiation
      Src: /src/lwan/src/lib/lwan-thread.c:1616,1
    - Dst: mbedtls_ssl_conf_alpn_protocols
      Src: /src/lwan/src/lib/lwan-thread.c:1621,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 52
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct lwan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1625
      start: 1525
    functionDepth: 2
    functionLinenumber: 1525
    functionLinenumberEnd: 1625
    functionName: lwan_init_tls
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - mbedtls_entropy_init
    - free
    - lwan_log_critical
    - mbedtls_x509_crt_init
    - abort
    - mbedtls_ssl_conf_renegotiation
    - mbedtls_ctr_drbg_init
    - mbedtls_ssl_config_defaults
    - mbedtls_pk_parse_keyfile
    - mbedtls_ctr_drbg_seed
    - lwan_log_mbedtls_error
    - mbedtls_pk_init
    - mbedtls_ssl_config_init
    - mbedtls_ssl_conf_legacy_renegotiation
    - lwan_log_debug
    - mbedtls_ssl_conf_alpn_protocols
    - calloc
    - mbedtls_ssl_conf_rng
    - mbedtls_ssl_conf_ca_chain
    - is_tls_ulp_supported
    - strlen
    - mbedtls_ssl_conf_ciphersuites
    - lwan_always_bzero
    - mbedtls_ssl_conf_own_cert
    - mbedtls_x509_crt_parse_file
    linkageType: ''
    returnType: bool
    signature: bool lwan_init_tls(struct lwan *l)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lwan_init_tls
      Src: /src/lwan/src/lib/lwan-thread.c:1632,1
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan-thread.c:1637,1
    - Dst: calloc
      Src: /src/lwan/src/lib/lwan-thread.c:1640,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-thread.c:1642,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-thread.c:1654,1
    - Dst: sysconf
      Src: /src/lwan/src/lib/lwan-thread.c:1654,1
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan-thread.c:1656,1
    - Dst: calloc
      Src: /src/lwan/src/lib/lwan-thread.c:1668,1
    - Dst: topology_to_schedtbl
      Src: /src/lwan/src/lib/lwan-thread.c:1669,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-thread.c:1677,1
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan-thread.c:1683,1
    - Dst: pthread_barrier_init
      Src: /src/lwan/src/lib/lwan-thread.c:1693,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-thread.c:1694,1
    - Dst: create_thread
      Src: /src/lwan/src/lib/lwan-thread.c:1723,1
    - Dst: create_listen_socket
      Src: /src/lwan/src/lib/lwan-thread.c:1725,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan-thread.c:1726,1
    - Dst: create_listen_socket
      Src: /src/lwan/src/lib/lwan-thread.c:1730,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan-thread.c:1731,1
    - Dst: adjust_thread_affinity
      Src: /src/lwan/src/lib/lwan-thread.c:1738,1
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan-thread.c:1741,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-thread.c:1743,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 51
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct lwan*
    assertStmts:
    - condition: (sysconf(_SC_LEVEL1_DCACHE_LINESIZE) == 64)
      pos:
        line_end: 1653
        line_start: 1653
        source_file: /src/lwan/src/lib/lwan-thread.c
    constantsTouched: []
    func_position:
      end: 1744
      start: 1628
    functionDepth: 3
    functionLinenumber: 1628
    functionLinenumberEnd: 1744
    functionName: lwan_thread_init
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - calloc
    - topology_to_schedtbl
    - free
    - lwan_log_critical
    - pthread_barrier_init
    - create_thread
    - create_listen_socket
    - adjust_thread_affinity
    - lwan_log_debug
    - sysconf
    - lwan_log_critical_perror
    - assert
    - lwan_init_tls
    linkageType: ''
    returnType: void
    signature: void lwan_thread_init(struct lwan *l)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan-thread.c:1748,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-thread.c:1757,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-thread.c:1758,1
    - Dst: pthread_barrier_wait
      Src: /src/lwan/src/lib/lwan-thread.c:1761,1
    - Dst: pthread_barrier_destroy
      Src: /src/lwan/src/lib/lwan-thread.c:1762,1
    - Dst: pthread_join
      Src: /src/lwan/src/lib/lwan-thread.c:1767,1
    - Dst: timeouts_close
      Src: /src/lwan/src/lib/lwan-thread.c:1768,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-thread.c:1771,1
    - Dst: mbedtls_ssl_config_free
      Src: /src/lwan/src/lib/lwan-thread.c:1775,1
    - Dst: mbedtls_x509_crt_free
      Src: /src/lwan/src/lib/lwan-thread.c:1776,1
    - Dst: mbedtls_pk_free
      Src: /src/lwan/src/lib/lwan-thread.c:1777,1
    - Dst: mbedtls_entropy_free
      Src: /src/lwan/src/lib/lwan-thread.c:1778,1
    - Dst: mbedtls_ctr_drbg_free
      Src: /src/lwan/src/lib/lwan-thread.c:1779,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-thread.c:1780,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct lwan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1783
      start: 1746
    functionDepth: 1
    functionLinenumber: 1746
    functionLinenumberEnd: 1783
    functionName: lwan_thread_shutdown
    functionSourceFile: /src/lwan/src/lib/lwan-thread.c
    functionUses: 0
    functionsReached:
    - free
    - pthread_barrier_destroy
    - close
    - pthread_barrier_wait
    - lwan_log_debug
    - timeouts_close
    - mbedtls_pk_free
    - mbedtls_ssl_config_free
    - mbedtls_entropy_free
    - pthread_join
    - mbedtls_x509_crt_free
    - mbedtls_ctr_drbg_free
    linkageType: ''
    returnType: void
    signature: void lwan_thread_shutdown(struct lwan *l)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_http_authorize
      Src: /src/lwan/src/lib/lwan-http-authorize.h:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - request
    - url_map
    argTypes:
    - struct lwan_request*
    - struct lwan_url_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 38
    functionName: lwan_http_authorize_urlmap
    functionSourceFile: /src/lwan/src/lib/lwan-http-authorize.h
    functionUses: 0
    functionsReached:
    - lwan_http_authorize
    linkageType: ''
    returnType: bool
    signature: "bool lwan_http_authorize_urlmap(struct lwan_request *request,\n                           const
      struct lwan_url_map *url_map)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ht
    argTypes:
    - struct hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 41
    functionName: hash_iter
    functionSourceFile: /src/lwan/src/lib/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct hash_iter
    signature: struct hash_iter hash_iter(const struct hash *ht)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - hash_
    - ','
    - iter_
    - ','
    - key_
    - ','
    - value_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 49
    functionName: HASH_FOREACH_IMPL
    functionSourceFile: /src/lwan/src/lib/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HASH_FOREACH_IMPL(hash_, iter_, key_, value_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - hash_
    - ','
    - key_
    - ','
    - value_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 51
    functionName: HASH_FOREACH
    functionSourceFile: /src/lwan/src/lib/hash.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HASH_FOREACH(hash_, key_, value_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - buffer
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 63
    functionName: fnv1a_64
    functionSourceFile: /src/lwan/src/lib/hash.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t fnv1a_64(const void *buffer, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - buffer
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 76
    functionName: fnv1a_32
    functionSourceFile: /src/lwan/src/lib/hash.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t fnv1a_32(const void *buffer, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: coro_strdup
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:123,1
    - Dst: coro_memdup
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:128,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:130,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - request
    - url
    argTypes:
    - struct lwan_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 134
    functionName: module_redirect_to
    functionSourceFile: /src/lwan/src/lib/lwan-mod-rewrite.c
    functionUses: 0
    functionsReached:
    - coro_strdup
    - coro_memdup
    - LIKELY
    linkageType: ''
    returnType: enum lwan_http_status
    signature: "enum lwan_http_status module_redirect_to(struct lwan_request *request,\n
      \                                               const char *url)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: coro_strdup
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:139,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:141,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - request
    - url
    argTypes:
    - struct lwan_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 149
    functionName: module_rewrite_as
    functionSourceFile: /src/lwan/src/lib/lwan-mod-rewrite.c
    functionUses: 0
    functionsReached:
    - coro_strdup
    - strlen
    - UNLIKELY
    linkageType: ''
    returnType: enum lwan_http_status
    signature: "enum lwan_http_status module_rewrite_as(struct lwan_request *request,\n
      \                                              const char *url)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:156,1
    - Dst: parse_int
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:159,1
    - Dst: strndupa
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - s
    - len
    - default_value
    argTypes:
    - char*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 160
    functionName: parse_int_len
    functionSourceFile: /src/lwan/src/lib/lwan-mod-rewrite.c
    functionUses: 0
    functionsReached:
    - parse_int
    - strndupa
    - UNLIKELY
    linkageType: ''
    returnType: int
    signature: "int parse_int_len(const char *s, size_t len,\n                                                   int
      default_value)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:171,1
    - Dst: lwan_strbuf_init_with_fixed_buffer
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:175,1
    - Dst: strspn
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:179,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:184,1
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:184,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:190,1
    - Dst: parse_int_len
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:191,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:193,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:196,1
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:196,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:202,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:202,1
    - Dst: strchr
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:207,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:209,1
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:211,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:214,1
    - Dst: lwan_strbuf_get_length
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:214,1
    - Dst: lwan_strbuf_get_buffer
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:217,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 29
    argCount: 5
    argNames:
    - expand_pattern
    - orig
    - buffer
    - sf
    - captures
    argTypes:
    - char*
    - char*
    - char[]
    - struct str_find*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 162
    functionDepth: 2
    functionLinenumber: 162
    functionLinenumberEnd: 218
    functionName: expand_string
    functionSourceFile: /src/lwan/src/lib/lwan-mod-rewrite.c
    functionUses: 0
    functionsReached:
    - strchr
    - lwan_strbuf_get_length
    - LIKELY
    - lwan_strbuf_init_with_fixed_buffer
    - parse_int_len
    - strspn
    - strlen
    - lwan_strbuf_append_char
    - lwan_strbuf_get_buffer
    - UNLIKELY
    - lwan_strbuf_append_str
    linkageType: ''
    returnType: char
    signature: "char *expand_string(const char *expand_pattern,\n                                 const
      char *orig,\n                                 char buffer[static PATH_MAX],\n
      \                                const struct str_find *sf,\n                                 int
      captures)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: expand_string
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - pattern
    - orig
    - buffer
    - sf
    - captures
    argTypes:
    - struct pattern*
    - char*
    - char[]
    - struct str_find*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 220
    functionDepth: 3
    functionLinenumber: 220
    functionLinenumberEnd: 227
    functionName: expand
    functionSourceFile: /src/lwan/src/lib/lwan-mod-rewrite.c
    functionUses: 0
    functionsReached:
    - expand_string
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: "ALWAYS_INLINE *expand(const struct pattern *pattern,\n                                        const
      char *orig,\n                                        char buffer[static PATH_MAX],\n
      \                                       const struct str_find *sf,\n                                        int
      captures)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_close
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 234
    functionName: lua_close_defer
    functionSourceFile: /src/lwan/src/lib/lwan-mod-rewrite.c
    functionUses: 0
    functionsReached:
    - lua_close
    linkageType: ''
    returnType: void
    signature: void lua_close_defer(void *data)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lwan_lua_create_state
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:246,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:247,1
    - Dst: coro_defer
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:249,1
    - Dst: lua_getglobal
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:251,1
    - Dst: lua_isfunction
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:252,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:253,1
    - Dst: lwan_lua_state_last_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:255,1
    - Dst: lwan_lua_state_push_request
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:259,1
    - Dst: lua_createtable
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:261,1
    - Dst: lua_pushinteger
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:263,1
    - Dst: lua_pushlstring
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:264,1
    - Dst: lua_settable
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:266,1
    - Dst: lua_pcall
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:269,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:270,1
    - Dst: lwan_lua_state_last_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:271,1
    - Dst: lua_tolstring
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:275,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:277,1
    - Dst: memcpy
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:282,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 6
    argNames:
    - request
    - pattern
    - orig
    - buffer
    - sf
    - captures
    argTypes:
    - struct lwan_request*
    - struct pattern*
    - char*
    - char[]
    - struct str_find*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 283
    functionName: expand_lua
    functionSourceFile: /src/lwan/src/lib/lwan-mod-rewrite.c
    functionUses: 0
    functionsReached:
    - lua_createtable
    - lua_settable
    - lua_pushlstring
    - lwan_lua_state_push_request
    - lua_pcall
    - lwan_lua_create_state
    - lwan_log_error
    - memcpy
    - coro_defer
    - lwan_lua_state_last_error
    - lua_pushinteger
    - lua_getglobal
    - lua_tolstring
    - UNLIKELY
    - lua_isfunction
    linkageType: ''
    returnType: char
    signature: "char *expand_lua(struct lwan_request *request,\n                              struct
      pattern *pattern, const char *orig,\n                              char buffer[static
      PATH_MAX],\n                              const struct str_find *sf, int captures)"
  - BBCount: 41
    BranchProfiles: []
    Callsites:
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:292,1
    - Dst: lwan_request_get_method
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:300,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:305,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:306,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:312,1
    - Dst: memcmp
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:317,1
    - Dst: lwan_request_get_accept_encoding
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:334,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:354,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:355,1
    - Dst: lwan_request_get_cookie
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:358,1
    - Dst: expand_string
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:362,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:364,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:369,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:370,1
    - Dst: secure_getenv
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:372,1
    - Dst: expand_string
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:376,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:378,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:383,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:384,1
    - Dst: lwan_request_get_query_param
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:387,1
    - Dst: expand_string
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:392,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:394,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:399,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:400,1
    - Dst: lwan_request_get_post_param
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:403,1
    - Dst: expand_string
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:407,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:409,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:414,1
    - Dst: expand_string
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:423,1
    - Dst: stat
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:425,1
    - Dst: S_ISREG
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:430,1
    - Dst: S_ISDIR
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:434,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:440,1
    - Dst: lwan_lua_create_state
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:442,1
    - Dst: coro_defer
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:445,1
    - Dst: lua_getglobal
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:447,1
    - Dst: lua_isfunction
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:448,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:449,1
    - Dst: lwan_lua_state_last_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:451,1
    - Dst: lwan_lua_state_push_request
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:455,1
    - Dst: lua_pcall
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:457,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:458,1
    - Dst: lwan_lua_state_last_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:459,1
    - Dst: lua_toboolean
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:463,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:467,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 103
    argCount: 5
    argNames:
    - request
    - p
    - sf
    - captures
    - expanded_buf
    argTypes:
    - struct lwan_request*
    - struct pattern*
    - struct str_find*
    - int
    - char[]
    assertStmts:
    - condition: (p->condition.lua.script)
      pos:
        line_end: 439
        line_start: 439
        source_file: /src/lwan/src/lib/lwan-mod-rewrite.c
    - condition: (!(p->flags & PATTERN_COND_LUA))
      pos:
        line_end: 466
        line_start: 466
        source_file: /src/lwan/src/lib/lwan-mod-rewrite.c
    - condition: (p->condition.env_var.key)
      pos:
        line_end: 368
        line_start: 368
        source_file: /src/lwan/src/lib/lwan-mod-rewrite.c
    - condition: (p->condition.query_var.key)
      pos:
        line_end: 382
        line_start: 382
        source_file: /src/lwan/src/lib/lwan-mod-rewrite.c
    - condition: (p->condition.post_var.key)
      pos:
        line_end: 398
        line_start: 398
        source_file: /src/lwan/src/lib/lwan-mod-rewrite.c
    - condition: (p->condition.backref.index >= 0)
      pos:
        line_end: 304
        line_start: 304
        source_file: /src/lwan/src/lib/lwan-mod-rewrite.c
    - condition: (p->condition.cookie.value)
      pos:
        line_end: 354
        line_start: 354
        source_file: /src/lwan/src/lib/lwan-mod-rewrite.c
    - condition: (p->condition.query_var.value)
      pos:
        line_end: 383
        line_start: 383
        source_file: /src/lwan/src/lib/lwan-mod-rewrite.c
    - condition: (p->condition.env_var.value)
      pos:
        line_end: 369
        line_start: 369
        source_file: /src/lwan/src/lib/lwan-mod-rewrite.c
    - condition: (p->condition.post_var.value)
      pos:
        line_end: 399
        line_start: 399
        source_file: /src/lwan/src/lib/lwan-mod-rewrite.c
    - condition: (p->condition.backref.str)
      pos:
        line_end: 305
        line_start: 305
        source_file: /src/lwan/src/lib/lwan-mod-rewrite.c
    - condition: (p->condition.cookie.key)
      pos:
        line_end: 353
        line_start: 353
        source_file: /src/lwan/src/lib/lwan-mod-rewrite.c
    - condition: (p->condition.stat.path)
      pos:
        line_end: 413
        line_start: 413
        source_file: /src/lwan/src/lib/lwan-mod-rewrite.c
    constantsTouched: []
    func_position:
      end: 471
      start: 286
    functionDepth: 3
    functionLinenumber: 286
    functionLinenumberEnd: 471
    functionName: condition_matches
    functionSourceFile: /src/lwan/src/lib/lwan-mod-rewrite.c
    functionUses: 0
    functionsReached:
    - lwan_lua_create_state
    - assert
    - lua_toboolean
    - lwan_request_get_post_param
    - lwan_lua_state_push_request
    - LIKELY
    - S_ISDIR
    - lwan_request_get_cookie
    - secure_getenv
    - streq
    - stat
    - expand_string
    - coro_defer
    - lwan_request_get_method
    - lwan_lua_state_last_error
    - lwan_log_error
    - lua_isfunction
    - memcmp
    - lwan_request_get_accept_encoding
    - lwan_request_get_query_param
    - S_ISREG
    - strlen
    - lua_pcall
    - lua_getglobal
    linkageType: ''
    returnType: bool
    signature: "bool condition_matches(struct lwan_request *request,\n                              const
      struct pattern *p,\n                              const struct str_find *sf,\n
      \                             int captures,\n                              char
      expanded_buf[static PATH_MAX])"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: LWAN_ARRAY_FOREACH
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:483,1
    - Dst: str_find
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:489,1
    - Dst: condition_matches
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:493,1
    - Dst: expand_lua
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:499,1
    - Dst: expand
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:503,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:507,1
    - Dst: module_redirect_to
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:510,1
    - Dst: module_rewrite_as
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:512,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 3
    argNames:
    - request
    - response
    - instance
    argTypes:
    - struct lwan_request*
    - struct lwan_response*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 473
    functionDepth: 4
    functionLinenumber: 473
    functionLinenumberEnd: 520
    functionName: rewrite_handle_request
    functionSourceFile: /src/lwan/src/lib/lwan-mod-rewrite.c
    functionUses: 0
    functionsReached:
    - str_find
    - module_rewrite_as
    - module_redirect_to
    - LIKELY
    - condition_matches
    - expand_lua
    - expand
    - LWAN_ARRAY_FOREACH
    linkageType: ''
    returnType: enum lwan_http_status
    signature: "enum lwan_http_status rewrite_handle_request(struct lwan_request *request,\n
      \                      struct lwan_response *response __attribute__((unused)),\n
      \                      void *instance)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:525,1
    - Dst: pattern_array_init
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:530,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - prefix
    - instance
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 522
    functionDepth: 0
    functionLinenumber: 522
    functionLinenumberEnd: 533
    functionName: rewrite_create
    functionSourceFile: /src/lwan/src/lib/lwan-mod-rewrite.c
    functionUses: 0
    functionsReached:
    - malloc
    - pattern_array_init
    linkageType: ''
    returnType: void
    signature: "void *rewrite_create(const char *prefix __attribute__((unused)),\n
      \                           void *instance __attribute__((unused)))"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: LWAN_ARRAY_FOREACH
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:540,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:541,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:542,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:544,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:545,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:548,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:549,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:552,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:553,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:556,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:557,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:560,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:561,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:564,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:568,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:572,1
    - Dst: pattern_array_reset
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:576,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:577,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 1
    argNames:
    - instance
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 535
    functionDepth: 0
    functionLinenumber: 535
    functionLinenumberEnd: 578
    functionName: rewrite_destroy
    functionSourceFile: /src/lwan/src/lib/lwan-mod-rewrite.c
    functionUses: 0
    functionsReached:
    - pattern_array_reset
    - LWAN_ARRAY_FOREACH
    - free
    linkageType: ''
    returnType: void
    signature: void rewrite_destroy(void *instance)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rewrite_create
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:584,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - prefix
    - hash
    argTypes:
    - char*
    - struct hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 580
    functionDepth: 1
    functionLinenumber: 580
    functionLinenumberEnd: 585
    functionName: rewrite_create_from_hash
    functionSourceFile: /src/lwan/src/lib/lwan-mod-rewrite.c
    functionUses: 0
    functionsReached:
    - rewrite_create
    linkageType: ''
    returnType: void
    signature: "void *rewrite_create_from_hash(const char *prefix,\n                                      const
      struct hash *hash\n                                      __attribute__((unused)))"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: config_read_line
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:595,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:598,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:603,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:613,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:620,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:622,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:627,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:629,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:638,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:639,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 5
    argNames:
    - pattern
    - key_value
    - condition_type
    - config
    - line
    argTypes:
    - struct pattern*
    - struct lwan_key_value*
    - enum pattern_flag
    - struct config*
    - struct config_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 587
    functionDepth: 4
    functionLinenumber: 587
    functionLinenumberEnd: 640
    functionName: parse_condition_key_value
    functionSourceFile: /src/lwan/src/lib/lwan-mod-rewrite.c
    functionUses: 0
    functionsReached:
    - strdup
    - free
    - config_error
    - config_read_line
    linkageType: ''
    returnType: void
    signature: "void parse_condition_key_value(struct pattern *pattern,\n                                      struct
      lwan_key_value *key_value,\n                                      enum pattern_flag
      condition_type,\n                                      struct config *config,\n
      \                                     const struct config_line *line)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: config_read_line
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:650,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:653,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:658,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:677,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:679,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:682,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:684,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:687,1
    - Dst: parse_bool
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:688,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:690,1
    - Dst: parse_bool
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:691,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:694,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:703,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 58
    argCount: 3
    argNames:
    - pattern
    - config
    - line
    argTypes:
    - struct pattern*
    - struct config*
    - struct config_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 642
    functionDepth: 4
    functionLinenumber: 642
    functionLinenumberEnd: 704
    functionName: parse_condition_stat
    functionSourceFile: /src/lwan/src/lib/lwan-mod-rewrite.c
    functionUses: 0
    functionsReached:
    - parse_bool
    - strdup
    - free
    - config_read_line
    - streq
    - config_error
    linkageType: ''
    returnType: void
    signature: "void parse_condition_stat(struct pattern *pattern,\n                                 struct
      config *config,\n                                 const struct config_line *line)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: config_read_line
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:711,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:714,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:722,1
    - Dst: parse_bool
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:723,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:725,1
    - Dst: parse_bool
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:726,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:728,1
    - Dst: parse_bool
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:729,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:731,1
    - Dst: parse_bool
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:732,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:734,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:735,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 2
    argNames:
    - pattern
    - config
    argTypes:
    - struct pattern*
    - struct config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 742
      start: 706
    functionDepth: 4
    functionLinenumber: 706
    functionLinenumberEnd: 742
    functionName: parse_condition_accept_encoding
    functionSourceFile: /src/lwan/src/lib/lwan-mod-rewrite.c
    functionUses: 0
    functionsReached:
    - parse_bool
    - streq
    - config_error
    - config_read_line
    linkageType: ''
    returnType: void
    signature: "void parse_condition_accept_encoding(struct pattern *pattern,\n                                            struct
      config *config)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: config_read_line
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:751,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:754,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:759,1
    - Dst: parse_int
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:769,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:771,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:775,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:776,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:778,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:787,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 2
    argNames:
    - pattern
    - config
    argTypes:
    - struct pattern*
    - struct config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 744
    functionDepth: 4
    functionLinenumber: 744
    functionLinenumberEnd: 788
    functionName: parse_condition_backref
    functionSourceFile: /src/lwan/src/lib/lwan-mod-rewrite.c
    functionUses: 0
    functionsReached:
    - parse_int
    - strdup
    - free
    - lwan_log_critical
    - config_read_line
    - config_error
    linkageType: ''
    returnType: void
    signature: "void parse_condition_backref(struct pattern *pattern,\n                                    struct
      config *config)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FOR_EACH_REQUEST_METHOD
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:798,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - pattern
    - string
    argTypes:
    - struct pattern*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 790
    functionDepth: 1
    functionLinenumber: 790
    functionLinenumberEnd: 803
    functionName: get_method_from_string
    functionSourceFile: /src/lwan/src/lib/lwan-mod-rewrite.c
    functionUses: 0
    functionsReached:
    - FOR_EACH_REQUEST_METHOD
    linkageType: ''
    returnType: bool
    signature: bool get_method_from_string(struct pattern *pattern, const char *string)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - upper
    - ','
    - lower
    - ','
    - mask
    - ','
    - constant
    - ','
    - probability
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 792
    functionDepth: 0
    functionLinenumber: 792
    functionLinenumberEnd: 797
    functionName: GENERATE_CMP
    functionSourceFile: /src/lwan/src/lib/lwan-mod-rewrite.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GENERATE_CMP(upper, lower, mask, constant, probability)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:809,1
    - Dst: parse_condition_key_value
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:810,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:813,1
    - Dst: parse_condition_key_value
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:814,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:817,1
    - Dst: parse_condition_key_value
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:818,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:821,1
    - Dst: parse_condition_key_value
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:822,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:825,1
    - Dst: parse_condition_key_value
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:826,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:829,1
    - Dst: parse_condition_stat
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:830,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:832,1
    - Dst: parse_condition_accept_encoding
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:833,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:835,1
    - Dst: parse_condition_backref
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:836,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:839,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 3
    argNames:
    - pattern
    - config
    - line
    argTypes:
    - struct pattern*
    - struct config*
    - struct config_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 840
      start: 805
    functionDepth: 5
    functionLinenumber: 805
    functionLinenumberEnd: 840
    functionName: parse_condition
    functionSourceFile: /src/lwan/src/lib/lwan-mod-rewrite.c
    functionUses: 0
    functionsReached:
    - parse_condition_accept_encoding
    - parse_condition_stat
    - parse_condition_backref
    - parse_condition_key_value
    - streq
    - config_error
    linkageType: ''
    returnType: void
    signature: "void parse_condition(struct pattern *pattern,\n                            struct
      config *config,\n                            const struct config_line *line)"
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: pattern_array_append0
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:850,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:854,1
    - Dst: config_read_line
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:858,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:861,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:862,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:864,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:867,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:868,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:870,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:873,1
    - Dst: parse_bool
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:874,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:875,1
    - Dst: parse_bool
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:876,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:878,1
    - Dst: parse_bool
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:879,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:881,1
    - Dst: parse_bool
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:882,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:884,1
    - Dst: parse_bool
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:885,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:888,1
    - Dst: get_method_from_string
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:889,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:890,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:896,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:897,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:899,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:904,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:909,1
    - Dst: parse_condition
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:910,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:912,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:917,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:929,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:938,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:951,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:952,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:953,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:955,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 110
    argCount: 3
    argNames:
    - pd
    - config
    - line
    argTypes:
    - struct private_data*
    - struct config*
    - struct config_line*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 957
      start: 842
    functionDepth: 6
    functionLinenumber: 842
    functionLinenumberEnd: 957
    functionName: rewrite_parse_conf_pattern
    functionSourceFile: /src/lwan/src/lib/lwan-mod-rewrite.c
    functionUses: 0
    functionsReached:
    - parse_bool
    - strdup
    - free
    - lwan_log_critical
    - get_method_from_string
    - parse_condition
    - config_read_line
    - streq
    - config_error
    - pattern_array_append0
    linkageType: ''
    returnType: bool
    signature: "bool rewrite_parse_conf_pattern(struct private_data *pd,\n                                       struct
      config *config,\n                                       const struct config_line
      *line)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: config_read_line
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:964,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:967,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:970,1
    - Dst: rewrite_parse_conf_pattern
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:971,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:973,1
    - Dst: config_last_error
      Src: /src/lwan/src/lib/lwan-mod-rewrite.c:981,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - instance
    - config
    argTypes:
    - void*
    - struct config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 959
    functionDepth: 7
    functionLinenumber: 959
    functionLinenumberEnd: 982
    functionName: rewrite_parse_conf
    functionSourceFile: /src/lwan/src/lib/lwan-mod-rewrite.c
    functionUses: 0
    functionsReached:
    - rewrite_parse_conf_pattern
    - config_last_error
    - config_read_line
    - streq
    - config_error
    linkageType: ''
    returnType: bool
    signature: bool rewrite_parse_conf(void *instance, struct config *config)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan-readahead.c:82,1
    - Dst: write
      Src: /src/lwan/src/lib/lwan-readahead.c:86,1
    - Dst: pthread_join
      Src: /src/lwan/src/lib/lwan-readahead.c:88,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-readahead.c:90,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-readahead.c:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 93
    functionName: lwan_readahead_shutdown
    functionSourceFile: /src/lwan/src/lib/lwan-readahead.c
    functionUses: 0
    functionsReached:
    - lwan_log_debug
    - close
    - write
    - pthread_join
    linkageType: ''
    returnType: void
    signature: void lwan_readahead_shutdown(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/lwan/src/lib/lwan-readahead.c:108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - fd
    - 'off'
    - size
    argTypes:
    - int
    - off_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 110
    functionName: lwan_readahead_queue
    functionSourceFile: /src/lwan/src/lib/lwan-readahead.c
    functionUses: 2
    functionsReached:
    - write
    linkageType: ''
    returnType: void
    signature: void lwan_readahead_queue(int fd, off_t off, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/lwan/src/lib/lwan-readahead.c:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - addr
    - length
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 127
    functionName: lwan_madvise_queue
    functionSourceFile: /src/lwan/src/lib/lwan-readahead.c
    functionUses: 2
    functionsReached:
    - write
    linkageType: ''
    returnType: void
    signature: void lwan_madvise_queue(void *addr, size_t length)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ioprio_set
      Src: /src/lwan/src/lib/lwan-readahead.c:134,1
    - Dst: IOPRIO_PRIO_VALUE
      Src: /src/lwan/src/lib/lwan-readahead.c:134,1
    - Dst: lwan_set_thread_name
      Src: /src/lwan/src/lib/lwan-readahead.c:136,1
    - Dst: read
      Src: /src/lwan/src/lib/lwan-readahead.c:140,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-readahead.c:143,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-readahead.c:146,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-readahead.c:150,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan-readahead.c:151,1
    - Dst: readahead
      Src: /src/lwan/src/lib/lwan-readahead.c:161,1
    - Dst: madvise
      Src: /src/lwan/src/lib/lwan-readahead.c:165,1
    - Dst: mlock
      Src: /src/lwan/src/lib/lwan-readahead.c:173,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 35
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 185
    functionName: lwan_readahead_loop
    functionSourceFile: /src/lwan/src/lib/lwan-readahead.c
    functionUses: 0
    functionsReached:
    - ioprio_set
    - read
    - IOPRIO_PRIO_VALUE
    - mlock
    - madvise
    - readahead
    - lwan_log_warning
    - lwan_log_perror
    - lwan_set_thread_name
    - UNLIKELY
    linkageType: ''
    returnType: void
    signature: void *lwan_readahead_loop(void *data __attribute__((unused)))
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan-readahead.c:194,1
    - Dst: pipe2
      Src: /src/lwan/src/lib/lwan-readahead.c:196,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan-readahead.c:197,1
    - Dst: fcntl
      Src: /src/lwan/src/lib/lwan-readahead.c:202,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan-readahead.c:204,1
    - Dst: fcntl
      Src: /src/lwan/src/lib/lwan-readahead.c:208,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan-readahead.c:209,1
    - Dst: pthread_create
      Src: /src/lwan/src/lib/lwan-readahead.c:214,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan-readahead.c:215,1
    - Dst: pthread_setschedparam
      Src: /src/lwan/src/lib/lwan-readahead.c:221,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-readahead.c:222,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-readahead.c:229,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-readahead.c:230,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan-readahead.c:243,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 244
    functionName: lwan_readahead_init
    functionSourceFile: /src/lwan/src/lib/lwan-readahead.c
    functionUses: 0
    functionsReached:
    - fcntl
    - pipe2
    - close
    - lwan_log_debug
    - lwan_log_warning
    - pthread_setschedparam
    - lwan_log_perror
    - pthread_create
    linkageType: ''
    returnType: void
    signature: void lwan_readahead_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - unused
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 37
    functionName: free_node_noop
    functionSourceFile: /src/lwan/src/lib/lwan-trie.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void free_node_noop(void *unused)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: arena_init0
      Src: /src/lwan/src/lib/lwan-trie.c:45,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - trie
    argTypes:
    - struct lwan_trie*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 47
    functionName: lwan_trie_init
    functionSourceFile: /src/lwan/src/lib/lwan-trie.c
    functionUses: 0
    functionsReached:
    - arena_init0
    linkageType: ''
    returnType: bool
    signature: bool lwan_trie_init(struct lwan_trie *trie, void (*free_node)(void
      *data))
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/lwan/src/lib/lwan-trie.c:61,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - node
    - key
    - len
    argTypes:
    - struct lwan_trie_node*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 66
    functionName: find_leaf_with_key
    functionSourceFile: /src/lwan/src/lib/lwan-trie.c
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: 'ALWAYS_INLINE *

      find_leaf_with_key(struct lwan_trie_node *node, const char *key, size_t len)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 76
    functionName: GET_NODE
    functionSourceFile: /src/lwan/src/lib/lwan-trie.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_NODE()
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-trie.c:79,1
    - Dst: arena_alloc
      Src: /src/lwan/src/lib/lwan-trie.c:80,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-trie.c:81,1
    - Dst: memcpy
      Src: /src/lwan/src/lib/lwan-trie.c:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - a
    - s
    argTypes:
    - struct arena*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 85
    functionName: arena_strdup
    functionSourceFile: /src/lwan/src/lib/lwan-trie.c
    functionUses: 0
    functionsReached:
    - memcpy
    - strlen
    - arena_alloc
    - UNLIKELY
    linkageType: ''
    returnType: char
    signature: char *arena_strdup(struct arena *a, const char *s)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-trie.c:89,1
    - Dst: GET_NODE
      Src: /src/lwan/src/lib/lwan-trie.c:97,1
    - Dst: GET_NODE
      Src: /src/lwan/src/lib/lwan-trie.c:100,1
    - Dst: find_leaf_with_key
      Src: /src/lwan/src/lib/lwan-trie.c:103,1
    - Dst: arena_alloc
      Src: /src/lwan/src/lib/lwan-trie.c:106,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-trie.c:107,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan-trie.c:108,1
    - Dst: struct lwan_trie*::free_node
      Src: /src/lwan/src/lib/lwan-trie.c:110,1
    - Dst: arena_strdup
      Src: /src/lwan/src/lib/lwan-trie.c:115,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan-trie.c:122,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 3
    argNames:
    - trie
    - key
    - data
    argTypes:
    - struct lwan_trie*
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 87
    functionDepth: 2
    functionLinenumber: 87
    functionLinenumberEnd: 123
    functionName: lwan_trie_add
    functionSourceFile: /src/lwan/src/lib/lwan-trie.c
    functionUses: 0
    functionsReached:
    - struct lwan_trie*::free_node
    - arena_strdup
    - GET_NODE
    - find_leaf_with_key
    - lwan_log_critical_perror
    - arena_alloc
    - UNLIKELY
    linkageType: ''
    returnType: void
    signature: void lwan_trie_add(struct lwan_trie *trie, const char *key, void *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 3
    argNames:
    - root
    - key
    - prefix_len
    argTypes:
    - struct lwan_trie_node*
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 144
    functionName: lookup_node
    functionSourceFile: /src/lwan/src/lib/lwan-trie.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: 'ALWAYS_INLINE *

      lookup_node(struct lwan_trie_node *root, const char *key, size_t *prefix_len)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-trie.c:149,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-trie.c:150,1
    - Dst: lookup_node
      Src: /src/lwan/src/lib/lwan-trie.c:153,1
    - Dst: find_leaf_with_key
      Src: /src/lwan/src/lib/lwan-trie.c:156,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - trie
    - key
    argTypes:
    - struct lwan_trie*
    - char*
    assertStmts:
    - condition: (trie)
      pos:
        line_end: 148
        line_start: 148
        source_file: /src/lwan/src/lib/lwan-trie.c
    - condition: (key)
      pos:
        line_end: 149
        line_start: 149
        source_file: /src/lwan/src/lib/lwan-trie.c
    constantsTouched: []
    func_position:
      end: 163
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 163
    functionName: lwan_trie_lookup_prefix
    functionSourceFile: /src/lwan/src/lib/lwan-trie.c
    functionUses: 0
    functionsReached:
    - lookup_node
    - find_leaf_with_key
    - assert
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: "ALWAYS_INLINE *lwan_trie_lookup_prefix(struct lwan_trie *trie,\n                                            const
      char *key)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct lwan_trie*::free_node
      Src: /src/lwan/src/lib/lwan-trie.c:172,1
    - Dst: lwan_trie_node_destroy
      Src: /src/lwan/src/lib/lwan-trie.c:177,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - trie
    - node
    argTypes:
    - struct lwan_trie*
    - struct lwan_trie_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 179
    functionName: lwan_trie_node_destroy
    functionSourceFile: /src/lwan/src/lib/lwan-trie.c
    functionUses: 1
    functionsReached:
    - lwan_trie_node_destroy
    - struct lwan_trie*::free_node
    linkageType: ''
    returnType: void
    signature: "void lwan_trie_node_destroy(struct lwan_trie *trie,\n                                   struct
      lwan_trie_node *node)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_trie_node_destroy
      Src: /src/lwan/src/lib/lwan-trie.c:185,1
    - Dst: arena_reset
      Src: /src/lwan/src/lib/lwan-trie.c:186,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - trie
    argTypes:
    - struct lwan_trie*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 181
    functionDepth: 2
    functionLinenumber: 181
    functionLinenumberEnd: 187
    functionName: lwan_trie_destroy
    functionSourceFile: /src/lwan/src/lib/lwan-trie.c
    functionUses: 0
    functionsReached:
    - lwan_trie_node_destroy
    - arena_reset
    linkageType: ''
    returnType: void
    signature: void lwan_trie_destroy(struct lwan_trie *trie)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: luaL_checkudata
      Src: /src/lwan/src/lib/lwan-lua.c:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 45
    functionName: lwan_lua_get_request_from_userdata
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - luaL_checkudata
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE *lwan_lua_get_request_from_userdata(lua_State *L)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushstring
      Src: /src/lwan/src/lib/lwan-lua.c:50,1
    - Dst: lua_pushstring
      Src: /src/lwan/src/lib/lwan-lua.c:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 54
    functionName: LWAN_LUA_METHOD
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - lua_pushstring
    linkageType: ''
    returnType: void
    signature: void LWAN_LUA_METHOD(http_version)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushstring
      Src: /src/lwan/src/lib/lwan-lua.c:58,1
    - Dst: lwan_request_get_method_str
      Src: /src/lwan/src/lib/lwan-lua.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 60
    functionName: LWAN_LUA_METHOD
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - lwan_request_get_method_str
    - lua_pushstring
    linkageType: ''
    returnType: void
    signature: void LWAN_LUA_METHOD(http_method)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lua_newtable
      Src: /src/lwan/src/lib/lwan-lua.c:66,1
    - Dst: memchr
      Src: /src/lwan/src/lib/lwan-lua.c:71,1
    - Dst: lua_pushlstring
      Src: /src/lwan/src/lib/lwan-lua.c:82,1
    - Dst: lua_pushlstring
      Src: /src/lwan/src/lib/lwan-lua.c:83,1
    - Dst: lua_rawset
      Src: /src/lwan/src/lib/lwan-lua.c:84,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 88
    functionName: LWAN_LUA_METHOD
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - memchr
    - lua_pushlstring
    - lua_newtable
    - lua_rawset
    linkageType: ''
    returnType: void
    signature: void LWAN_LUA_METHOD(http_headers)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_tolstring
      Src: /src/lwan/src/lib/lwan-lua.c:93,1
    - Dst: lwan_strbuf_set_static
      Src: /src/lwan/src/lib/lwan-lua.c:95,1
    - Dst: lwan_response_send_chunk
      Src: /src/lwan/src/lib/lwan-lua.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 100
    functionName: LWAN_LUA_METHOD
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - lua_tolstring
    - lwan_response_send_chunk
    - lwan_strbuf_set_static
    linkageType: ''
    returnType: void
    signature: void LWAN_LUA_METHOD(say)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_tolstring
      Src: /src/lwan/src/lib/lwan-lua.c:105,1
    - Dst: lua_tostring
      Src: /src/lwan/src/lib/lwan-lua.c:106,1
    - Dst: lwan_strbuf_set_static
      Src: /src/lwan/src/lib/lwan-lua.c:108,1
    - Dst: lwan_response_send_event
      Src: /src/lwan/src/lib/lwan-lua.c:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 102
    functionDepth: 1
    functionLinenumber: 102
    functionLinenumberEnd: 112
    functionName: LWAN_LUA_METHOD
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - lua_tostring
    - lwan_response_send_event
    - lua_tolstring
    - lwan_strbuf_set_static
    linkageType: ''
    returnType: void
    signature: void LWAN_LUA_METHOD(send_event)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_tolstring
      Src: /src/lwan/src/lib/lwan-lua.c:117,1
    - Dst: lwan_strbuf_set
      Src: /src/lwan/src/lib/lwan-lua.c:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 122
    functionName: LWAN_LUA_METHOD
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_set
    - lua_tolstring
    linkageType: ''
    returnType: void
    signature: void LWAN_LUA_METHOD(set_response)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_tostring
      Src: /src/lwan/src/lib/lwan-lua.c:129,1
    - Dst: getter
      Src: /src/lwan/src/lib/lwan-lua.c:130,1
    - Dst: lua_pushnil
      Src: /src/lwan/src/lib/lwan-lua.c:133,1
    - Dst: lua_pushstring
      Src: /src/lwan/src/lib/lwan-lua.c:135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - L
    - request
    - "(*getter)(struct lwan_request *req,\n                                                      const
      char *key)"
    argTypes:
    - lua_State*
    - struct lwan_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 138
    functionName: request_param_getter
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - lua_tostring
    - lua_pushstring
    - lua_pushnil
    - getter
    linkageType: ''
    returnType: int
    signature: "int request_param_getter(lua_State *L,\n                                struct
      lwan_request *request,\n                                const char *(*getter)(struct
      lwan_request *req,\n                                                      const
      char *key))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushstring
      Src: /src/lwan/src/lib/lwan-lua.c:143,1
    - Dst: lwan_request_get_remote_address
      Src: /src/lwan/src/lib/lwan-lua.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 145
    functionName: LWAN_LUA_METHOD
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - lwan_request_get_remote_address
    - lua_pushstring
    linkageType: ''
    returnType: void
    signature: void LWAN_LUA_METHOD(remote_address)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: request_param_getter
      Src: /src/lwan/src/lib/lwan-lua.c:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 150
    functionName: LWAN_LUA_METHOD
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - request_param_getter
    linkageType: ''
    returnType: void
    signature: void LWAN_LUA_METHOD(header)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushboolean
      Src: /src/lwan/src/lib/lwan-lua.c:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 156
    functionName: LWAN_LUA_METHOD
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - lua_pushboolean
    linkageType: ''
    returnType: void
    signature: void LWAN_LUA_METHOD(is_https)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushlstring
      Src: /src/lwan/src/lib/lwan-lua.c:160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 162
    functionName: LWAN_LUA_METHOD
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - lua_pushlstring
    linkageType: ''
    returnType: void
    signature: void LWAN_LUA_METHOD(path)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_request_get_host
      Src: /src/lwan/src/lib/lwan-lua.c:166,1
    - Dst: lua_pushstring
      Src: /src/lwan/src/lib/lwan-lua.c:169,1
    - Dst: lua_pushnil
      Src: /src/lwan/src/lib/lwan-lua.c:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 174
    functionName: LWAN_LUA_METHOD
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - lua_pushstring
    - lwan_request_get_host
    - lua_pushnil
    linkageType: ''
    returnType: void
    signature: void LWAN_LUA_METHOD(host)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushlstring
      Src: /src/lwan/src/lib/lwan-lua.c:179,1
    - Dst: lua_pushlstring
      Src: /src/lwan/src/lib/lwan-lua.c:181,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 184
    functionName: LWAN_LUA_METHOD
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - lua_pushlstring
    linkageType: ''
    returnType: void
    signature: void LWAN_LUA_METHOD(query_string)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: request_param_getter
      Src: /src/lwan/src/lib/lwan-lua.c:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 189
    functionName: LWAN_LUA_METHOD
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - request_param_getter
    linkageType: ''
    returnType: void
    signature: void LWAN_LUA_METHOD(query_param)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: request_param_getter
      Src: /src/lwan/src/lib/lwan-lua.c:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 194
    functionName: LWAN_LUA_METHOD
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - request_param_getter
    linkageType: ''
    returnType: void
    signature: void LWAN_LUA_METHOD(post_param)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: request_param_getter
      Src: /src/lwan/src/lib/lwan-lua.c:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 199
    functionName: LWAN_LUA_METHOD
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - request_param_getter
    linkageType: ''
    returnType: void
    signature: void LWAN_LUA_METHOD(cookie)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushlstring
      Src: /src/lwan/src/lib/lwan-lua.c:204,1
    - Dst: lua_pushlstring
      Src: /src/lwan/src/lib/lwan-lua.c:206,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 209
    functionName: LWAN_LUA_METHOD
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - lua_pushlstring
    linkageType: ''
    returnType: void
    signature: void LWAN_LUA_METHOD(body)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_request_websocket_upgrade
      Src: /src/lwan/src/lib/lwan-lua.c:213,1
    - Dst: lua_pushinteger
      Src: /src/lwan/src/lib/lwan-lua.c:215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 218
    functionName: LWAN_LUA_METHOD
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - lua_pushinteger
    - lwan_request_websocket_upgrade
    linkageType: ''
    returnType: void
    signature: void LWAN_LUA_METHOD(ws_upgrade)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_tolstring
      Src: /src/lwan/src/lib/lwan-lua.c:223,1
    - Dst: lwan_strbuf_set_static
      Src: /src/lwan/src/lib/lwan-lua.c:225,1
    - Dst: lwan_response_websocket_write_text
      Src: /src/lwan/src/lib/lwan-lua.c:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 229
    functionName: LWAN_LUA_METHOD
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - lwan_response_websocket_write_text
    - lua_tolstring
    - lwan_strbuf_set_static
    linkageType: ''
    returnType: void
    signature: void LWAN_LUA_METHOD(ws_write_text)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_tolstring
      Src: /src/lwan/src/lib/lwan-lua.c:234,1
    - Dst: lwan_strbuf_set_static
      Src: /src/lwan/src/lib/lwan-lua.c:236,1
    - Dst: lwan_response_websocket_write_binary
      Src: /src/lwan/src/lib/lwan-lua.c:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 240
    functionName: LWAN_LUA_METHOD
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - lwan_response_websocket_write_binary
    - lua_tolstring
    - lwan_strbuf_set_static
    linkageType: ''
    returnType: void
    signature: void LWAN_LUA_METHOD(ws_write_binary)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_tolstring
      Src: /src/lwan/src/lib/lwan-lua.c:245,1
    - Dst: lwan_strbuf_set_static
      Src: /src/lwan/src/lib/lwan-lua.c:247,1
    - Dst: lwan_response_websocket_write_binary
      Src: /src/lwan/src/lib/lwan-lua.c:251,1
    - Dst: lwan_response_websocket_write_text
      Src: /src/lwan/src/lib/lwan-lua.c:256,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 242
    functionDepth: 1
    functionLinenumber: 242
    functionLinenumberEnd: 258
    functionName: LWAN_LUA_METHOD
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - lwan_response_websocket_write_text
    - lwan_response_websocket_write_binary
    - lua_tolstring
    - lwan_strbuf_set_static
    linkageType: ''
    returnType: void
    signature: void LWAN_LUA_METHOD(ws_write)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lwan_response_websocket_read
      Src: /src/lwan/src/lib/lwan-lua.c:266,1
    - Dst: lua_pushlstring
      Src: /src/lwan/src/lib/lwan-lua.c:269,1
    - Dst: lwan_strbuf_get_buffer
      Src: /src/lwan/src/lib/lwan-lua.c:269,1
    - Dst: lwan_strbuf_get_length
      Src: /src/lwan/src/lib/lwan-lua.c:270,1
    - Dst: lua_pushinteger
      Src: /src/lwan/src/lib/lwan-lua.c:274,1
    - Dst: lua_pushinteger
      Src: /src/lwan/src/lib/lwan-lua.c:277,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 260
    functionDepth: 1
    functionLinenumber: 260
    functionLinenumberEnd: 282
    functionName: LWAN_LUA_METHOD
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - lwan_response_websocket_read
    - lwan_strbuf_get_length
    - lua_pushlstring
    - lwan_strbuf_get_buffer
    - lua_pushinteger
    linkageType: ''
    returnType: void
    signature: void LWAN_LUA_METHOD(ws_read)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lua_tolstring
      Src: /src/lwan/src/lib/lwan-lua.c:292,1
    - Dst: coro_memdup
      Src: /src/lwan/src/lib/lwan-lua.c:293,1
    - Dst: strcaseequal_neutral
      Src: /src/lwan/src/lib/lwan-lua.c:295,1
    - Dst: lwan_key_value_array_append
      Src: /src/lwan/src/lib/lwan-lua.c:300,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 6
    argNames:
    - request
    - L
    - coro
    - arr
    - key
    - value_index
    argTypes:
    - struct lwan_request*
    - lua_State*
    - struct coro*
    - struct lwan_key_value_array*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 309
    functionName: append_key_value
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - strcaseequal_neutral
    - lua_tolstring
    - coro_memdup
    - lwan_key_value_array_append
    linkageType: ''
    returnType: bool
    signature: "bool append_key_value(struct lwan_request *request,\n                             lua_State
      *L,\n                             struct coro *coro,\n                             struct
      lwan_key_value_array *arr,\n                             char *key,\n                             int
      value_index)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: lua_istable
      Src: /src/lwan/src/lib/lwan-lua.c:323,1
    - Dst: coro_lwan_key_value_array_new
      Src: /src/lwan/src/lib/lwan-lua.c:326,1
    - Dst: lua_pushnil
      Src: /src/lwan/src/lib/lwan-lua.c:330,1
    - Dst: lua_next
      Src: /src/lwan/src/lib/lwan-lua.c:330,1
    - Dst: lua_pop
      Src: /src/lwan/src/lib/lwan-lua.c:330,1
    - Dst: lua_type
      Src: /src/lwan/src/lib/lwan-lua.c:333,1
    - Dst: coro_strdup
      Src: /src/lwan/src/lib/lwan-lua.c:336,1
    - Dst: lua_tostring
      Src: /src/lwan/src/lib/lwan-lua.c:336,1
    - Dst: lua_type
      Src: /src/lwan/src/lib/lwan-lua.c:340,1
    - Dst: append_key_value
      Src: /src/lwan/src/lib/lwan-lua.c:342,1
    - Dst: lua_pushnil
      Src: /src/lwan/src/lib/lwan-lua.c:346,1
    - Dst: lua_next
      Src: /src/lwan/src/lib/lwan-lua.c:346,1
    - Dst: lua_pop
      Src: /src/lwan/src/lib/lwan-lua.c:346,1
    - Dst: lua_isstring
      Src: /src/lwan/src/lib/lwan-lua.c:347,1
    - Dst: append_key_value
      Src: /src/lwan/src/lib/lwan-lua.c:349,1
    - Dst: lwan_key_value_array_append
      Src: /src/lwan/src/lib/lwan-lua.c:357,1
    - Dst: lwan_key_value_array_get_array
      Src: /src/lwan/src/lib/lwan-lua.c:362,1
    - Dst: lua_pushinteger
      Src: /src/lwan/src/lib/lwan-lua.c:363,1
    - Dst: lua_pushnil
      Src: /src/lwan/src/lib/lwan-lua.c:367,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 311
    functionDepth: 2
    functionLinenumber: 311
    functionLinenumberEnd: 369
    functionName: LWAN_LUA_METHOD
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - lua_type
    - coro_strdup
    - lua_isstring
    - append_key_value
    - lwan_key_value_array_append
    - lua_istable
    - lwan_key_value_array_get_array
    - coro_lwan_key_value_array_new
    - lua_next
    - lua_tostring
    - lua_pop
    - lua_pushnil
    - lua_pushinteger
    linkageType: ''
    returnType: void
    signature: void LWAN_LUA_METHOD(set_headers)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_tointeger
      Src: /src/lwan/src/lib/lwan-lua.c:373,1
    - Dst: lwan_request_sleep
      Src: /src/lwan/src/lib/lwan-lua.c:375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 378
    functionName: LWAN_LUA_METHOD
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - lua_tointeger
    - lwan_request_sleep
    linkageType: ''
    returnType: void
    signature: void LWAN_LUA_METHOD(sleep)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushfstring
      Src: /src/lwan/src/lib/lwan-lua.c:382,1
    - Dst: lwan_request_get_id
      Src: /src/lwan/src/lib/lwan-lua.c:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 380
    functionDepth: 3
    functionLinenumber: 380
    functionLinenumberEnd: 384
    functionName: LWAN_LUA_METHOD
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - lua_pushfstring
    - lwan_request_get_id
    linkageType: ''
    returnType: void
    signature: void LWAN_LUA_METHOD(request_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_pushstring
      Src: /src/lwan/src/lib/lwan-lua.c:388,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 386
    functionDepth: 0
    functionLinenumber: 386
    functionLinenumberEnd: 390
    functionName: LWAN_LUA_METHOD
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - lua_pushstring
    linkageType: ''
    returnType: void
    signature: void LWAN_LUA_METHOD(request_date)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 392
    functionDepth: 0
    functionLinenumber: 392
    functionLinenumberEnd: 393
    functionName: FOR_EACH_LOG_FUNCTION
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOR_EACH_LOG_FUNCTION(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 406
    functionName: IMPLEMENT_FUNCTION
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IMPLEMENT_FUNCTION(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FOR_EACH_LOG_FUNCTION
      Src: /src/lwan/src/lib/lwan-lua.c:414,1
    - Dst: luaL_newmetatable
      Src: /src/lwan/src/lib/lwan-lua.c:419,1
    - Dst: luaL_register
      Src: /src/lwan/src/lib/lwan-lua.c:420,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 409
    functionDepth: 1
    functionLinenumber: 409
    functionLinenumberEnd: 423
    functionName: luaopen_log
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - luaL_newmetatable
    - FOR_EACH_LOG_FUNCTION
    - luaL_register
    linkageType: ''
    returnType: int
    signature: int luaopen_log(lua_State *L)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 413
    functionName: LOG_FUNCTION
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOG_FUNCTION(name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lwan_lua_method_array_init
      Src: /src/lwan/src/lib/lwan-lua.c:433,1
    - Dst: lwan_lua_method_array_append
      Src: /src/lwan/src/lib/lwan-lua.c:436,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-lua.c:438,1
    - Dst: lwan_lua_method_array_append
      Src: /src/lwan/src/lib/lwan-lua.c:446,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-lua.c:448,1
    - Dst: lwan_lua_method_array_get_array
      Src: /src/lwan/src/lib/lwan-lua.c:453,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 427
    functionDepth: 1
    functionLinenumber: 427
    functionLinenumberEnd: 454
    functionName: LWAN_LAZY_GLOBAL
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - lwan_lua_method_array_append
    - lwan_lua_method_array_init
    - lwan_lua_method_array_get_array
    - lwan_log_critical
    linkageType: ''
    returnType: void
    signature: void LWAN_LAZY_GLOBAL(luaL_reg *, lua_methods)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_lua_method_array_append
      Src: /src/lwan/src/lib/lwan-lua.c:436,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-lua.c:438,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 435
    functionDepth: 1
    functionLinenumber: 435
    functionLinenumberEnd: 444
    functionName: LWAN_SECTION_FOREACH
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 0
    functionsReached:
    - lwan_lua_method_array_append
    - lwan_log_critical
    linkageType: ''
    returnType: void
    signature: void LWAN_SECTION_FOREACH(lwan_lua_method, info)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_tostring
      Src: /src/lwan/src/lib/lwan-lua.c:458,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - L
    argTypes:
    - lua_State*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 456
    functionDepth: 0
    functionLinenumber: 456
    functionLinenumberEnd: 459
    functionName: lwan_lua_state_last_error
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 2
    functionsReached:
    - lua_tostring
    linkageType: ''
    returnType: char
    signature: char *lwan_lua_state_last_error(lua_State *L)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: luaL_newstate
      Src: /src/lwan/src/lib/lwan-lua.c:465,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-lua.c:466,1
    - Dst: luaL_openlibs
      Src: /src/lwan/src/lib/lwan-lua.c:469,1
    - Dst: luaopen_log
      Src: /src/lwan/src/lib/lwan-lua.c:470,1
    - Dst: luaL_newmetatable
      Src: /src/lwan/src/lib/lwan-lua.c:472,1
    - Dst: luaL_register
      Src: /src/lwan/src/lib/lwan-lua.c:473,1
    - Dst: lua_methods
      Src: /src/lwan/src/lib/lwan-lua.c:473,1
    - Dst: lua_setfield
      Src: /src/lwan/src/lib/lwan-lua.c:474,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-lua.c:477,1
    - Dst: luaL_dofile
      Src: /src/lwan/src/lib/lwan-lua.c:477,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-lua.c:478,1
    - Dst: lua_tostring
      Src: /src/lwan/src/lib/lwan-lua.c:479,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-lua.c:483,1
    - Dst: luaL_dostring
      Src: /src/lwan/src/lib/lwan-lua.c:483,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-lua.c:484,1
    - Dst: lua_tostring
      Src: /src/lwan/src/lib/lwan-lua.c:485,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-lua.c:489,1
    - Dst: lua_close
      Src: /src/lwan/src/lib/lwan-lua.c:496,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 2
    argNames:
    - script_file
    - script
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 461
    functionDepth: 2
    functionLinenumber: 461
    functionLinenumberEnd: 498
    functionName: lwan_lua_create_state
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 2
    functionsReached:
    - luaopen_log
    - luaL_dostring
    - luaL_newstate
    - luaL_openlibs
    - lua_methods
    - luaL_register
    - lwan_log_error
    - lua_tostring
    - luaL_dofile
    - luaL_newmetatable
    - lua_setfield
    - lua_close
    - UNLIKELY
    linkageType: ''
    returnType: lua_State
    signature: lua_State *lwan_lua_create_state(const char *script_file, const char
      *script)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_newuserdata
      Src: /src/lwan/src/lib/lwan-lua.c:503,1
    - Dst: luaL_getmetatable
      Src: /src/lwan/src/lib/lwan-lua.c:506,1
    - Dst: lua_setmetatable
      Src: /src/lwan/src/lib/lwan-lua.c:507,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - L
    - request
    argTypes:
    - lua_State*
    - struct lwan_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 500
    functionDepth: 0
    functionLinenumber: 500
    functionLinenumberEnd: 508
    functionName: lwan_lua_state_push_request
    functionSourceFile: /src/lwan/src/lib/lwan-lua.c
    functionUses: 2
    functionsReached:
    - luaL_getmetatable
    - lua_newuserdata
    - lua_setmetatable
    linkageType: ''
    returnType: void
    signature: void lwan_lua_state_push_request(lua_State *L, struct lwan_request
      *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-coro.c:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (DEFAULT_BUFFER_SIZE < CORO_STACK_SIZE)
      pos:
        line_end: 69
        line_start: 69
        source_file: /src/lwan/src/lib/lwan-coro.c
    constantsTouched: []
    func_position:
      end: 71
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 71
    functionName: LWAN_SELF_TEST
    functionSourceFile: /src/lwan/src/lib/lwan-coro.c
    functionUses: 1
    functionsReached:
    - assert
    linkageType: ''
    returnType: void
    signature: void LWAN_SELF_TEST(sizes_are_same)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 115
    functionName: ASM_SYMBOL
    functionSourceFile: /src/lwan/src/lib/lwan-coro.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ASM_SYMBOL(name_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 117
    functionName: ASM_SYMBOL
    functionSourceFile: /src/lwan/src/lib/lwan-coro.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ASM_SYMBOL(name_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 121
    functionName: ASM_ROUTINE
    functionSourceFile: /src/lwan/src/lib/lwan-coro.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ASM_ROUTINE(name_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - cur
    - ','
    - oth
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 195
    functionName: coro_swapcontext
    functionSourceFile: /src/lwan/src/lib/lwan-coro.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: coro_swapcontext(cur, oth)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: visibility
      Src: /src/lwan/src/lib/lwan-coro.c:199,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-coro.c:203,1
    - Dst: func
      Src: /src/lwan/src/lib/lwan-coro.c:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - coro
    - func
    - data
    argTypes:
    - struct coro*
    - coro_function_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 204
    functionName: coro_entry_point
    functionSourceFile: /src/lwan/src/lib/lwan-coro.c
    functionUses: 0
    functionsReached:
    - visibility
    - func
    - coro_yield
    linkageType: ''
    returnType: void
    signature: void coro_entry_point(struct coro *coro, coro_function_t func, void
      *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct coro_defer*::two::func
      Src: /src/lwan/src/lib/lwan-coro.c:237,1
    - Dst: struct coro_defer*::one::func
      Src: /src/lwan/src/lib/lwan-coro.c:239,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - coro
    - generation
    argTypes:
    - struct coro*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 243
    functionName: coro_deferred_run
    functionSourceFile: /src/lwan/src/lib/lwan-coro.c
    functionUses: 1
    functionsReached:
    - struct coro_defer*::one::func
    - struct coro_defer*::two::func
    linkageType: ''
    returnType: void
    signature: void coro_deferred_run(struct coro *coro, size_t generation)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - coro
    argTypes:
    - struct coro*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 245
    functionDepth: 0
    functionLinenumber: 245
    functionLinenumberEnd: 250
    functionName: coro_deferred_get_generation
    functionSourceFile: /src/lwan/src/lib/lwan-coro.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE coro_deferred_get_generation(const struct coro *coro)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: coro_deferred_run
      Src: /src/lwan/src/lib/lwan-coro.c:256,1
    - Dst: arena_reset
      Src: /src/lwan/src/lib/lwan-coro.c:257,1
    - Dst: coro_defer_array_reset
      Src: /src/lwan/src/lib/lwan-coro.c:258,1
    - Dst: libucontext_getcontext
      Src: /src/lwan/src/lib/lwan-coro.c:287,1
    - Dst: libucontext_makecontext
      Src: /src/lwan/src/lib/lwan-coro.c:294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 3
    argNames:
    - coro
    - func
    - data
    argTypes:
    - struct coro*
    - coro_function_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 252
    functionDepth: 1
    functionLinenumber: 252
    functionLinenumberEnd: 298
    functionName: coro_reset
    functionSourceFile: /src/lwan/src/lib/lwan-coro.c
    functionUses: 0
    functionsReached:
    - coro_defer_array_reset
    - coro_deferred_run
    - arena_reset
    - libucontext_makecontext
    - libucontext_getcontext
    linkageType: ''
    returnType: void
    signature: void coro_reset(struct coro *coro, coro_function_t func, void *data)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mmap
      Src: /src/lwan/src/lib/lwan-coro.c:306,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-coro.c:308,1
    - Dst: set_vma_anon_name
      Src: /src/lwan/src/lib/lwan-coro.c:311,1
    - Dst: lwan_aligned_alloc
      Src: /src/lwan/src/lib/lwan-coro.c:313,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-coro.c:314,1
    - Dst: munmap
      Src: /src/lwan/src/lib/lwan-coro.c:315,1
    - Dst: lwan_aligned_alloc
      Src: /src/lwan/src/lib/lwan-coro.c:321,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-coro.c:323,1
    - Dst: coro_defer_array_init
      Src: /src/lwan/src/lib/lwan-coro.c:327,1
    - Dst: arena_init
      Src: /src/lwan/src/lib/lwan-coro.c:328,1
    - Dst: coro_reset
      Src: /src/lwan/src/lib/lwan-coro.c:331,1
    - Dst: VALGRIND_STACK_REGISTER
      Src: /src/lwan/src/lib/lwan-coro.c:334,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - switcher
    - function
    - data
    argTypes:
    - coro_context*
    - coro_function_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 300
    functionDepth: 2
    functionLinenumber: 300
    functionLinenumberEnd: 339
    functionName: coro_new
    functionSourceFile: /src/lwan/src/lib/lwan-coro.c
    functionUses: 2
    functionsReached:
    - coro_defer_array_init
    - munmap
    - lwan_aligned_alloc
    - coro_reset
    - arena_init
    - VALGRIND_STACK_REGISTER
    - mmap
    - set_vma_anon_name
    - UNLIKELY
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: 'ALWAYS_INLINE *

      coro_new(coro_context *switcher, coro_function_t function, void *data)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-coro.c:343,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-coro.c:346,1
    - Dst: coro_swapcontext
      Src: /src/lwan/src/lib/lwan-coro.c:351,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - coro
    argTypes:
    - struct coro*
    assertStmts:
    - condition: (coro)
      pos:
        line_end: 342
        line_start: 342
        source_file: /src/lwan/src/lib/lwan-coro.c
    - condition: "(coro->context[STACK_PTR] >= (uintptr_t)coro->stack &&\n           coro->context[STACK_PTR]
        <=\n               (uintptr_t)(coro->stack + CORO_STACK_SIZE))"
      pos:
        line_end: 347
        line_start: 345
        source_file: /src/lwan/src/lib/lwan-coro.c
    constantsTouched: []
    func_position:
      end: 354
      start: 341
    functionDepth: 1
    functionLinenumber: 341
    functionLinenumberEnd: 354
    functionName: coro_resume
    functionSourceFile: /src/lwan/src/lib/lwan-coro.c
    functionUses: 0
    functionsReached:
    - coro_swapcontext
    - assert
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE coro_resume(struct coro *coro)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-coro.c:358,1
    - Dst: coro_resume
      Src: /src/lwan/src/lib/lwan-coro.c:361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - coro
    - value
    argTypes:
    - struct coro*
    - int64_t
    assertStmts:
    - condition: (coro)
      pos:
        line_end: 357
        line_start: 357
        source_file: /src/lwan/src/lib/lwan-coro.c
    constantsTouched: []
    func_position:
      end: 362
      start: 356
    functionDepth: 2
    functionLinenumber: 356
    functionLinenumberEnd: 362
    functionName: coro_resume_value
    functionSourceFile: /src/lwan/src/lib/lwan-coro.c
    functionUses: 2
    functionsReached:
    - coro_resume
    - assert
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE coro_resume_value(struct coro *coro, int64_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-coro.c:366,1
    - Dst: coro_swapcontext
      Src: /src/lwan/src/lib/lwan-coro.c:369,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - coro
    - value
    argTypes:
    - struct coro*
    - int64_t
    assertStmts:
    - condition: (coro)
      pos:
        line_end: 365
        line_start: 365
        source_file: /src/lwan/src/lib/lwan-coro.c
    constantsTouched: []
    func_position:
      end: 372
      start: 364
    functionDepth: 1
    functionLinenumber: 364
    functionLinenumberEnd: 372
    functionName: coro_yield
    functionSourceFile: /src/lwan/src/lib/lwan-coro.c
    functionUses: 17
    functionsReached:
    - coro_swapcontext
    - assert
    linkageType: ''
    returnType: int64_t
    signature: int64_t coro_yield(struct coro *coro, int64_t value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-coro.c:376,1
    - Dst: coro_deferred_run
      Src: /src/lwan/src/lib/lwan-coro.c:378,1
    - Dst: arena_reset
      Src: /src/lwan/src/lib/lwan-coro.c:379,1
    - Dst: coro_defer_array_reset
      Src: /src/lwan/src/lib/lwan-coro.c:380,1
    - Dst: VALGRIND_STACK_DEREGISTER
      Src: /src/lwan/src/lib/lwan-coro.c:383,1
    - Dst: munmap
      Src: /src/lwan/src/lib/lwan-coro.c:387,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-coro.c:388,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-coro.c:391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - coro
    argTypes:
    - struct coro*
    assertStmts:
    - condition: (coro)
      pos:
        line_end: 375
        line_start: 375
        source_file: /src/lwan/src/lib/lwan-coro.c
    - condition: (result == 0)
      pos:
        line_end: 387
        line_start: 387
        source_file: /src/lwan/src/lib/lwan-coro.c
    constantsTouched: []
    func_position:
      end: 392
      start: 374
    functionDepth: 1
    functionLinenumber: 374
    functionLinenumberEnd: 392
    functionName: coro_free
    functionSourceFile: /src/lwan/src/lib/lwan-coro.c
    functionUses: 1
    functionsReached:
    - coro_defer_array_reset
    - munmap
    - free
    - VALGRIND_STACK_DEREGISTER
    - coro_deferred_run
    - arena_reset
    - assert
    linkageType: ''
    returnType: void
    signature: void coro_free(struct coro *coro)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 396
    functionName: disarmed_defer
    functionSourceFile: /src/lwan/src/lib/lwan-coro.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void disarmed_defer(void *data __attribute__((unused)))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: coro_defer_array_len
      Src: /src/lwan/src/lib/lwan-coro.c:401,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-coro.c:403,1
    - Dst: coro_defer_array_get_elem
      Src: /src/lwan/src/lib/lwan-coro.c:405,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - coro
    - defer
    argTypes:
    - struct coro*
    - struct coro_defer*
    assertStmts:
    - condition: (num_defers != 0 && defer != NULL)
      pos:
        line_end: 402
        line_start: 402
        source_file: /src/lwan/src/lib/lwan-coro.c
    constantsTouched: []
    func_position:
      end: 415
      start: 398
    functionDepth: 0
    functionLinenumber: 398
    functionLinenumberEnd: 415
    functionName: coro_defer_disarm_internal
    functionSourceFile: /src/lwan/src/lib/lwan-coro.c
    functionUses: 0
    functionsReached:
    - coro_defer_array_len
    - assert
    - coro_defer_array_get_elem
    linkageType: ''
    returnType: void
    signature: "void coro_defer_disarm_internal(struct coro *coro,\n                                       struct
      coro_defer *defer)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-coro.c:419,1
    - Dst: coro_defer_disarm_internal
      Src: /src/lwan/src/lib/lwan-coro.c:421,1
    - Dst: coro_defer_array_get_elem
      Src: /src/lwan/src/lib/lwan-coro.c:422,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - coro
    - d
    argTypes:
    - struct coro*
    - coro_deferred
    assertStmts:
    - condition: (d >= 0)
      pos:
        line_end: 418
        line_start: 418
        source_file: /src/lwan/src/lib/lwan-coro.c
    constantsTouched: []
    func_position:
      end: 423
      start: 417
    functionDepth: 1
    functionLinenumber: 417
    functionLinenumberEnd: 423
    functionName: coro_defer_disarm
    functionSourceFile: /src/lwan/src/lib/lwan-coro.c
    functionUses: 1
    functionsReached:
    - coro_defer_disarm_internal
    - assert
    - coro_defer_array_get_elem
    linkageType: ''
    returnType: void
    signature: void coro_defer_disarm(struct coro *coro, coro_deferred d)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-coro.c:427,1
    - Dst: coro_defer_array_get_elem
      Src: /src/lwan/src/lib/lwan-coro.c:429,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-coro.c:430,1
    - Dst: struct coro_defer*::two::func
      Src: /src/lwan/src/lib/lwan-coro.c:433,1
    - Dst: struct coro_defer*::one::func
      Src: /src/lwan/src/lib/lwan-coro.c:435,1
    - Dst: coro_defer_disarm_internal
      Src: /src/lwan/src/lib/lwan-coro.c:437,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - coro
    - d
    argTypes:
    - struct coro*
    - coro_deferred
    assertStmts:
    - condition: (d >= 0)
      pos:
        line_end: 426
        line_start: 426
        source_file: /src/lwan/src/lib/lwan-coro.c
    - condition: (coro)
      pos:
        line_end: 429
        line_start: 429
        source_file: /src/lwan/src/lib/lwan-coro.c
    constantsTouched: []
    func_position:
      end: 438
      start: 425
    functionDepth: 1
    functionLinenumber: 425
    functionLinenumberEnd: 438
    functionName: coro_defer_fire_and_disarm
    functionSourceFile: /src/lwan/src/lib/lwan-coro.c
    functionUses: 1
    functionsReached:
    - coro_defer_array_get_elem
    - struct coro_defer*::two::func
    - coro_defer_disarm_internal
    - assert
    - struct coro_defer*::one::func
    linkageType: ''
    returnType: void
    signature: void coro_defer_fire_and_disarm(struct coro *coro, coro_deferred d)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: coro_defer_array_append
      Src: /src/lwan/src/lib/lwan-coro.c:443,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-coro.c:445,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-coro.c:446,1
    - Dst: coro_defer_array_get_elem_index
      Src: /src/lwan/src/lib/lwan-coro.c:455,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - coro
    - func
    - data
    argTypes:
    - struct coro*
    - defer1_func
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 440
    functionDepth: 1
    functionLinenumber: 440
    functionLinenumberEnd: 456
    functionName: coro_deferred::coro_defer
    functionSourceFile: /src/lwan/src/lib/lwan-coro.c
    functionUses: 0
    functionsReached:
    - lwan_log_error
    - coro_defer_array_get_elem_index
    - coro_defer_array_append
    - UNLIKELY
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: 'ALWAYS_INLINE coro_deferred

      coro_defer(struct coro *coro, defer1_func func, void *data)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: coro_defer_array_append
      Src: /src/lwan/src/lib/lwan-coro.c:461,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-coro.c:463,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-coro.c:464,1
    - Dst: coro_defer_array_get_elem_index
      Src: /src/lwan/src/lib/lwan-coro.c:474,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - coro
    - func
    - data1
    - data2
    argTypes:
    - struct coro*
    - defer2_func
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 475
      start: 458
    functionDepth: 1
    functionLinenumber: 458
    functionLinenumberEnd: 475
    functionName: coro_deferred::coro_defer2
    functionSourceFile: /src/lwan/src/lib/lwan-coro.c
    functionUses: 0
    functionsReached:
    - lwan_log_error
    - coro_defer_array_get_elem_index
    - coro_defer_array_append
    - UNLIKELY
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: 'ALWAYS_INLINE coro_deferred

      coro_defer2(struct coro *coro, defer2_func func, void *data1, void *data2)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-coro.c:481,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-coro.c:482,1
    - Dst: coro_defer
      Src: /src/lwan/src/lib/lwan-coro.c:483,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - coro
    - size
    argTypes:
    - struct coro*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 477
    functionDepth: 0
    functionLinenumber: 477
    functionLinenumberEnd: 486
    functionName: coro_malloc_full
    functionSourceFile: /src/lwan/src/lib/lwan-coro.c
    functionUses: 1
    functionsReached:
    - malloc
    - coro_defer
    - LIKELY
    linkageType: ''
    returnType: void
    signature: "void *coro_malloc_full(struct coro *coro,\n                       size_t
      size,\n                       void (*destroy_func)(void *data))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arena_alloc
      Src: /src/lwan/src/lib/lwan-coro.c:490,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - coro
    - size
    argTypes:
    - struct coro*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 488
    functionDepth: 1
    functionLinenumber: 488
    functionLinenumberEnd: 491
    functionName: coro_malloc
    functionSourceFile: /src/lwan/src/lib/lwan-coro.c
    functionUses: 1
    functionsReached:
    - arena_alloc
    linkageType: ''
    returnType: void
    signature: void *coro_malloc(struct coro *coro, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strnlen
      Src: /src/lwan/src/lib/lwan-coro.c:495,1
    - Dst: coro_memdup
      Src: /src/lwan/src/lib/lwan-coro.c:496,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-coro.c:498,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - coro
    - str
    - max_len
    argTypes:
    - struct coro*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 493
    functionDepth: 1
    functionLinenumber: 493
    functionLinenumberEnd: 502
    functionName: coro_strndup
    functionSourceFile: /src/lwan/src/lib/lwan-coro.c
    functionUses: 0
    functionsReached:
    - coro_memdup
    - strnlen
    - LIKELY
    linkageType: ''
    returnType: char
    signature: char *coro_strndup(struct coro *coro, const char *str, size_t max_len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: coro_memdup
      Src: /src/lwan/src/lib/lwan-coro.c:506,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-coro.c:506,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - coro
    - str
    argTypes:
    - struct coro*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 504
    functionDepth: 1
    functionLinenumber: 504
    functionLinenumberEnd: 507
    functionName: coro_strdup
    functionSourceFile: /src/lwan/src/lib/lwan-coro.c
    functionUses: 4
    functionsReached:
    - strlen
    - coro_memdup
    linkageType: ''
    returnType: char
    signature: char *coro_strdup(struct coro *coro, const char *str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/lwan/src/lib/lwan-coro.c:515,1
    - Dst: vasprintf
      Src: /src/lwan/src/lib/lwan-coro.c:516,1
    - Dst: va_end
      Src: /src/lwan/src/lib/lwan-coro.c:517,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-coro.c:519,1
    - Dst: coro_defer
      Src: /src/lwan/src/lib/lwan-coro.c:522,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - coro
    - fmt
    argTypes:
    - struct coro*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 509
    functionDepth: 0
    functionLinenumber: 509
    functionLinenumberEnd: 524
    functionName: coro_printf
    functionSourceFile: /src/lwan/src/lib/lwan-coro.c
    functionUses: 0
    functionsReached:
    - va_end
    - va_start
    - vasprintf
    - coro_defer
    - UNLIKELY
    linkageType: ''
    returnType: char
    signature: char *coro_printf(struct coro *coro, const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: coro_malloc
      Src: /src/lwan/src/lib/lwan-coro.c:528,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-coro.c:530,1
    - Dst: memcpy
      Src: /src/lwan/src/lib/lwan-coro.c:530,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - coro
    - src
    - len
    argTypes:
    - struct coro*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 526
    functionDepth: 2
    functionLinenumber: 526
    functionLinenumberEnd: 531
    functionName: coro_memdup
    functionSourceFile: /src/lwan/src/lib/lwan-coro.c
    functionUses: 6
    functionsReached:
    - memcpy
    - coro_malloc
    - LIKELY
    linkageType: ''
    returnType: void
    signature: void *coro_memdup(struct coro *coro, const void *src, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct list_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 45
    functionName: list_poison_node
    functionSourceFile: /src/lwan/src/lib/list.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void list_poison_node(struct list_node *node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/list.c:49,1
    - Dst: assert
      Src: /src/lwan/src/lib/list.c:50,1
    - Dst: assert
      Src: /src/lwan/src/lib/list.c:51,1
    - Dst: assert
      Src: /src/lwan/src/lib/list.c:52,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct list_node*
    assertStmts:
    - condition: (poison_node_1.next == poison_node_2.prev)
      pos:
        line_end: 48
        line_start: 48
        source_file: /src/lwan/src/lib/list.c
    - condition: (poison_node_1.prev == (void *)0xbebacafe)
      pos:
        line_end: 51
        line_start: 51
        source_file: /src/lwan/src/lib/list.c
    - condition: (poison_node_1.next == (void *)0xdeadbeef)
      pos:
        line_end: 50
        line_start: 50
        source_file: /src/lwan/src/lib/list.c
    - condition: (poison_node_1.prev == poison_node_2.next)
      pos:
        line_end: 49
        line_start: 49
        source_file: /src/lwan/src/lib/list.c
    constantsTouched: []
    func_position:
      end: 56
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 56
    functionName: is_poisoned
    functionSourceFile: /src/lwan/src/lib/list.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: bool
    signature: bool is_poisoned(const struct list_node *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/lwan/src/lib/list.c:64,1
    - Dst: abort
      Src: /src/lwan/src/lib/list.c:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - abortstr
    - head
    - node
    - count
    argTypes:
    - char*
    - struct list_node*
    - struct list_node*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 69
    functionName: corrupt
    functionSourceFile: /src/lwan/src/lib/list.c
    functionUses: 0
    functionsReached:
    - fprintf
    - abort
    linkageType: ''
    returnType: void
    signature: "void *corrupt(const char *abortstr,\n                     const struct
      list_node *head,\n                     const struct list_node *node,\n                     unsigned
      int count)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: is_poisoned
      Src: /src/lwan/src/lib/list.c:79,1
    - Dst: corrupt
      Src: /src/lwan/src/lib/list.c:80,1
    - Dst: corrupt
      Src: /src/lwan/src/lib/list.c:85,1
    - Dst: corrupt
      Src: /src/lwan/src/lib/list.c:89,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - node
    - abortstr
    argTypes:
    - struct list_node*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 95
    functionName: list_check_node
    functionSourceFile: /src/lwan/src/lib/list.c
    functionUses: 0
    functionsReached:
    - corrupt
    - is_poisoned
    linkageType: ''
    returnType: struct list_node
    signature: "struct list_node *list_check_node(const struct list_node *node,\n
      \                                 const char *abortstr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_check_node
      Src: /src/lwan/src/lib/list.c:99,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - h
    - abortstr
    argTypes:
    - struct list_head*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 97
    functionDepth: 2
    functionLinenumber: 97
    functionLinenumberEnd: 102
    functionName: list_check
    functionSourceFile: /src/lwan/src/lib/list.c
    functionUses: 0
    functionsReached:
    - list_check_node
    linkageType: ''
    returnType: struct list_head
    signature: struct list_head *list_check(const struct list_head *h, const char
      *abortstr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: list_head_init
      Src: /src/lwan/src/lib/lwan-pubsub.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lwan_pubsub_queue_init
    argTypes:
    - void
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 66
    functionName: DEFINE_RING_BUFFER_TYPE
    functionSourceFile: /src/lwan/src/lib/lwan-pubsub.c
    functionUses: 0
    functionsReached:
    - list_head_init
    linkageType: ''
    returnType: void
    signature: "void DEFINE_RING_BUFFER_TYPE(lwan_pubsub_msg_ref_ring, struct lwan_pubsub_msg
      *, 16)\n\nstruct lwan_pubsub_msg_ref {\n    struct list_node ref;\n    struct
      lwan_pubsub_msg_ref_ring ring;\n};\n\nstruct lwan_pubsub_subscriber {\n    struct
      list_node subscriber;\n\n    pthread_mutex_t lock;\n    struct list_head msg_refs;\n\n
      \   int event_fd[2];\n};\n\nstatic void lwan_pubsub_queue_init(struct lwan_pubsub_subscriber
      *sub)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: list_tail
      Src: /src/lwan/src/lib/lwan-pubsub.c:73,1
    - Dst: lwan_pubsub_msg_ref_ring_try_put
      Src: /src/lwan/src/lib/lwan-pubsub.c:80,1
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-pubsub.c:84,1
    - Dst: lwan_pubsub_msg_ref_ring_init
      Src: /src/lwan/src/lib/lwan-pubsub.c:88,1
    - Dst: lwan_pubsub_msg_ref_ring_put
      Src: /src/lwan/src/lib/lwan-pubsub.c:89,1
    - Dst: list_add_tail
      Src: /src/lwan/src/lib/lwan-pubsub.c:90,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - sub
    - msg
    argTypes:
    - struct lwan_pubsub_subscriber*
    - struct lwan_pubsub_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 68
    functionDepth: 2
    functionLinenumber: 68
    functionLinenumberEnd: 93
    functionName: lwan_pubsub_queue_put
    functionSourceFile: /src/lwan/src/lib/lwan-pubsub.c
    functionUses: 0
    functionsReached:
    - malloc
    - lwan_pubsub_msg_ref_ring_init
    - list_add_tail
    - list_tail
    - lwan_pubsub_msg_ref_ring_try_put
    - lwan_pubsub_msg_ref_ring_put
    linkageType: ''
    returnType: bool
    signature: "bool lwan_pubsub_queue_put(struct lwan_pubsub_subscriber *sub,\n                                  const
      struct lwan_pubsub_msg *msg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: list_for_each_safe
      Src: /src/lwan/src/lib/lwan-pubsub.c:100,1
    - Dst: lwan_pubsub_msg_ref_ring_empty
      Src: /src/lwan/src/lib/lwan-pubsub.c:103,1
    - Dst: list_del
      Src: /src/lwan/src/lib/lwan-pubsub.c:104,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-pubsub.c:105,1
    - Dst: lwan_pubsub_msg_ref_ring_get
      Src: /src/lwan/src/lib/lwan-pubsub.c:109,1
    - Dst: container_of
      Src: /src/lwan/src/lib/lwan-pubsub.c:129,1
    - Dst: lwan_pubsub_msg_ref_ring_empty
      Src: /src/lwan/src/lib/lwan-pubsub.c:130,1
    - Dst: lwan_pubsub_msg_ref_ring_get
      Src: /src/lwan/src/lib/lwan-pubsub.c:133,1
    - Dst: lwan_pubsub_msg_ref_ring_put
      Src: /src/lwan/src/lib/lwan-pubsub.c:134,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - sub
    argTypes:
    - struct lwan_pubsub_subscriber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 95
    functionDepth: 2
    functionLinenumber: 95
    functionLinenumberEnd: 142
    functionName: lwan_pubsub_queue_get
    functionSourceFile: /src/lwan/src/lib/lwan-pubsub.c
    functionUses: 0
    functionsReached:
    - list_for_each_safe
    - container_of
    - lwan_pubsub_msg_ref_ring_empty
    - free
    - list_del
    - lwan_pubsub_msg_ref_ring_get
    - lwan_pubsub_msg_ref_ring_put
    linkageType: ''
    returnType: struct lwan_pubsub_msg
    signature: 'struct lwan_pubsub_msg *

      lwan_pubsub_queue_get(struct lwan_pubsub_subscriber *sub)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/lwan/src/lib/lwan-pubsub.c:150,1
    - Dst: list_head_init
      Src: /src/lwan/src/lib/lwan-pubsub.c:155,1
    - Dst: pthread_rwlock_init
      Src: /src/lwan/src/lib/lwan-pubsub.c:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 159
    functionName: lwan_pubsub_new_topic
    functionSourceFile: /src/lwan/src/lib/lwan-pubsub.c
    functionUses: 1
    functionsReached:
    - pthread_rwlock_init
    - calloc
    - list_head_init
    linkageType: ''
    returnType: struct lwan_pubsub_topic
    signature: struct lwan_pubsub_topic *lwan_pubsub_new_topic(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_rwlock_wrlock
      Src: /src/lwan/src/lib/lwan-pubsub.c:165,1
    - Dst: list_for_each_safe
      Src: /src/lwan/src/lib/lwan-pubsub.c:166,1
    - Dst: lwan_pubsub_unsubscribe_internal
      Src: /src/lwan/src/lib/lwan-pubsub.c:167,1
    - Dst: pthread_rwlock_unlock
      Src: /src/lwan/src/lib/lwan-pubsub.c:168,1
    - Dst: pthread_rwlock_destroy
      Src: /src/lwan/src/lib/lwan-pubsub.c:170,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-pubsub.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - topic
    argTypes:
    - struct lwan_pubsub_topic*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 173
    functionName: lwan_pubsub_free_topic
    functionSourceFile: /src/lwan/src/lib/lwan-pubsub.c
    functionUses: 1
    functionsReached:
    - pthread_rwlock_destroy
    - list_for_each_safe
    - free
    - lwan_pubsub_unsubscribe_internal
    - pthread_rwlock_wrlock
    - pthread_rwlock_unlock
    linkageType: ''
    returnType: void
    signature: void lwan_pubsub_free_topic(struct lwan_pubsub_topic *topic)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ATOMIC_DEC
      Src: /src/lwan/src/lib/lwan-pubsub.c:177,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-pubsub.c:178,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-pubsub.c:179,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct lwan_pubsub_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 175
    functionDepth: 1
    functionLinenumber: 175
    functionLinenumberEnd: 181
    functionName: lwan_pubsub_msg_done
    functionSourceFile: /src/lwan/src/lib/lwan-pubsub.c
    functionUses: 1
    functionsReached:
    - ATOMIC_DEC
    - free
    linkageType: ''
    returnType: void
    signature: void lwan_pubsub_msg_done(struct lwan_pubsub_msg *msg)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-pubsub.c:186,1
    - Dst: pthread_rwlock_rdlock
      Src: /src/lwan/src/lib/lwan-pubsub.c:198,1
    - Dst: list_for_each
      Src: /src/lwan/src/lib/lwan-pubsub.c:199,1
    - Dst: ATOMIC_INC
      Src: /src/lwan/src/lib/lwan-pubsub.c:200,1
    - Dst: pthread_mutex_lock
      Src: /src/lwan/src/lib/lwan-pubsub.c:203,1
    - Dst: lwan_pubsub_queue_put
      Src: /src/lwan/src/lib/lwan-pubsub.c:204,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan-pubsub.c:205,1
    - Dst: ATOMIC_DEC
      Src: /src/lwan/src/lib/lwan-pubsub.c:206,1
    - Dst: pthread_mutex_unlock
      Src: /src/lwan/src/lib/lwan-pubsub.c:208,1
    - Dst: write
      Src: /src/lwan/src/lib/lwan-pubsub.c:215,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-pubsub.c:217,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-pubsub.c:220,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-pubsub.c:223,1
    - Dst: pthread_rwlock_unlock
      Src: /src/lwan/src/lib/lwan-pubsub.c:228,1
    - Dst: lwan_pubsub_msg_done
      Src: /src/lwan/src/lib/lwan-pubsub.c:230,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 2
    argNames:
    - topic
    - value
    argTypes:
    - struct lwan_pubsub_topic*
    - struct lwan_value
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 183
    functionDepth: 3
    functionLinenumber: 183
    functionLinenumberEnd: 233
    functionName: lwan_pubsub_publish_value
    functionSourceFile: /src/lwan/src/lib/lwan-pubsub.c
    functionUses: 0
    functionsReached:
    - pthread_rwlock_unlock
    - write
    - ATOMIC_INC
    - LIKELY
    - pthread_mutex_lock
    - lwan_log_warning
    - ATOMIC_DEC
    - pthread_rwlock_rdlock
    - lwan_log_perror
    - malloc
    - pthread_mutex_unlock
    - lwan_pubsub_msg_done
    - lwan_pubsub_queue_put
    - UNLIKELY
    - list_for_each
    linkageType: ''
    returnType: bool
    signature: "bool lwan_pubsub_publish_value(struct lwan_pubsub_topic *topic,\n
      \                                     const struct lwan_value value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-pubsub.c:237,1
    - Dst: memcpy
      Src: /src/lwan/src/lib/lwan-pubsub.c:239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - src
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 240
    functionName: my_memdup
    functionSourceFile: /src/lwan/src/lib/lwan-pubsub.c
    functionUses: 0
    functionsReached:
    - malloc
    - memcpy
    linkageType: ''
    returnType: void
    signature: void *my_memdup(const void *src, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: my_memdup
      Src: /src/lwan/src/lib/lwan-pubsub.c:246,1
    - Dst: lwan_pubsub_publish_value
      Src: /src/lwan/src/lib/lwan-pubsub.c:251,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - topic
    - contents
    - len
    argTypes:
    - struct lwan_pubsub_topic*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 242
    functionDepth: 4
    functionLinenumber: 242
    functionLinenumberEnd: 252
    functionName: lwan_pubsub_publish
    functionSourceFile: /src/lwan/src/lib/lwan-pubsub.c
    functionUses: 1
    functionsReached:
    - lwan_pubsub_publish_value
    - my_memdup
    linkageType: ''
    returnType: bool
    signature: "bool lwan_pubsub_publish(struct lwan_pubsub_topic *topic,\n                         const
      void *contents,\n                         size_t len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/lwan/src/lib/lwan-pubsub.c:262,1
    - Dst: vasprintf
      Src: /src/lwan/src/lib/lwan-pubsub.c:263,1
    - Dst: va_end
      Src: /src/lwan/src/lib/lwan-pubsub.c:264,1
    - Dst: lwan_pubsub_publish_value
      Src: /src/lwan/src/lib/lwan-pubsub.c:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - topic
    - format
    argTypes:
    - struct lwan_pubsub_topic*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 254
    functionDepth: 4
    functionLinenumber: 254
    functionLinenumberEnd: 271
    functionName: lwan_pubsub_publishf
    functionSourceFile: /src/lwan/src/lib/lwan-pubsub.c
    functionUses: 0
    functionsReached:
    - va_end
    - lwan_pubsub_publish_value
    - va_start
    - vasprintf
    linkageType: ''
    returnType: bool
    signature: "bool lwan_pubsub_publishf(struct lwan_pubsub_topic *topic,\n                          const
      char *format,\n                          ...)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/lwan/src/lib/lwan-pubsub.c:276,1
    - Dst: pthread_mutex_init
      Src: /src/lwan/src/lib/lwan-pubsub.c:284,1
    - Dst: lwan_pubsub_queue_init
      Src: /src/lwan/src/lib/lwan-pubsub.c:285,1
    - Dst: pthread_rwlock_wrlock
      Src: /src/lwan/src/lib/lwan-pubsub.c:287,1
    - Dst: list_add
      Src: /src/lwan/src/lib/lwan-pubsub.c:288,1
    - Dst: pthread_rwlock_unlock
      Src: /src/lwan/src/lib/lwan-pubsub.c:289,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - topic
    argTypes:
    - struct lwan_pubsub_topic*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 273
    functionDepth: 2
    functionLinenumber: 273
    functionLinenumberEnd: 292
    functionName: lwan_pubsub_subscribe
    functionSourceFile: /src/lwan/src/lib/lwan-pubsub.c
    functionUses: 0
    functionsReached:
    - pthread_rwlock_unlock
    - calloc
    - lwan_pubsub_queue_init
    - pthread_rwlock_wrlock
    - pthread_mutex_init
    - list_add
    linkageType: ''
    returnType: struct lwan_pubsub_subscriber
    signature: 'struct lwan_pubsub_subscriber *

      lwan_pubsub_subscribe(struct lwan_pubsub_topic *topic)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_lock
      Src: /src/lwan/src/lib/lwan-pubsub.c:298,1
    - Dst: lwan_pubsub_queue_get
      Src: /src/lwan/src/lib/lwan-pubsub.c:299,1
    - Dst: pthread_mutex_unlock
      Src: /src/lwan/src/lib/lwan-pubsub.c:300,1
    - Dst: LWAN_NO_DISCARD
      Src: /src/lwan/src/lib/lwan-pubsub.c:304,1
    - Dst: read
      Src: /src/lwan/src/lib/lwan-pubsub.c:304,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - sub
    argTypes:
    - struct lwan_pubsub_subscriber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 294
    functionDepth: 3
    functionLinenumber: 294
    functionLinenumberEnd: 308
    functionName: lwan_pubsub_consume
    functionSourceFile: /src/lwan/src/lib/lwan-pubsub.c
    functionUses: 0
    functionsReached:
    - read
    - LWAN_NO_DISCARD
    - pthread_mutex_lock
    - pthread_mutex_unlock
    - lwan_pubsub_queue_get
    linkageType: ''
    returnType: struct lwan_pubsub_msg
    signature: struct lwan_pubsub_msg *lwan_pubsub_consume(struct lwan_pubsub_subscriber
      *sub)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pthread_rwlock_wrlock
      Src: /src/lwan/src/lib/lwan-pubsub.c:317,1
    - Dst: list_del
      Src: /src/lwan/src/lib/lwan-pubsub.c:318,1
    - Dst: pthread_rwlock_unlock
      Src: /src/lwan/src/lib/lwan-pubsub.c:320,1
    - Dst: pthread_mutex_lock
      Src: /src/lwan/src/lib/lwan-pubsub.c:322,1
    - Dst: lwan_pubsub_queue_get
      Src: /src/lwan/src/lib/lwan-pubsub.c:323,1
    - Dst: lwan_pubsub_msg_done
      Src: /src/lwan/src/lib/lwan-pubsub.c:324,1
    - Dst: pthread_mutex_unlock
      Src: /src/lwan/src/lib/lwan-pubsub.c:325,1
    - Dst: pthread_mutex_destroy
      Src: /src/lwan/src/lib/lwan-pubsub.c:327,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-pubsub.c:330,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-pubsub.c:331,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-pubsub.c:332,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-pubsub.c:333,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-pubsub.c:336,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - topic
    - sub
    - take_topic_lock
    argTypes:
    - struct lwan_pubsub_topic*
    - struct lwan_pubsub_subscriber*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 310
    functionDepth: 3
    functionLinenumber: 310
    functionLinenumberEnd: 337
    functionName: lwan_pubsub_unsubscribe_internal
    functionSourceFile: /src/lwan/src/lib/lwan-pubsub.c
    functionUses: 1
    functionsReached:
    - free
    - list_del
    - pthread_mutex_destroy
    - close
    - LIKELY
    - pthread_mutex_lock
    - pthread_rwlock_wrlock
    - pthread_mutex_unlock
    - lwan_pubsub_msg_done
    - pthread_rwlock_unlock
    - lwan_pubsub_queue_get
    linkageType: ''
    returnType: void
    signature: "void lwan_pubsub_unsubscribe_internal(struct lwan_pubsub_topic *topic,\n
      \                                            struct lwan_pubsub_subscriber *sub,\n
      \                                            bool take_topic_lock)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_pubsub_unsubscribe_internal
      Src: /src/lwan/src/lib/lwan-pubsub.c:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - topic
    - sub
    argTypes:
    - struct lwan_pubsub_topic*
    - struct lwan_pubsub_subscriber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 339
    functionDepth: 4
    functionLinenumber: 339
    functionLinenumberEnd: 343
    functionName: lwan_pubsub_unsubscribe
    functionSourceFile: /src/lwan/src/lib/lwan-pubsub.c
    functionUses: 1
    functionsReached:
    - lwan_pubsub_unsubscribe_internal
    linkageType: ''
    returnType: void
    signature: "void lwan_pubsub_unsubscribe(struct lwan_pubsub_topic *topic,\n                             struct
      lwan_pubsub_subscriber *sub)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct lwan_pubsub_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 348
    functionName: lwan_pubsub_msg_value
    functionSourceFile: /src/lwan/src/lib/lwan-pubsub.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct lwan_value
    signature: struct lwan_value *lwan_pubsub_msg_value(const struct lwan_pubsub_msg
      *msg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: eventfd
      Src: /src/lwan/src/lib/lwan-pubsub.c:354,1
    - Dst: pipe2
      Src: /src/lwan/src/lib/lwan-pubsub.c:361,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - sub
    argTypes:
    - struct lwan_pubsub_subscriber*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 350
    functionDepth: 1
    functionLinenumber: 350
    functionLinenumberEnd: 368
    functionName: lwan_pubsub_get_notification_fd
    functionSourceFile: /src/lwan/src/lib/lwan-pubsub.c
    functionUses: 0
    functionsReached:
    - pipe2
    - eventfd
    linkageType: ''
    returnType: int
    signature: int lwan_pubsub_get_notification_fd(struct lwan_pubsub_subscriber *sub)
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/realpathat.c:47,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/realpathat.c:59,1
    - Dst: realpath
      Src: /src/lwan/src/lib/realpathat.c:60,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/realpathat.c:63,1
    - Dst: fstat
      Src: /src/lwan/src/lib/realpathat.c:63,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/realpathat.c:65,1
    - Dst: strdup
      Src: /src/lwan/src/lib/realpathat.c:66,1
    - Dst: strcpy
      Src: /src/lwan/src/lib/realpathat.c:67,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/realpathat.c:70,1
    - Dst: malloc
      Src: /src/lwan/src/lib/realpathat.c:71,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/realpathat.c:72,1
    - Dst: strcpy
      Src: /src/lwan/src/lib/realpathat.c:78,1
    - Dst: strlen
      Src: /src/lwan/src/lib/realpathat.c:79,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/realpathat.c:111,1
    - Dst: realloc
      Src: /src/lwan/src/lib/realpathat.c:124,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/realpathat.c:125,1
    - Dst: mempmove
      Src: /src/lwan/src/lib/realpathat.c:133,1
    - Dst: strncmp
      Src: /src/lwan/src/lib/realpathat.c:137,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/realpathat.c:142,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/realpathat.c:145,1
    - Dst: fstatat
      Src: /src/lwan/src/lib/realpathat.c:145,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/realpathat.c:148,1
    - Dst: S_ISLNK
      Src: /src/lwan/src/lib/realpathat.c:148,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/realpathat.c:152,1
    - Dst: readlinkat
      Src: /src/lwan/src/lib/realpathat.c:157,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/realpathat.c:158,1
    - Dst: strlen
      Src: /src/lwan/src/lib/realpathat.c:162,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/realpathat.c:163,1
    - Dst: memmove
      Src: /src/lwan/src/lib/realpathat.c:169,1
    - Dst: memcpy
      Src: /src/lwan/src/lib/realpathat.c:170,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/realpathat.c:178,1
    - Dst: S_ISDIR
      Src: /src/lwan/src/lib/realpathat.c:178,1
    - Dst: assert
      Src: /src/lwan/src/lib/realpathat.c:189,1
    - Dst: assert
      Src: /src/lwan/src/lib/realpathat.c:193,1
    - Dst: free
      Src: /src/lwan/src/lib/realpathat.c:195,1
    CyclomaticComplexity: 54
    EdgeCount: 54
    ICount: 116
    argCount: 5
    argNames:
    - dirfd
    - dirfdpath
    - name
    - resolved
    - st
    argTypes:
    - int
    - char*
    - char*
    - char*
    - struct stat*
    assertStmts:
    - condition: (resolved == NULL || resolved == rpath)
      pos:
        line_end: 192
        line_start: 192
        source_file: /src/lwan/src/lib/realpathat.c
    - condition: (resolved == NULL || resolved == rpath)
      pos:
        line_end: 188
        line_start: 188
        source_file: /src/lwan/src/lib/realpathat.c
    constantsTouched: []
    func_position:
      end: 197
      start: 37
    functionDepth: 1
    functionLinenumber: 37
    functionLinenumberEnd: 197
    functionName: realpathat2
    functionSourceFile: /src/lwan/src/lib/realpathat.c
    functionUses: 1
    functionsReached:
    - free
    - mempmove
    - readlinkat
    - assert
    - realloc
    - realpath
    - fstatat
    - LIKELY
    - memcpy
    - S_ISDIR
    - strdup
    - S_ISLNK
    - strncmp
    - memmove
    - strcpy
    - UNLIKELY
    - fstat
    - strlen
    - malloc
    linkageType: ''
    returnType: char
    signature: "char *\nrealpathat2(int dirfd, char *dirfdpath, const char *name,
      char *resolved,\n        struct stat *st)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: realpathat2
      Src: /src/lwan/src/lib/realpathat.c:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - dirfd
    - dirfdpath
    - name
    - resolved
    argTypes:
    - int
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 199
    functionDepth: 2
    functionLinenumber: 199
    functionLinenumberEnd: 204
    functionName: realpathat
    functionSourceFile: /src/lwan/src/lib/realpathat.c
    functionUses: 0
    functionsReached:
    - realpathat2
    linkageType: ''
    returnType: char
    signature: 'char *

      realpathat(int dirfd, char *dirfdpath, const char *name, char *resolved)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 3
    functionDepth: 0
    functionLinenumber: 3
    functionLinenumberEnd: 26
    functionName: FOR_EACH_HTTP_STATUS
    functionSourceFile: /src/lwan/src/lib/lwan-http-status.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOR_EACH_HTTP_STATUS(X)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/lwan/src/lib/lwan-job.c:60,1
    - Dst: pthread_cond_timedwait
      Src: /src/lwan/src/lib/lwan-job.c:63,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - had_job
    argTypes:
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 64
    functionName: timedwait
    functionSourceFile: /src/lwan/src/lib/lwan-job.c
    functionUses: 1
    functionsReached:
    - gettimeofday
    - pthread_cond_timedwait
    linkageType: ''
    returnType: void
    signature: void timedwait(bool had_job)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ioprio_set
      Src: /src/lwan/src/lib/lwan-job.c:71,1
    - Dst: IOPRIO_PRIO_VALUE
      Src: /src/lwan/src/lib/lwan-job.c:71,1
    - Dst: lwan_set_thread_name
      Src: /src/lwan/src/lib/lwan-job.c:73,1
    - Dst: pthread_mutex_lock
      Src: /src/lwan/src/lib/lwan-job.c:75,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-job.c:76,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-job.c:81,1
    - Dst: pthread_mutex_lock
      Src: /src/lwan/src/lib/lwan-job.c:81,1
    - Dst: list_for_each
      Src: /src/lwan/src/lib/lwan-job.c:84,1
    - Dst: struct job*::cb
      Src: /src/lwan/src/lib/lwan-job.c:85,1
    - Dst: pthread_mutex_unlock
      Src: /src/lwan/src/lib/lwan-job.c:87,1
    - Dst: timedwait
      Src: /src/lwan/src/lib/lwan-job.c:90,1
    - Dst: pthread_mutex_unlock
      Src: /src/lwan/src/lib/lwan-job.c:93,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-job.c:94,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 95
    functionName: lwan_job_thread_main_loop
    functionSourceFile: /src/lwan/src/lib/lwan-job.c
    functionUses: 0
    functionsReached:
    - ioprio_set
    - IOPRIO_PRIO_VALUE
    - lwan_log_critical
    - LIKELY
    - pthread_mutex_lock
    - struct job*::cb
    - pthread_mutex_unlock
    - lwan_set_thread_name
    - list_for_each
    - timedwait
    linkageType: ''
    returnType: void
    signature: void lwan_job_thread_main_loop(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-job.c:99,1
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan-job.c:101,1
    - Dst: list_head_init
      Src: /src/lwan/src/lib/lwan-job.c:103,1
    - Dst: pthread_self
      Src: /src/lwan/src/lib/lwan-job.c:105,1
    - Dst: pthread_setschedparam
      Src: /src/lwan/src/lib/lwan-job.c:112,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-job.c:113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (!running)
      pos:
        line_end: 98
        line_start: 98
        source_file: /src/lwan/src/lib/lwan-job.c
    constantsTouched: []
    func_position:
      end: 115
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 115
    functionName: lwan_job_thread_init
    functionSourceFile: /src/lwan/src/lib/lwan-job.c
    functionUses: 0
    functionsReached:
    - list_head_init
    - pthread_self
    - lwan_log_debug
    - assert
    - pthread_setschedparam
    - lwan_log_perror
    linkageType: ''
    returnType: void
    signature: void lwan_job_thread_init(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan-job.c:119,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-job.c:121,1
    - Dst: pthread_mutex_lock
      Src: /src/lwan/src/lib/lwan-job.c:121,1
    - Dst: list_for_each_safe
      Src: /src/lwan/src/lib/lwan-job.c:125,1
    - Dst: list_del
      Src: /src/lwan/src/lib/lwan-job.c:126,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-job.c:127,1
    - Dst: pthread_cond_signal
      Src: /src/lwan/src/lib/lwan-job.c:131,1
    - Dst: pthread_join
      Src: /src/lwan/src/lib/lwan-job.c:133,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-job.c:136,1
    - Dst: pthread_mutex_unlock
      Src: /src/lwan/src/lib/lwan-job.c:139,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 117
    functionDepth: 2
    functionLinenumber: 117
    functionLinenumberEnd: 141
    functionName: lwan_job_thread_shutdown
    functionSourceFile: /src/lwan/src/lib/lwan-job.c
    functionUses: 0
    functionsReached:
    - list_for_each_safe
    - free
    - list_del
    - LIKELY
    - lwan_log_debug
    - pthread_mutex_lock
    - pthread_cond_signal
    - pthread_join
    - lwan_log_perror
    - pthread_mutex_unlock
    linkageType: ''
    returnType: void
    signature: void lwan_job_thread_shutdown(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-job.c:145,1
    - Dst: calloc
      Src: /src/lwan/src/lib/lwan-job.c:147,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan-job.c:149,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-job.c:154,1
    - Dst: pthread_mutex_lock
      Src: /src/lwan/src/lib/lwan-job.c:154,1
    - Dst: list_add
      Src: /src/lwan/src/lib/lwan-job.c:155,1
    - Dst: pthread_mutex_unlock
      Src: /src/lwan/src/lib/lwan-job.c:156,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan-job.c:158,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-job.c:159,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts:
    - condition: (cb)
      pos:
        line_end: 144
        line_start: 144
        source_file: /src/lwan/src/lib/lwan-job.c
    constantsTouched: []
    func_position:
      end: 161
      start: 143
    functionDepth: 2
    functionLinenumber: 143
    functionLinenumberEnd: 161
    functionName: lwan_job_add
    functionSourceFile: /src/lwan/src/lib/lwan-job.c
    functionUses: 0
    functionsReached:
    - calloc
    - free
    - LIKELY
    - pthread_mutex_lock
    - lwan_log_critical_perror
    - lwan_log_warning
    - assert
    - pthread_mutex_unlock
    - list_add
    linkageType: ''
    returnType: void
    signature: void lwan_job_add(bool (*cb)(void *data), void *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-job.c:167,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-job.c:169,1
    - Dst: pthread_mutex_lock
      Src: /src/lwan/src/lib/lwan-job.c:169,1
    - Dst: list_for_each_safe
      Src: /src/lwan/src/lib/lwan-job.c:170,1
    - Dst: list_del
      Src: /src/lwan/src/lib/lwan-job.c:172,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-job.c:173,1
    - Dst: pthread_mutex_unlock
      Src: /src/lwan/src/lib/lwan-job.c:176,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts:
    - condition: (cb)
      pos:
        line_end: 166
        line_start: 166
        source_file: /src/lwan/src/lib/lwan-job.c
    constantsTouched: []
    func_position:
      end: 178
      start: 163
    functionDepth: 2
    functionLinenumber: 163
    functionLinenumberEnd: 178
    functionName: lwan_job_del
    functionSourceFile: /src/lwan/src/lib/lwan-job.c
    functionUses: 0
    functionsReached:
    - list_for_each_safe
    - free
    - list_del
    - LIKELY
    - pthread_mutex_lock
    - assert
    - pthread_mutex_unlock
    linkageType: ''
    returnType: void
    signature: void lwan_job_del(bool (*cb)(void *data), void *data)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: kqueue1
      Src: /src/lwan/src/lib/missing-epoll.c:40,1
    - Dst: kqueue
      Src: /src/lwan/src/lib/missing-epoll.c:42,1
    - Dst: fcntl
      Src: /src/lwan/src/lib/missing-epoll.c:47,1
    - Dst: fcntl
      Src: /src/lwan/src/lib/missing-epoll.c:51,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - flags
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 57
    functionName: epoll_create1
    functionSourceFile: /src/lwan/src/lib/missing-epoll.c
    functionUses: 1
    functionsReached:
    - kqueue1
    - fcntl
    - kqueue
    linkageType: ''
    returnType: int
    signature: int epoll_create1(int flags)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: EV_SET
      Src: /src/lwan/src/lib/missing-epoll.c:92,1
    - Dst: EV_SET
      Src: /src/lwan/src/lib/missing-epoll.c:97,1
    - Dst: kevent
      Src: /src/lwan/src/lib/missing-epoll.c:105,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 4
    argNames:
    - epfd
    - op
    - fd
    - event
    argTypes:
    - int
    - int
    - int
    - struct epoll_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 106
    functionName: epoll_ctl
    functionSourceFile: /src/lwan/src/lib/missing-epoll.c
    functionUses: 4
    functionsReached:
    - kevent
    - EV_SET
    linkageType: ''
    returnType: int
    signature: int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - t
    - ms
    argTypes:
    - struct timespec*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 117
    functionName: to_timespec
    functionSourceFile: /src/lwan/src/lib/missing-epoll.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct timespec
    signature: struct timespec *to_timespec(struct timespec *t, int ms)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ptr0
    - ptr1
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 124
    functionName: kevent_ident_cmp
    functionSourceFile: /src/lwan/src/lib/missing-epoll.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int kevent_ident_cmp(const void *ptr0, const void *ptr1)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: alloca
      Src: /src/lwan/src/lib/missing-epoll.c:129,1
    - Dst: LWAN_MIN
      Src: /src/lwan/src/lib/missing-epoll.c:129,1
    - Dst: kevent
      Src: /src/lwan/src/lib/missing-epoll.c:133,1
    - Dst: to_timespec
      Src: /src/lwan/src/lib/missing-epoll.c:133,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/missing-epoll.c:134,1
    - Dst: qsort
      Src: /src/lwan/src/lib/missing-epoll.c:138,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 4
    argNames:
    - epfd
    - events
    - maxevents
    - timeout
    argTypes:
    - int
    - struct epoll_event*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 170
    functionName: epoll_wait
    functionSourceFile: /src/lwan/src/lib/missing-epoll.c
    functionUses: 1
    functionsReached:
    - kevent
    - to_timespec
    - alloca
    - qsort
    - LWAN_MIN
    - UNLIKELY
    linkageType: ''
    returnType: int
    signature: int epoll_wait(int epfd, struct epoll_event *events, int maxevents,
      int timeout)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - src
    - len
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 57
    functionName: base64_validate
    functionSourceFile: /src/lwan/src/lib/base64.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool base64_validate(const unsigned char *src, size_t len)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: base64_encoded_len
      Src: /src/lwan/src/lib/base64.c:78,1
    - Dst: malloc
      Src: /src/lwan/src/lib/base64.c:82,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 3
    argNames:
    - src
    - len
    - out_len
    argTypes:
    - unsigned char*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 113
    functionName: base64_encode
    functionSourceFile: /src/lwan/src/lib/base64.c
    functionUses: 1
    functionsReached:
    - malloc
    - base64_encoded_len
    linkageType: ''
    returnType: unsigned char
    signature: 'unsigned char *

      base64_encode(const unsigned char *src, size_t len, size_t *out_len)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/lib/base64.c:142,1
    - Dst: free
      Src: /src/lwan/src/lib/base64.c:168,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 40
    argCount: 3
    argNames:
    - src
    - len
    - out_len
    argTypes:
    - unsigned char*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 179
    functionName: base64_decode
    functionSourceFile: /src/lwan/src/lib/base64.c
    functionUses: 1
    functionsReached:
    - malloc
    - free
    linkageType: ''
    returnType: unsigned char
    signature: 'unsigned char *

      base64_decode(const unsigned char *src, size_t len, size_t *out_len)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-time.c:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - str
    - max
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 38
    functionName: parse_2_digit_num_no_end_check
    functionSourceFile: /src/lwan/src/lib/lwan-time.c
    functionUses: 0
    functionsReached:
    - UNLIKELY
    linkageType: ''
    returnType: int
    signature: int parse_2_digit_num_no_end_check(const char *str, unsigned int max)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-time.c:43,1
    - Dst: parse_2_digit_num_no_end_check
      Src: /src/lwan/src/lib/lwan-time.c:45,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - str
    - end_chr
    - max
    argTypes:
    - char*
    - char
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 40
    functionDepth: 1
    functionLinenumber: 40
    functionLinenumberEnd: 46
    functionName: parse_2_digit_num
    functionSourceFile: /src/lwan/src/lib/lwan-time.c
    functionUses: 0
    functionsReached:
    - parse_2_digit_num_no_end_check
    - UNLIKELY
    linkageType: ''
    returnType: int
    signature: int parse_2_digit_num(const char *str, const char end_chr, unsigned
      int max)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:57,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:58,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:59,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:60,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:61,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:62,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:63,1
    - Dst: parse_2_digit_num
      Src: /src/lwan/src/lib/lwan-time.c:68,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-time.c:69,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:74,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:75,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:76,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:77,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:78,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:79,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:80,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:81,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:82,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:83,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:84,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:85,1
    - Dst: parse_2_digit_num_no_end_check
      Src: /src/lwan/src/lib/lwan-time.c:90,1
    - Dst: parse_2_digit_num_no_end_check
      Src: /src/lwan/src/lib/lwan-time.c:91,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-time.c:92,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-time.c:95,1
    - Dst: parse_2_digit_num
      Src: /src/lwan/src/lib/lwan-time.c:99,1
    - Dst: parse_2_digit_num
      Src: /src/lwan/src/lib/lwan-time.c:101,1
    - Dst: parse_2_digit_num
      Src: /src/lwan/src/lib/lwan-time.c:103,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:107,1
    - Dst: timegm
      Src: /src/lwan/src/lib/lwan-time.c:110,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-time.c:112,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 90
    argCount: 2
    argNames:
    - in
    - out
    argTypes:
    - char[]
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 119
    functionName: lwan_parse_rfc_time
    functionSourceFile: /src/lwan/src/lib/lwan-time.c
    functionUses: 0
    functionsReached:
    - STR4_INT
    - parse_2_digit_num_no_end_check
    - LIKELY
    - UNLIKELY
    - timegm
    - parse_2_digit_num
    linkageType: ''
    returnType: int
    signature: int lwan_parse_rfc_time(const char in[static 30], time_t *out)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:57,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:58,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:59,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:60,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:61,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:62,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:63,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 65
    functionName: STRING_SWITCH
    functionSourceFile: /src/lwan/src/lib/lwan-time.c
    functionUses: 0
    functionsReached:
    - STR4_INT
    linkageType: ''
    returnType: void
    signature: void STRING_SWITCH(str)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:74,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:75,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:76,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:77,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:78,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:79,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:80,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:81,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:82,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:83,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:84,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:85,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 87
    functionName: STRING_SWITCH
    functionSourceFile: /src/lwan/src/lib/lwan-time.c
    functionUses: 0
    functionsReached:
    - STR4_INT
    linkageType: ''
    returnType: void
    signature: void STRING_SWITCH(str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-time.c:107,1
    - Dst: timegm
      Src: /src/lwan/src/lib/lwan-time.c:110,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-time.c:112,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 118
    functionName: STRING_SWITCH
    functionSourceFile: /src/lwan/src/lib/lwan-time.c
    functionUses: 0
    functionsReached:
    - STR4_INT
    - timegm
    - LIKELY
    linkageType: ''
    returnType: void
    signature: void STRING_SWITCH(str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mempcpy
      Src: /src/lwan/src/lib/lwan-time.c:124,1
    - Dst: uint_to_string_2_digits
      Src: /src/lwan/src/lib/lwan-time.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - p
    - digits
    argTypes:
    - char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 125
    functionName: append_two_digits
    functionSourceFile: /src/lwan/src/lib/lwan-time.c
    functionUses: 0
    functionsReached:
    - uint_to_string_2_digits
    - mempcpy
    linkageType: ''
    returnType: char
    signature: 'char *

      append_two_digits(char *p, unsigned int digits)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-time.c:134,1
    - Dst: gmtime_r
      Src: /src/lwan/src/lib/lwan-time.c:134,1
    - Dst: mempcpy
      Src: /src/lwan/src/lib/lwan-time.c:137,1
    - Dst: append_two_digits
      Src: /src/lwan/src/lib/lwan-time.c:140,1
    - Dst: mempcpy
      Src: /src/lwan/src/lib/lwan-time.c:142,1
    - Dst: append_two_digits
      Src: /src/lwan/src/lib/lwan-time.c:145,1
    - Dst: append_two_digits
      Src: /src/lwan/src/lib/lwan-time.c:146,1
    - Dst: append_two_digits
      Src: /src/lwan/src/lib/lwan-time.c:150,1
    - Dst: append_two_digits
      Src: /src/lwan/src/lib/lwan-time.c:152,1
    - Dst: append_two_digits
      Src: /src/lwan/src/lib/lwan-time.c:154,1
    - Dst: memcpy
      Src: /src/lwan/src/lib/lwan-time.c:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 2
    argNames:
    - in
    - out
    argTypes:
    - time_t
    - char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 127
    functionDepth: 2
    functionLinenumber: 127
    functionLinenumberEnd: 159
    functionName: lwan_format_rfc_time
    functionSourceFile: /src/lwan/src/lib/lwan-time.c
    functionUses: 2
    functionsReached:
    - append_two_digits
    - mempcpy
    - memcpy
    - gmtime_r
    - UNLIKELY
    linkageType: ''
    returnType: int
    signature: int lwan_format_rfc_time(const time_t in, char out[static 30])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: can_use_colors
      Src: /src/lwan/src/lib/lwan-log.c:60,1
    - Dst: can_use_emojis
      Src: /src/lwan/src/lib/lwan-log.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct lwan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 62
    functionName: lwan_log_init
    functionSourceFile: /src/lwan/src/lib/lwan-log.c
    functionUses: 0
    functionsReached:
    - can_use_colors
    - can_use_emojis
    linkageType: ''
    returnType: void
    signature: void lwan_log_init(struct lwan *l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct lwan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 64
    functionName: lwan_log_shutdown
    functionSourceFile: /src/lwan/src/lib/lwan-log.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void lwan_log_shutdown(struct lwan *l __attribute__((unused)))
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: isatty
      Src: /src/lwan/src/lib/lwan-log.c:72,1
    - Dst: fileno
      Src: /src/lwan/src/lib/lwan-log.c:72,1
    - Dst: secure_getenv
      Src: /src/lwan/src/lib/lwan-log.c:79,1
    - Dst: secure_getenv
      Src: /src/lwan/src/lib/lwan-log.c:83,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-log.c:85,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-log.c:87,1
    - Dst: secure_getenv
      Src: /src/lwan/src/lib/lwan-log.c:91,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-log.c:92,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 96
    functionName: can_use_colors
    functionSourceFile: /src/lwan/src/lib/lwan-log.c
    functionUses: 1
    functionsReached:
    - fileno
    - secure_getenv
    - streq
    - isatty
    linkageType: ''
    returnType: bool
    signature: bool can_use_colors(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: can_use_colors
      Src: /src/lwan/src/lib/lwan-log.c:100,1
    - Dst: secure_getenv
      Src: /src/lwan/src/lib/lwan-log.c:103,1
    - Dst: strstr
      Src: /src/lwan/src/lib/lwan-log.c:107,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 98
    functionDepth: 2
    functionLinenumber: 98
    functionLinenumberEnd: 111
    functionName: can_use_emojis
    functionSourceFile: /src/lwan/src/lib/lwan-log.c
    functionUses: 1
    functionsReached:
    - strstr
    - secure_getenv
    - can_use_colors
    linkageType: ''
    returnType: bool
    signature: bool can_use_emojis(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum lwan_log_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 116
    functionName: log_index
    functionSourceFile: /src/lwan/src/lib/lwan-log.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int log_index(enum lwan_log_type type)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 119
    functionName: V
    functionSourceFile: /src/lwan/src/lib/lwan-log.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: V(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_index
      Src: /src/lwan/src/lib/lwan-log.c:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - type
    argTypes:
    - enum lwan_log_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 133
    functionName: start_color
    functionSourceFile: /src/lwan/src/lib/lwan-log.c
    functionUses: 0
    functionsReached:
    - log_index
    linkageType: ''
    returnType: struct lwan_value
    signature: struct lwan_value start_color(enum lwan_log_type type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: V
      Src: /src/lwan/src/lib/lwan-log.c:137,1
    - Dst: V
      Src: /src/lwan/src/lib/lwan-log.c:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 139
    functionName: end_color
    functionSourceFile: /src/lwan/src/lib/lwan-log.c
    functionUses: 0
    functionsReached:
    - V
    linkageType: ''
    returnType: struct lwan_value
    signature: struct lwan_value end_color(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strerror_r
      Src: /src/lwan/src/lib/lwan-log.c:145,1
    - Dst: strerror_r
      Src: /src/lwan/src/lib/lwan-log.c:147,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - error_number
    - buffer
    - len
    argTypes:
    - int
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 151
    functionName: strerror_thunk_r
    functionSourceFile: /src/lwan/src/lib/lwan-log.c
    functionUses: 0
    functionsReached:
    - strerror_r
    linkageType: ''
    returnType: char
    signature: char *strerror_thunk_r(int error_number, char *buffer, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: gettid
      Src: /src/lwan/src/lib/lwan-log.c:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 155
    functionName: LWAN_LAZY_THREAD_LOCAL
    functionSourceFile: /src/lwan/src/lib/lwan-log.c
    functionUses: 0
    functionsReached:
    - gettid
    linkageType: ''
    returnType: void
    signature: void LWAN_LAZY_THREAD_LOCAL(long, gettid_cached)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ATOMIC_INC
      Src: /src/lwan/src/lib/lwan-log.c:171,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/lib/lwan-log.c:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 172
    functionName: LWAN_LAZY_THREAD_LOCAL
    functionSourceFile: /src/lwan/src/lib/lwan-log.c
    functionUses: 0
    functionsReached:
    - N_ELEMENTS
    - ATOMIC_INC
    linkageType: ''
    returnType: void
    signature: void LWAN_LAZY_THREAD_LOCAL(const char *, get_thread_emoji)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fmt
    - ','
    - color
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 176
    functionName: FORMAT_WITH_COLOR
    functionSourceFile: /src/lwan/src/lib/lwan-log.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FORMAT_WITH_COLOR(fmt, color)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: start_color
      Src: /src/lwan/src/lib/lwan-log.c:254,1
    - Dst: end_color
      Src: /src/lwan/src/lib/lwan-log.c:255,1
    - Dst: lwan_syslog_log_out
      Src: /src/lwan/src/lib/lwan-log.c:259,1
    - Dst: gettid_cached
      Src: /src/lwan/src/lib/lwan-log.c:259,1
    - Dst: lwan_syslog_log_out
      Src: /src/lwan/src/lib/lwan-log.c:262,1
    - Dst: flockfile
      Src: /src/lwan/src/lib/lwan-log.c:265,1
    - Dst: basename
      Src: /src/lwan/src/lib/lwan-log.c:268,1
    - Dst: strdupa
      Src: /src/lwan/src/lib/lwan-log.c:268,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-log.c:269,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-log.c:270,1
    - Dst: printf
      Src: /src/lwan/src/lib/lwan-log.c:271,1
    - Dst: get_thread_emoji
      Src: /src/lwan/src/lib/lwan-log.c:271,1
    - Dst: printf
      Src: /src/lwan/src/lib/lwan-log.c:273,1
    - Dst: FORMAT_WITH_COLOR
      Src: /src/lwan/src/lib/lwan-log.c:273,1
    - Dst: gettid_cached
      Src: /src/lwan/src/lib/lwan-log.c:273,1
    - Dst: printf
      Src: /src/lwan/src/lib/lwan-log.c:274,1
    - Dst: FORMAT_WITH_COLOR
      Src: /src/lwan/src/lib/lwan-log.c:274,1
    - Dst: printf
      Src: /src/lwan/src/lib/lwan-log.c:275,1
    - Dst: FORMAT_WITH_COLOR
      Src: /src/lwan/src/lib/lwan-log.c:275,1
    - Dst: printf
      Src: /src/lwan/src/lib/lwan-log.c:277,1
    - Dst: gettid_cached
      Src: /src/lwan/src/lib/lwan-log.c:277,1
    - Dst: fwrite_unlocked
      Src: /src/lwan/src/lib/lwan-log.c:281,1
    - Dst: vprintf
      Src: /src/lwan/src/lib/lwan-log.c:282,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-log.c:284,1
    - Dst: strerror_thunk_r
      Src: /src/lwan/src/lib/lwan-log.c:287,1
    - Dst: printf
      Src: /src/lwan/src/lib/lwan-log.c:289,1
    - Dst: fwrite_unlocked
      Src: /src/lwan/src/lib/lwan-log.c:292,1
    - Dst: funlockfile
      Src: /src/lwan/src/lib/lwan-log.c:294,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 6
    argNames:
    - file
    - line
    - func
    - type
    - fmt
    - values
    argTypes:
    - NDEBUG*
    - int
    - char*
    - enum lwan_log_type
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 244
    functionDepth: 2
    functionLinenumber: 244
    functionLinenumberEnd: 297
    functionName: log_out
    functionSourceFile: /src/lwan/src/lib/lwan-log.c
    functionUses: 1
    functionsReached:
    - basename
    - flockfile
    - end_color
    - strdupa
    - get_thread_emoji
    - LIKELY
    - lwan_syslog_log_out
    - printf
    - vprintf
    - start_color
    - strerror_thunk_r
    - fwrite_unlocked
    - FORMAT_WITH_COLOR
    - funlockfile
    - UNLIKELY
    - gettid_cached
    linkageType: ''
    returnType: void
    signature: "void log_out(\n#ifndef NDEBUG\n    const char *file,\n    const int
      line,\n    const char *func,\n#endif\n    enum lwan_log_type type,\n    const
      char *fmt,\n    va_list values)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fn_name_
    - ','
    - type_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 302
    functionDepth: 0
    functionLinenumber: 302
    functionLinenumberEnd: 314
    functionName: IMPLEMENT_FUNCTION
    functionSourceFile: /src/lwan/src/lib/lwan-log.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IMPLEMENT_FUNCTION(fn_name_, type_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - fn_name_
    - ','
    - type_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 328
    functionName: IMPLEMENT_FUNCTION
    functionSourceFile: /src/lwan/src/lib/lwan-log.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IMPLEMENT_FUNCTION(fn_name_, type_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tophash
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 73
    functionName: no_tombstone
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE no_tombstone(uint8_t tophash)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:77,1
    - Dst: fnv1a_32
      Src: /src/lwan/src/lib/hash.c:78,1
    - Dst: strlen
      Src: /src/lwan/src/lib/hash.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - void*
    assertStmts:
    - condition: (key != NULL)
      pos:
        line_end: 76
        line_start: 76
        source_file: /src/lwan/src/lib/hash.c
    constantsTouched: []
    func_position:
      end: 79
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 79
    functionName: hash_str_fnv1a
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - fnv1a_32
    - strlen
    - assert
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t hash_str_fnv1a(const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:83,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:84,1
    - Dst: strcmp
      Src: /src/lwan/src/lib/hash.c:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - k1
    - k2
    argTypes:
    - void*
    - void*
    assertStmts:
    - condition: (k1 != NULL)
      pos:
        line_end: 82
        line_start: 82
        source_file: /src/lwan/src/lib/hash.c
    - condition: (k2 != NULL)
      pos:
        line_end: 83
        line_start: 83
        source_file: /src/lwan/src/lib/hash.c
    constantsTouched: []
    func_position:
      end: 86
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 86
    functionName: hash_str_eq
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - assert
    - strcmp
    linkageType: ''
    returnType: bool
    signature: bool hash_str_eq(const void *k1, const void *k2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fnv1a_32
      Src: /src/lwan/src/lib/hash.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 92
    functionName: hash_int_fnv1a
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - fnv1a_32
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t hash_int_fnv1a(const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - k1
    - k2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 99
    functionName: hash_int_eq
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool hash_int_eq(const void *k1, const void *k2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:103,1
    - Dst: fnv1a_32
      Src: /src/lwan/src/lib/hash.c:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - void*
    assertStmts:
    - condition: (key != NULL)
      pos:
        line_end: 102
        line_start: 102
        source_file: /src/lwan/src/lib/hash.c
    constantsTouched: []
    func_position:
      end: 106
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 106
    functionName: hash_lwan_value_fnv1a
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - fnv1a_32
    - assert
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t hash_lwan_value_fnv1a(const void *key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/lwan/src/lib/hash.c:113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - k1
    - k2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 115
    functionName: hash_lwan_value_eq
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: bool
    signature: bool hash_lwan_value_eq(const void *k1, const void *k2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_ia32_crc32di
      Src: /src/lwan/src/lib/hash.c:129,1
    - Dst: string_as_uint64
      Src: /src/lwan/src/lib/hash.c:129,1
    - Dst: __builtin_ia32_crc32si
      Src: /src/lwan/src/lib/hash.c:135,1
    - Dst: string_as_uint32
      Src: /src/lwan/src/lib/hash.c:135,1
    - Dst: __builtin_ia32_crc32qi
      Src: /src/lwan/src/lib/hash.c:141,1
    - Dst: __builtin_ia32_crc32hi
      Src: /src/lwan/src/lib/hash.c:150,1
    - Dst: string_as_uint16
      Src: /src/lwan/src/lib/hash.c:150,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - ptr
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 154
    functionName: hash_crc32
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - string_as_uint16
    - string_as_uint32
    - __builtin_ia32_crc32si
    - __builtin_ia32_crc32di
    - __builtin_ia32_crc32hi
    - __builtin_ia32_crc32qi
    - string_as_uint64
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t hash_crc32(const void *ptr, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_crc32
      Src: /src/lwan/src/lib/hash.c:158,1
    - Dst: strlen
      Src: /src/lwan/src/lib/hash.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 156
    functionDepth: 2
    functionLinenumber: 156
    functionLinenumberEnd: 159
    functionName: hash_str_crc32
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - strlen
    - hash_crc32
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t hash_str_crc32(const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_ia32_crc32si
      Src: /src/lwan/src/lib/hash.c:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 165
    functionName: hash_int_crc32
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - __builtin_ia32_crc32si
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t hash_int_crc32(const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:169,1
    - Dst: hash_crc32
      Src: /src/lwan/src/lib/hash.c:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - void*
    assertStmts:
    - condition: (key != NULL)
      pos:
        line_end: 168
        line_start: 168
        source_file: /src/lwan/src/lib/hash.c
    constantsTouched: []
    func_position:
      end: 172
      start: 167
    functionDepth: 2
    functionLinenumber: 167
    functionLinenumberEnd: 172
    functionName: hash_lwan_value_crc32
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - hash_crc32
    - assert
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t hash_lwan_value_crc32(const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - unused
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 185
    functionName: free_key_value_noop
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void free_key_value_noop(void *unused)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/hash.c:196,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/hash.c:197,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/hash.c:200,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/hash.c:201,1
    - Dst: malloc
      Src: /src/lwan/src/lib/hash.c:205,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/hash.c:206,1
    - Dst: calloc
      Src: /src/lwan/src/lib/hash.c:209,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/hash.c:210,1
    - Dst: calloc
      Src: /src/lwan/src/lib/hash.c:212,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/hash.c:213,1
    - Dst: free
      Src: /src/lwan/src/lib/hash.c:230,1
    - Dst: free
      Src: /src/lwan/src/lib/hash.c:232,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 235
    functionName: hash_custom_new
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - calloc
    - free
    - UNLIKELY
    - malloc
    - lwan_log_error
    linkageType: ''
    returnType: struct hash
    signature: "struct hash *hash_custom_new(uint32_t (*hash)(const void *key),\n
      \                            bool (*key_equal)(const void *k1, const void *k2),\n
      \                            void (*free_key)(void *key),\n                             void
      (*free_value)(void *value))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_custom_new
      Src: /src/lwan/src/lib/hash.c:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 237
    functionDepth: 2
    functionLinenumber: 237
    functionLinenumberEnd: 241
    functionName: hash_str_new
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 5
    functionsReached:
    - hash_custom_new
    linkageType: ''
    returnType: struct hash
    signature: "struct hash *hash_str_new(void (*free_key)(void *key),\n                          void
      (*free_value)(void *value))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_custom_new
      Src: /src/lwan/src/lib/hash.c:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 243
    functionDepth: 2
    functionLinenumber: 243
    functionLinenumberEnd: 247
    functionName: hash_int_new
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - hash_custom_new
    linkageType: ''
    returnType: struct hash
    signature: "struct hash *hash_int_new(void (*free_key)(void *key),\n                          void
      (*free_value)(void *value))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_custom_new
      Src: /src/lwan/src/lib/hash.c:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 249
    functionDepth: 2
    functionLinenumber: 249
    functionLinenumberEnd: 254
    functionName: hash_lwan_value_new
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - hash_custom_new
    linkageType: ''
    returnType: struct hash
    signature: "struct hash *hash_lwan_value_new(void (*free_key)(void *key),\n                                 void
      (*free_value)(void *value))"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ht
    argTypes:
    - struct hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 262
    functionName: hash_ref
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct hash
    signature: struct hash *hash_ref(struct hash *ht)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: HASH_FOREACH
      Src: /src/lwan/src/lib/hash.c:273,1
    - Dst: struct hash*::free_key
      Src: /src/lwan/src/lib/hash.c:274,1
    - Dst: struct hash*::free_value
      Src: /src/lwan/src/lib/hash.c:275,1
    - Dst: free
      Src: /src/lwan/src/lib/hash.c:278,1
    - Dst: free
      Src: /src/lwan/src/lib/hash.c:279,1
    - Dst: free
      Src: /src/lwan/src/lib/hash.c:280,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - ht
    argTypes:
    - struct hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 282
      start: 264
    functionDepth: 0
    functionLinenumber: 264
    functionLinenumberEnd: 282
    functionName: hash_unref
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 8
    functionsReached:
    - HASH_FOREACH
    - free
    - struct hash*::free_key
    - struct hash*::free_value
    linkageType: ''
    returnType: void
    signature: void hash_unref(struct hash *ht)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memchr
      Src: /src/lwan/src/lib/hash.c:296,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:298,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/hash.c:303,1
    - Dst: struct hash*::key_equal
      Src: /src/lwan/src/lib/hash.c:303,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:306,1
    - Dst: memchr
      Src: /src/lwan/src/lib/hash.c:307,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 5
    argNames:
    - ht
    - key
    - startpos
    - endpos
    - tophash
    argTypes:
    - struct hash*
    - void*
    - uint32_t
    - uint32_t
    - uint8_t
    assertStmts:
    - condition: (endpos != slot)
      pos:
        line_end: 305
        line_start: 305
        source_file: /src/lwan/src/lib/hash.c
    - condition: (tophash != '\0')
      pos:
        line_end: 297
        line_start: 297
        source_file: /src/lwan/src/lib/hash.c
    constantsTouched: []
    func_position:
      end: 311
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 311
    functionName: hash_probe_half
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - memchr
    - struct hash*::key_equal
    - assert
    - LIKELY
    linkageType: ''
    returnType: struct bucket
    signature: "struct bucket *hash_probe_half(const struct hash *ht,\n                                      const
      void *key,\n                                      const uint32_t startpos,\n
      \                                     const uint32_t endpos,\n                                      const
      uint8_t tophash)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memchr
      Src: /src/lwan/src/lib/hash.c:318,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/hash.c:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ht
    - startpos
    - endpos
    argTypes:
    - struct hash*
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 313
    functionDepth: 0
    functionLinenumber: 313
    functionLinenumberEnd: 321
    functionName: hash_probe_half_tombstone
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - memchr
    - LIKELY
    linkageType: ''
    returnType: struct bucket
    signature: "struct bucket *hash_probe_half_tombstone(const struct hash *ht,\n
      \                                               const uint32_t startpos,\n                                                const
      uint32_t endpos)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: hash_probe_half
      Src: /src/lwan/src/lib/hash.c:331,1
    - Dst: hash_probe_half
      Src: /src/lwan/src/lib/hash.c:336,1
    - Dst: memchr
      Src: /src/lwan/src/lib/hash.c:349,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 5
    argNames:
    - ht
    - key
    - startpos
    - tophash
    - deleting
    argTypes:
    - struct hash*
    - void*
    - uint32_t
    - uint8_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 323
    functionDepth: 1
    functionLinenumber: 323
    functionLinenumberEnd: 364
    functionName: hash_probe_key
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - hash_probe_half
    - memchr
    linkageType: ''
    returnType: struct bucket
    signature: "struct bucket *hash_probe_key(const struct hash *ht,\n                                     const
      void *key,\n                                     const uint32_t startpos,\n
      \                                    const uint8_t tophash,\n                                     bool
      deleting)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_probe_half_tombstone
      Src: /src/lwan/src/lib/hash.c:369,1
    - Dst: hash_probe_half_tombstone
      Src: /src/lwan/src/lib/hash.c:370,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ht
    - startpos
    argTypes:
    - struct hash*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 371
      start: 366
    functionDepth: 1
    functionLinenumber: 366
    functionLinenumberEnd: 371
    functionName: hash_probe_tombstone
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - hash_probe_half_tombstone
    linkageType: ''
    returnType: struct bucket
    signature: "struct bucket *hash_probe_tombstone(const struct hash *ht,\n                                           const
      uint32_t startpos)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct hash*::hash
      Src: /src/lwan/src/lib/hash.c:376,1
    - Dst: hash_probe_key
      Src: /src/lwan/src/lib/hash.c:378,1
    - Dst: no_tombstone
      Src: /src/lwan/src/lib/hash.c:378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ht
    - key
    - deleting
    argTypes:
    - struct hash*
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 373
    functionDepth: 2
    functionLinenumber: 373
    functionLinenumberEnd: 380
    functionName: hash_probe
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - struct hash*::hash
    - hash_probe_key
    - no_tombstone
    linkageType: ''
    returnType: struct bucket
    signature: 'struct bucket *

      hash_probe(const struct hash *ht, const void *key, bool deleting)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:387,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/hash.c:389,1
    - Dst: memchr
      Src: /src/lwan/src/lib/hash.c:399,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/hash.c:405,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/hash.c:406,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/hash.c:408,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:415,1
    - Dst: memchr
      Src: /src/lwan/src/lib/hash.c:416,1
    - Dst: reallocarray
      Src: /src/lwan/src/lib/hash.c:420,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/hash.c:421,1
    - Dst: memset
      Src: /src/lwan/src/lib/hash.c:426,1
    - Dst: reallocarray
      Src: /src/lwan/src/lib/hash.c:429,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/hash.c:430,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 2
    argNames:
    - ht
    - newcap
    argTypes:
    - struct hash*
    - uint32_t
    assertStmts:
    - condition: (ht->cap != newcap)
      pos:
        line_end: 386
        line_start: 386
        source_file: /src/lwan/src/lib/hash.c
    - condition: (newcap != new_slot)
      pos:
        line_end: 414
        line_start: 414
        source_file: /src/lwan/src/lib/hash.c
    constantsTouched: []
    func_position:
      end: 437
      start: 382
    functionDepth: 1
    functionLinenumber: 382
    functionLinenumberEnd: 437
    functionName: hash_resize
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - memchr
    - __builtin_unreachable
    - lwan_log_critical
    - reallocarray
    - memset
    - assert
    - UNLIKELY
    linkageType: ''
    returnType: int
    signature: int hash_resize(struct hash *ht, const uint32_t newcap)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: struct hash*::hash
      Src: /src/lwan/src/lib/hash.c:444,1
    - Dst: no_tombstone
      Src: /src/lwan/src/lib/hash.c:446,1
    - Dst: hash_probe_key
      Src: /src/lwan/src/lib/hash.c:449,1
    - Dst: struct hash*::free_key
      Src: /src/lwan/src/lib/hash.c:459,1
    - Dst: struct hash*::free_value
      Src: /src/lwan/src/lib/hash.c:463,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/hash.c:471,1
    - Dst: __builtin_mul_overflow
      Src: /src/lwan/src/lib/hash.c:471,1
    - Dst: hash_resize
      Src: /src/lwan/src/lib/hash.c:475,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/hash.c:476,1
    - Dst: hash_probe_tombstone
      Src: /src/lwan/src/lib/hash.c:481,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/hash.c:482,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/hash.c:488,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/hash.c:489,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 4
    argNames:
    - ht
    - key
    - value
    - unique
    argTypes:
    - struct hash*
    - void*
    - void*
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 439
    functionDepth: 2
    functionLinenumber: 439
    functionLinenumberEnd: 494
    functionName: hash_add_internal
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - struct hash*::hash
    - hash_probe_tombstone
    - lwan_log_critical
    - __builtin_unreachable
    - hash_probe_key
    - LIKELY
    - __builtin_mul_overflow
    - no_tombstone
    - struct hash*::free_value
    - hash_resize
    - struct hash*::free_key
    - UNLIKELY
    linkageType: ''
    returnType: int
    signature: "int hash_add_internal(struct hash *ht,\n                             const
      void *key,\n                             const void *value,\n                             const
      bool unique)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_add_internal
      Src: /src/lwan/src/lib/hash.c:498,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ht
    - key
    - value
    argTypes:
    - struct hash*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 496
    functionDepth: 3
    functionLinenumber: 496
    functionLinenumberEnd: 499
    functionName: hash_add
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 4
    functionsReached:
    - hash_add_internal
    linkageType: ''
    returnType: int
    signature: int hash_add(struct hash *ht, const void *key, const void *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_add_internal
      Src: /src/lwan/src/lib/hash.c:503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ht
    - key
    - value
    argTypes:
    - struct hash*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 501
    functionDepth: 3
    functionLinenumber: 501
    functionLinenumberEnd: 504
    functionName: hash_add_unique
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 3
    functionsReached:
    - hash_add_internal
    linkageType: ''
    returnType: int
    signature: int hash_add_unique(struct hash *ht, const void *key, const void *value)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_probe
      Src: /src/lwan/src/lib/hash.c:508,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/hash.c:510,1
    - Dst: struct hash*::free_key
      Src: /src/lwan/src/lib/hash.c:513,1
    - Dst: struct hash*::free_value
      Src: /src/lwan/src/lib/hash.c:514,1
    - Dst: hash_resize
      Src: /src/lwan/src/lib/hash.c:521,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - ht
    - key
    argTypes:
    - struct hash*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 527
      start: 506
    functionDepth: 3
    functionLinenumber: 506
    functionLinenumberEnd: 527
    functionName: hash_del
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 0
    functionsReached:
    - LIKELY
    - struct hash*::free_value
    - hash_probe
    - hash_resize
    - struct hash*::free_key
    linkageType: ''
    returnType: int
    signature: int hash_del(struct hash *ht, const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_probe
      Src: /src/lwan/src/lib/hash.c:531,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/hash.c:532,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ht
    - key
    argTypes:
    - struct hash*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 529
    functionDepth: 3
    functionLinenumber: 529
    functionLinenumberEnd: 533
    functionName: hash_find
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 8
    functionsReached:
    - hash_probe
    - LIKELY
    linkageType: ''
    returnType: void
    signature: void *hash_find(const struct hash *ht, const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ht
    argTypes:
    - struct hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 535
    functionDepth: 0
    functionLinenumber: 535
    functionLinenumberEnd: 535
    functionName: hash_get_count
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t hash_get_count(const struct hash *ht)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - iter
    - key
    - value
    argTypes:
    - struct hash_iter*
    - void**
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 560
      start: 537
    functionDepth: 0
    functionLinenumber: 537
    functionLinenumberEnd: 560
    functionName: hash_iter_next
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool hash_iter_next(struct hash_iter *iter,\n                    const
      void **key,\n                    const void **value)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: hash_str_new
      Src: /src/lwan/src/lib/hash.c:565,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:568,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:569,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:570,1
    - Dst: hash_add
      Src: /src/lwan/src/lib/hash.c:572,1
    - Dst: strdup
      Src: /src/lwan/src/lib/hash.c:572,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:573,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:574,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:575,1
    - Dst: hash_add
      Src: /src/lwan/src/lib/hash.c:577,1
    - Dst: strdup
      Src: /src/lwan/src/lib/hash.c:577,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:578,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:579,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:580,1
    - Dst: hash_add
      Src: /src/lwan/src/lib/hash.c:582,1
    - Dst: strdup
      Src: /src/lwan/src/lib/hash.c:582,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:583,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:584,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:585,1
    - Dst: strdup
      Src: /src/lwan/src/lib/hash.c:587,1
    - Dst: hash_add_unique
      Src: /src/lwan/src/lib/hash.c:588,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:589,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:590,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:591,1
    - Dst: free
      Src: /src/lwan/src/lib/hash.c:592,1
    - Dst: HASH_FOREACH
      Src: /src/lwan/src/lib/hash.c:597,1
    - Dst: streq
      Src: /src/lwan/src/lib/hash.c:598,1
    - Dst: streq
      Src: /src/lwan/src/lib/hash.c:599,1
    - Dst: streq
      Src: /src/lwan/src/lib/hash.c:601,1
    - Dst: streq
      Src: /src/lwan/src/lib/hash.c:602,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:605,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:609,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:610,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:611,1
    - Dst: snprintf
      Src: /src/lwan/src/lib/hash.c:615,1
    - Dst: hash_add
      Src: /src/lwan/src/lib/hash.c:616,1
    - Dst: strdup
      Src: /src/lwan/src/lib/hash.c:616,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:617,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:618,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:620,1
    - Dst: HASH_FOREACH
      Src: /src/lwan/src/lib/hash.c:623,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:626,1
    - Dst: hash_find
      Src: /src/lwan/src/lib/hash.c:630,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:631,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:632,1
    - Dst: streq
      Src: /src/lwan/src/lib/hash.c:632,1
    - Dst: hash_find
      Src: /src/lwan/src/lib/hash.c:634,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:635,1
    - Dst: hash_del
      Src: /src/lwan/src/lib/hash.c:637,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:638,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:639,1
    - Dst: hash_del
      Src: /src/lwan/src/lib/hash.c:641,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:642,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:643,1
    - Dst: hash_del
      Src: /src/lwan/src/lib/hash.c:645,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:646,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:647,1
    - Dst: snprintf
      Src: /src/lwan/src/lib/hash.c:651,1
    - Dst: hash_del
      Src: /src/lwan/src/lib/hash.c:653,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:654,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:655,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:657,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:663,1
    - Dst: assert
      Src: /src/lwan/src/lib/hash.c:665,1
    - Dst: hash_unref
      Src: /src/lwan/src/lib/hash.c:667,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 74
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (ht->cap == INITIAL_CAP)
      pos:
        line_end: 569
        line_start: 569
        source_file: /src/lwan/src/lib/hash.c
    - condition: (ht->len == 1)
      pos:
        line_end: 573
        line_start: 573
        source_file: /src/lwan/src/lib/hash.c
    - condition: (r == 0)
      pos:
        line_end: 577
        line_start: 577
        source_file: /src/lwan/src/lib/hash.c
    - condition: (ht->len == 2)
      pos:
        line_end: 583
        line_start: 583
        source_file: /src/lwan/src/lib/hash.c
    - condition: (ht->cap == INITIAL_CAP)
      pos:
        line_end: 590
        line_start: 590
        source_file: /src/lwan/src/lib/hash.c
    - condition: (ht->len == 0)
      pos:
        line_end: 656
        line_start: 656
        source_file: /src/lwan/src/lib/hash.c
    - condition: (count == ht->len)
      pos:
        line_end: 662
        line_start: 662
        source_file: /src/lwan/src/lib/hash.c
    - condition: (ht->cap == 2 * INITIAL_CAP)
      pos:
        line_end: 619
        line_start: 619
        source_file: /src/lwan/src/lib/hash.c
    - condition: (count == ht->len)
      pos:
        line_end: 625
        line_start: 625
        source_file: /src/lwan/src/lib/hash.c
    - condition: (ht->len == 20)
      pos:
        line_end: 646
        line_start: 646
        source_file: /src/lwan/src/lib/hash.c
    - condition: (r == 0)
      pos:
        line_end: 653
        line_start: 653
        source_file: /src/lwan/src/lib/hash.c
    - condition: (ht->len == 0)
      pos:
        line_end: 568
        line_start: 568
        source_file: /src/lwan/src/lib/hash.c
    - condition: (r == 0)
      pos:
        line_end: 572
        line_start: 572
        source_file: /src/lwan/src/lib/hash.c
    - condition: (ht->len == 2)
      pos:
        line_end: 589
        line_start: 589
        source_file: /src/lwan/src/lib/hash.c
    - condition: (ht->len == 21)
      pos:
        line_end: 638
        line_start: 638
        source_file: /src/lwan/src/lib/hash.c
    - condition: (count == ht->len)
      pos:
        line_end: 610
        line_start: 610
        source_file: /src/lwan/src/lib/hash.c
    - condition: (v != NULL)
      pos:
        line_end: 630
        line_start: 630
        source_file: /src/lwan/src/lib/hash.c
    - condition: (ht != NULL)
      pos:
        line_end: 567
        line_start: 567
        source_file: /src/lwan/src/lib/hash.c
    - condition: (ht->cap == INITIAL_CAP)
      pos:
        line_end: 579
        line_start: 579
        source_file: /src/lwan/src/lib/hash.c
    - condition: (r == -EEXIST)
      pos:
        line_end: 588
        line_start: 588
        source_file: /src/lwan/src/lib/hash.c
    - condition: (0 && "Unreachable")
      pos:
        line_end: 604
        line_start: 604
        source_file: /src/lwan/src/lib/hash.c
    - condition: (has_bar)
      pos:
        line_end: 609
        line_start: 609
        source_file: /src/lwan/src/lib/hash.c
    - condition: (r == 0)
      pos:
        line_end: 616
        line_start: 616
        source_file: /src/lwan/src/lib/hash.c
    - condition: (ht->len == 2 + i + 1)
      pos:
        line_end: 617
        line_start: 617
        source_file: /src/lwan/src/lib/hash.c
    - condition: (ht->cap == INITIAL_CAP)
      pos:
        line_end: 664
        line_start: 664
        source_file: /src/lwan/src/lib/hash.c
    - condition: (ht->len == 21)
      pos:
        line_end: 642
        line_start: 642
        source_file: /src/lwan/src/lib/hash.c
    - condition: (r == 0)
      pos:
        line_end: 645
        line_start: 645
        source_file: /src/lwan/src/lib/hash.c
    - condition: (has_foo)
      pos:
        line_end: 608
        line_start: 608
        source_file: /src/lwan/src/lib/hash.c
    - condition: (r == -ENOENT)
      pos:
        line_end: 641
        line_start: 641
        source_file: /src/lwan/src/lib/hash.c
    - condition: (ht->cap == INITIAL_CAP)
      pos:
        line_end: 574
        line_start: 574
        source_file: /src/lwan/src/lib/hash.c
    - condition: (ht->len == 2)
      pos:
        line_end: 578
        line_start: 578
        source_file: /src/lwan/src/lib/hash.c
    - condition: (r == 0)
      pos:
        line_end: 582
        line_start: 582
        source_file: /src/lwan/src/lib/hash.c
    - condition: (ht->cap == INITIAL_CAP)
      pos:
        line_end: 584
        line_start: 584
        source_file: /src/lwan/src/lib/hash.c
    - condition: (streq(v, "baz"))
      pos:
        line_end: 631
        line_start: 631
        source_file: /src/lwan/src/lib/hash.c
    - condition: (v == NULL)
      pos:
        line_end: 634
        line_start: 634
        source_file: /src/lwan/src/lib/hash.c
    - condition: (r == 0)
      pos:
        line_end: 637
        line_start: 637
        source_file: /src/lwan/src/lib/hash.c
    - condition: (ht->len == 20 - i - 1)
      pos:
        line_end: 654
        line_start: 654
        source_file: /src/lwan/src/lib/hash.c
    constantsTouched: []
    func_position:
      end: 668
      start: 563
    functionDepth: 4
    functionLinenumber: 563
    functionLinenumberEnd: 668
    functionName: LWAN_SELF_TEST
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 1
    functionsReached:
    - strdup
    - hash_add
    - free
    - hash_unref
    - HASH_FOREACH
    - hash_del
    - hash_find
    - assert
    - snprintf
    - hash_str_new
    - hash_add_unique
    - streq
    linkageType: ''
    returnType: void
    signature: void LWAN_SELF_TEST(hash_table)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 660
    functionDepth: 0
    functionLinenumber: 660
    functionLinenumberEnd: 662
    functionName: HASH_FOREACH
    functionSourceFile: /src/lwan/src/lib/hash.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void HASH_FOREACH (ht, NULL, NULL)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TPL_VAR_STR
      Src: /src/lwan/src/lib/lwan-response.c:49,1
    - Dst: TPL_VAR_STR
      Src: /src/lwan/src/lib/lwan-response.c:49,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-response.c:52,1
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan-response.c:54,1
    - Dst: lwan_tpl_compile_file
      Src: /src/lwan/src/lib/lwan-response.c:58,1
    - Dst: lwan_tpl_compile_value_full
      Src: /src/lwan/src/lib/lwan-response.c:60,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-response.c:64,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan-response.c:65,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct lwan*
    assertStmts:
    - condition: (!error_template)
      pos:
        line_end: 51
        line_start: 51
        source_file: /src/lwan/src/lib/lwan-response.c
    constantsTouched: []
    func_position:
      end: 66
      start: 44
    functionDepth: 6
    functionLinenumber: 44
    functionLinenumberEnd: 66
    functionName: lwan_response_init
    functionSourceFile: /src/lwan/src/lib/lwan-response.c
    functionUses: 0
    functionsReached:
    - lwan_tpl_compile_value_full
    - lwan_log_debug
    - lwan_log_critical_perror
    - assert
    - lwan_tpl_compile_file
    - TPL_VAR_STR
    - UNLIKELY
    linkageType: ''
    returnType: void
    signature: void lwan_response_init(struct lwan *l)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan-response.c:70,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-response.c:71,1
    - Dst: lwan_tpl_free
      Src: /src/lwan/src/lib/lwan-response.c:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct lwan*
    assertStmts:
    - condition: (error_template)
      pos:
        line_end: 70
        line_start: 70
        source_file: /src/lwan/src/lib/lwan-response.c
    constantsTouched: []
    func_position:
      end: 73
      start: 68
    functionDepth: 4
    functionLinenumber: 68
    functionLinenumberEnd: 73
    functionName: lwan_response_shutdown
    functionSourceFile: /src/lwan/src/lib/lwan-response.c
    functionUses: 0
    functionsReached:
    - lwan_log_debug
    - lwan_tpl_free
    - assert
    linkageType: ''
    returnType: void
    signature: void lwan_response_shutdown(struct lwan *l __attribute__((unused)))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 2
    argNames:
    - method
    - status
    argTypes:
    - enum lwan_request_flags
    - enum lwan_http_status
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 80
    functionName: has_response_body
    functionSourceFile: /src/lwan/src/lib/lwan-response.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: "bool has_response_body(enum lwan_request_flags method,\n                                     enum
      lwan_http_status status)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-response.c:87,1
    - Dst: lwan_strbuf_reset
      Src: /src/lwan/src/lib/lwan-response.c:89,1
    - Dst: lwan_response_send_chunk
      Src: /src/lwan/src/lib/lwan-response.c:90,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-response.c:94,1
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan-response.c:95,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-response.c:99,1
    - Dst: lwan_default_response
      Src: /src/lwan/src/lib/lwan-response.c:102,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-response.c:106,1
    - Dst: struct lwan_response*::stream::callback
      Src: /src/lwan/src/lib/lwan-response.c:107,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-response.c:112,1
    - Dst: lwan_default_response
      Src: /src/lwan/src/lib/lwan-response.c:114,1
    - Dst: lwan_prepare_response_header
      Src: /src/lwan/src/lib/lwan-response.c:121,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-response.c:122,1
    - Dst: lwan_default_response
      Src: /src/lwan/src/lib/lwan-response.c:123,1
    - Dst: has_response_body
      Src: /src/lwan/src/lib/lwan-response.c:125,1
    - Dst: lwan_request_get_method
      Src: /src/lwan/src/lib/lwan-response.c:125,1
    - Dst: lwan_send
      Src: /src/lwan/src/lib/lwan-response.c:126,1
    - Dst: lwan_strbuf_get_buffer
      Src: /src/lwan/src/lib/lwan-response.c:128,1
    - Dst: lwan_strbuf_get_length
      Src: /src/lwan/src/lib/lwan-response.c:129,1
    - Dst: memcpy
      Src: /src/lwan/src/lib/lwan-response.c:134,1
    - Dst: lwan_send
      Src: /src/lwan/src/lib/lwan-response.c:135,1
    - Dst: lwan_writev
      Src: /src/lwan/src/lib/lwan-response.c:143,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/lib/lwan-response.c:143,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 2
    argNames:
    - request
    - status
    argTypes:
    - struct lwan_request*
    - enum lwan_http_status
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 82
    functionDepth: 3
    functionLinenumber: 82
    functionLinenumberEnd: 144
    functionName: lwan_response
    functionSourceFile: /src/lwan/src/lib/lwan-response.c
    functionUses: 0
    functionsReached:
    - lwan_writev
    - lwan_prepare_response_header
    - lwan_default_response
    - lwan_strbuf_get_length
    - N_ELEMENTS
    - LIKELY
    - lwan_log_debug
    - lwan_send
    - memcpy
    - has_response_body
    - lwan_response_send_chunk
    - lwan_request_get_method
    - lwan_strbuf_get_buffer
    - struct lwan_response*::stream::callback
    - UNLIKELY
    - lwan_strbuf_reset
    linkageType: ''
    returnType: void
    signature: void lwan_response(struct lwan_request *request, enum lwan_http_status
      status)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_tpl_apply_with_buffer
      Src: /src/lwan/src/lib/lwan-response.c:149,1
    - Dst: lwan_http_status_as_string
      Src: /src/lwan/src/lib/lwan-response.c:152,1
    - Dst: lwan_http_status_as_descriptive_string
      Src: /src/lwan/src/lib/lwan-response.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buffer
    - status
    argTypes:
    - struct lwan_strbuf*
    - enum lwan_http_status
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 146
    functionDepth: 4
    functionLinenumber: 146
    functionLinenumberEnd: 155
    functionName: lwan_fill_default_response
    functionSourceFile: /src/lwan/src/lib/lwan-response.c
    functionUses: 1
    functionsReached:
    - lwan_http_status_as_descriptive_string
    - lwan_http_status_as_string
    - lwan_tpl_apply_with_buffer
    linkageType: ''
    returnType: void
    signature: "void lwan_fill_default_response(struct lwan_strbuf *buffer,\n                                enum
      lwan_http_status status)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_fill_default_response
      Src: /src/lwan/src/lib/lwan-response.c:162,1
    - Dst: lwan_response
      Src: /src/lwan/src/lib/lwan-response.c:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - request
    - status
    argTypes:
    - struct lwan_request*
    - enum lwan_http_status
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 157
    functionDepth: 5
    functionLinenumber: 157
    functionLinenumberEnd: 164
    functionName: lwan_default_response
    functionSourceFile: /src/lwan/src/lib/lwan-response.c
    functionUses: 1
    functionsReached:
    - lwan_fill_default_response
    - lwan_response
    linkageType: ''
    returnType: void
    signature: "void lwan_default_response(struct lwan_request *request,\n                           enum
      lwan_http_status status)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - len_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 169
    functionName: RETURN_0_ON_OVERFLOW
    functionSourceFile: /src/lwan/src/lib/lwan-response.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RETURN_0_ON_OVERFLOW(len_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - const_str_
    - ','
    - len_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 175
    functionName: APPEND_STRING_LEN
    functionSourceFile: /src/lwan/src/lib/lwan-response.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: APPEND_STRING_LEN(const_str_, len_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - str_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 181
    functionName: APPEND_STRING
    functionSourceFile: /src/lwan/src/lib/lwan-response.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: APPEND_STRING(str_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - value_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 187
    functionName: APPEND_CHAR
    functionSourceFile: /src/lwan/src/lib/lwan-response.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: APPEND_CHAR(value_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - value_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 189
    functionName: APPEND_CHAR_NOCHECK
    functionSourceFile: /src/lwan/src/lib/lwan-response.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: APPEND_CHAR_NOCHECK(value_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - value_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 197
    functionName: APPEND_UINT
    functionSourceFile: /src/lwan/src/lib/lwan-response.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: APPEND_UINT(value_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - const_str_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 200
    functionName: APPEND_CONSTANT
    functionSourceFile: /src/lwan/src/lib/lwan-response.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: APPEND_CONSTANT(const_str_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - v
    argTypes:
    - enum lwan_request_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 206
    functionName: flags_has_content_length
    functionSourceFile: /src/lwan/src/lib/lwan-response.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE flags_has_content_length(enum lwan_request_flags v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - v
    argTypes:
    - enum lwan_request_flags
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 213
    functionName: has_uncommon_response_headers
    functionSourceFile: /src/lwan/src/lib/lwan-response.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE has_uncommon_response_headers(enum lwan_request_flags
      v)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-response.c:232,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-response.c:236,1
    - Dst: APPEND_CONSTANT
      Src: /src/lwan/src/lib/lwan-response.c:237,1
    - Dst: APPEND_CONSTANT
      Src: /src/lwan/src/lib/lwan-response.c:239,1
    - Dst: APPEND_STRING
      Src: /src/lwan/src/lib/lwan-response.c:240,1
    - Dst: lwan_http_status_as_string_with_code
      Src: /src/lwan/src/lib/lwan-response.c:240,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-response.c:242,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-response.c:245,1
    - Dst: STRING_SWITCH_L
      Src: /src/lwan/src/lib/lwan-response.c:250,1
    - Dst: STR4_INT_L
      Src: /src/lwan/src/lib/lwan-response.c:251,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-response.c:252,1
    - Dst: strcaseequal_neutral
      Src: /src/lwan/src/lib/lwan-response.c:252,1
    - Dst: STR4_INT_L
      Src: /src/lwan/src/lib/lwan-response.c:255,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-response.c:256,1
    - Dst: STR4_INT_L
      Src: /src/lwan/src/lib/lwan-response.c:259,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-response.c:260,1
    - Dst: strcaseequal_neutral
      Src: /src/lwan/src/lib/lwan-response.c:260,1
    - Dst: RETURN_0_ON_OVERFLOW
      Src: /src/lwan/src/lib/lwan-response.c:265,1
    - Dst: APPEND_CHAR_NOCHECK
      Src: /src/lwan/src/lib/lwan-response.c:266,1
    - Dst: APPEND_CHAR_NOCHECK
      Src: /src/lwan/src/lib/lwan-response.c:267,1
    - Dst: APPEND_STRING
      Src: /src/lwan/src/lib/lwan-response.c:268,1
    - Dst: APPEND_CHAR_NOCHECK
      Src: /src/lwan/src/lib/lwan-response.c:269,1
    - Dst: APPEND_CHAR_NOCHECK
      Src: /src/lwan/src/lib/lwan-response.c:270,1
    - Dst: APPEND_STRING
      Src: /src/lwan/src/lib/lwan-response.c:271,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-response.c:276,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-response.c:280,1
    - Dst: APPEND_CONSTANT
      Src: /src/lwan/src/lib/lwan-response.c:281,1
    - Dst: APPEND_STRING
      Src: /src/lwan/src/lib/lwan-response.c:282,1
    - Dst: APPEND_CONSTANT
      Src: /src/lwan/src/lib/lwan-response.c:289,1
    - Dst: APPEND_STRING_LEN
      Src: /src/lwan/src/lib/lwan-response.c:290,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-response.c:293,1
    - Dst: APPEND_CONSTANT
      Src: /src/lwan/src/lib/lwan-response.c:294,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-response.c:297,1
    - Dst: APPEND_CONSTANT
      Src: /src/lwan/src/lib/lwan-response.c:298,1
    - Dst: APPEND_CONSTANT
      Src: /src/lwan/src/lib/lwan-response.c:300,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-response.c:304,1
    - Dst: APPEND_CONSTANT
      Src: /src/lwan/src/lib/lwan-response.c:305,1
    - Dst: APPEND_STRING
      Src: /src/lwan/src/lib/lwan-response.c:306,1
    - Dst: APPEND_CONSTANT
      Src: /src/lwan/src/lib/lwan-response.c:310,1
    - Dst: APPEND_STRING_LEN
      Src: /src/lwan/src/lib/lwan-response.c:311,1
    - Dst: flags_has_content_length
      Src: /src/lwan/src/lib/lwan-response.c:315,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-response.c:316,1
    - Dst: APPEND_CONSTANT
      Src: /src/lwan/src/lib/lwan-response.c:317,1
    - Dst: APPEND_UINT
      Src: /src/lwan/src/lib/lwan-response.c:318,1
    - Dst: lwan_strbuf_get_length
      Src: /src/lwan/src/lib/lwan-response.c:318,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-response.c:320,1
    - Dst: has_uncommon_response_headers
      Src: /src/lwan/src/lib/lwan-response.c:320,1
    - Dst: APPEND_CONSTANT
      Src: /src/lwan/src/lib/lwan-response.c:322,1
    - Dst: APPEND_CONSTANT
      Src: /src/lwan/src/lib/lwan-response.c:330,1
    - Dst: APPEND_CONSTANT
      Src: /src/lwan/src/lib/lwan-response.c:333,1
    - Dst: RETURN_0_ON_OVERFLOW
      Src: /src/lwan/src/lib/lwan-response.c:334,1
    - Dst: lwan_request_get_id
      Src: /src/lwan/src/lib/lwan-response.c:335,1
    - Dst: APPEND_CHAR_NOCHECK
      Src: /src/lwan/src/lib/lwan-response.c:337,1
    - Dst: APPEND_CONSTANT
      Src: /src/lwan/src/lib/lwan-response.c:340,1
    - Dst: APPEND_STRING_LEN
      Src: /src/lwan/src/lib/lwan-response.c:345,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 94
    argCount: 5
    argNames:
    - request
    - status
    - headers
    - headers_buf_size
    - additional_headers
    argTypes:
    - struct lwan_request*
    - enum lwan_http_status
    - char[]
    - size_t
    - struct lwan_key_value*
    assertStmts:
    - condition: (request->global_response_headers)
      pos:
        line_end: 231
        line_start: 231
        source_file: /src/lwan/src/lib/lwan-response.c
    constantsTouched: []
    func_position:
      end: 349
      start: 215
    functionDepth: 3
    functionLinenumber: 215
    functionLinenumberEnd: 349
    functionName: lwan_prepare_response_header_full
    functionSourceFile: /src/lwan/src/lib/lwan-response.c
    functionUses: 1
    functionsReached:
    - RETURN_0_ON_OVERFLOW
    - APPEND_UINT
    - STR4_INT_L
    - APPEND_STRING_LEN
    - strcaseequal_neutral
    - lwan_strbuf_get_length
    - LIKELY
    - APPEND_CONSTANT
    - has_uncommon_response_headers
    - assert
    - APPEND_STRING
    - streq
    - flags_has_content_length
    - STRING_SWITCH_L
    - lwan_request_get_id
    - UNLIKELY
    - APPEND_CHAR_NOCHECK
    - lwan_http_status_as_string_with_code
    linkageType: ''
    returnType: size_t
    signature: "size_t lwan_prepare_response_header_full(\n    struct lwan_request
      *request,\n    enum lwan_http_status status,\n    char headers[],\n    size_t
      headers_buf_size,\n    const struct lwan_key_value *additional_headers)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_prepare_response_header_full
      Src: /src/lwan/src/lib/lwan-response.c:364,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - request
    - status
    - headers
    - headers_buf_size
    argTypes:
    - struct lwan_request*
    - enum lwan_http_status
    - char[]
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 359
    functionDepth: 4
    functionLinenumber: 359
    functionLinenumberEnd: 366
    functionName: lwan_prepare_response_header
    functionSourceFile: /src/lwan/src/lib/lwan-response.c
    functionUses: 1
    functionsReached:
    - lwan_prepare_response_header_full
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: "ALWAYS_INLINE lwan_prepare_response_header(struct lwan_request *request,\n
      \                                                 enum lwan_http_status status,\n
      \                                                 char headers[],\n                                                  size_t
      headers_buf_size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lwan_prepare_response_header_full
      Src: /src/lwan/src/lib/lwan-response.c:379,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-response.c:382,1
    - Dst: lwan_send
      Src: /src/lwan/src/lib/lwan-response.c:386,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - request
    - status
    - additional_headers
    argTypes:
    - struct lwan_request*
    - enum lwan_http_status
    - struct lwan_key_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 368
    functionDepth: 4
    functionLinenumber: 368
    functionLinenumberEnd: 389
    functionName: lwan_response_set_chunked_full
    functionSourceFile: /src/lwan/src/lib/lwan-response.c
    functionUses: 0
    functionsReached:
    - lwan_prepare_response_header_full
    - lwan_send
    - UNLIKELY
    linkageType: ''
    returnType: bool
    signature: "bool lwan_response_set_chunked_full(struct lwan_request *request,\n
      \                                   enum lwan_http_status status,\n                                    const
      struct lwan_key_value *additional_headers)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_response_set_chunked_full
      Src: /src/lwan/src/lib/lwan-response.c:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - request
    - status
    argTypes:
    - struct lwan_request*
    - enum lwan_http_status
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 391
    functionDepth: 5
    functionLinenumber: 391
    functionLinenumberEnd: 396
    functionName: lwan_response_set_chunked
    functionSourceFile: /src/lwan/src/lib/lwan-response.c
    functionUses: 0
    functionsReached:
    - lwan_response_set_chunked_full
    linkageType: ''
    returnType: bool
    signature: "bool lwan_response_set_chunked(struct lwan_request *request,\n                                      enum
      lwan_http_status status)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-response.c:402,1
    - Dst: lwan_response_set_chunked
      Src: /src/lwan/src/lib/lwan-response.c:402,1
    - Dst: lwan_strbuf_get_length
      Src: /src/lwan/src/lib/lwan-response.c:406,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-response.c:407,1
    - Dst: lwan_send
      Src: /src/lwan/src/lib/lwan-response.c:409,1
    - Dst: snprintf
      Src: /src/lwan/src/lib/lwan-response.c:415,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-response.c:416,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-response.c:418,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-response.c:419,1
    - Dst: lwan_strbuf_get_buffer
      Src: /src/lwan/src/lib/lwan-response.c:425,1
    - Dst: lwan_writev
      Src: /src/lwan/src/lib/lwan-response.c:429,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/lib/lwan-response.c:429,1
    - Dst: lwan_strbuf_reset
      Src: /src/lwan/src/lib/lwan-response.c:431,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - request
    - strbuf
    argTypes:
    - struct lwan_request*
    - struct lwan_strbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 398
    functionDepth: 6
    functionLinenumber: 398
    functionLinenumberEnd: 432
    functionName: lwan_response_send_chunk_full
    functionSourceFile: /src/lwan/src/lib/lwan-response.c
    functionUses: 0
    functionsReached:
    - lwan_writev
    - __builtin_unreachable
    - lwan_strbuf_get_length
    - N_ELEMENTS
    - lwan_send
    - lwan_response_set_chunked
    - coro_yield
    - snprintf
    - lwan_strbuf_get_buffer
    - UNLIKELY
    - lwan_strbuf_reset
    linkageType: ''
    returnType: void
    signature: "void lwan_response_send_chunk_full(struct lwan_request *request,\n
      \                                  struct lwan_strbuf *strbuf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_response_send_chunk_full
      Src: /src/lwan/src/lib/lwan-response.c:436,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct lwan_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 434
    functionDepth: 7
    functionLinenumber: 434
    functionLinenumberEnd: 437
    functionName: lwan_response_send_chunk
    functionSourceFile: /src/lwan/src/lib/lwan-response.c
    functionUses: 7
    functionsReached:
    - lwan_response_send_chunk_full
    linkageType: ''
    returnType: void
    signature: void lwan_response_send_chunk(struct lwan_request *request)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lwan_prepare_response_header
      Src: /src/lwan/src/lib/lwan-response.c:450,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-response.c:452,1
    - Dst: lwan_send
      Src: /src/lwan/src/lib/lwan-response.c:456,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - request
    - status
    argTypes:
    - struct lwan_request*
    - enum lwan_http_status
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 439
    functionDepth: 5
    functionLinenumber: 439
    functionLinenumberEnd: 459
    functionName: lwan_response_set_event_stream
    functionSourceFile: /src/lwan/src/lib/lwan-response.c
    functionUses: 0
    functionsReached:
    - lwan_prepare_response_header
    - lwan_send
    - UNLIKELY
    linkageType: ''
    returnType: bool
    signature: "bool lwan_response_set_event_stream(struct lwan_request *request,\n
      \                                   enum lwan_http_status status)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-response.c:467,1
    - Dst: lwan_response_set_event_stream
      Src: /src/lwan/src/lib/lwan-response.c:467,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-response.c:478,1
    - Dst: lwan_strbuf_get_length
      Src: /src/lwan/src/lib/lwan-response.c:486,1
    - Dst: lwan_strbuf_get_buffer
      Src: /src/lwan/src/lib/lwan-response.c:493,1
    - Dst: lwan_writev
      Src: /src/lwan/src/lib/lwan-response.c:503,1
    - Dst: lwan_strbuf_reset
      Src: /src/lwan/src/lib/lwan-response.c:505,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-response.c:506,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - request
    - event
    argTypes:
    - struct lwan_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 461
    functionDepth: 6
    functionLinenumber: 461
    functionLinenumberEnd: 507
    functionName: lwan_response_send_event
    functionSourceFile: /src/lwan/src/lib/lwan-response.c
    functionUses: 2
    functionsReached:
    - lwan_writev
    - lwan_response_set_event_stream
    - lwan_strbuf_get_length
    - strlen
    - coro_yield
    - lwan_strbuf_get_buffer
    - UNLIKELY
    - lwan_strbuf_reset
    linkageType: ''
    returnType: void
    signature: void lwan_response_send_event(struct lwan_request *request, const char
      *event)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strtoul
      Src: /src/lwan/src/lib/lwan-request.c:89,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:91,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:94,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:97,1
    - Dst: htons
      Src: /src/lwan/src/lib/lwan-request.c:100,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - port
    - out
    argTypes:
    - char*
    - unsigned short*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 102
    functionName: parse_ascii_port
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - htons
    - strtoul
    - UNLIKELY
    linkageType: ''
    returnType: bool
    signature: bool parse_ascii_port(char *port, unsigned short *out)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:110,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:113,1
    - Dst: strchr
      Src: /src/lwan/src/lib/lwan-request.c:116,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:117,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - strp
    - end
    - delim
    argTypes:
    - char*
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 122
    functionName: strsep_char
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - strchr
    - UNLIKELY
    linkageType: ''
    returnType: char
    signature: 'char *

      strsep_char(char *strp, const char *end, char delim)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: memchr
      Src: /src/lwan/src/lib/lwan-request.c:133,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:134,1
    - Dst: strsep_char
      Src: /src/lwan/src/lib/lwan-request.c:140,1
    - Dst: strsep_char
      Src: /src/lwan/src/lib/lwan-request.c:141,1
    - Dst: strsep_char
      Src: /src/lwan/src/lib/lwan-request.c:142,1
    - Dst: strsep_char
      Src: /src/lwan/src/lib/lwan-request.c:143,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:145,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-request.c:149,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:155,1
    - Dst: inet_pton
      Src: /src/lwan/src/lib/lwan-request.c:155,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:157,1
    - Dst: inet_pton
      Src: /src/lwan/src/lib/lwan-request.c:157,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:159,1
    - Dst: parse_ascii_port
      Src: /src/lwan/src/lib/lwan-request.c:159,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:161,1
    - Dst: parse_ascii_port
      Src: /src/lwan/src/lib/lwan-request.c:161,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-request.c:166,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:172,1
    - Dst: inet_pton
      Src: /src/lwan/src/lib/lwan-request.c:172,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:174,1
    - Dst: inet_pton
      Src: /src/lwan/src/lib/lwan-request.c:174,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:176,1
    - Dst: parse_ascii_port
      Src: /src/lwan/src/lib/lwan-request.c:176,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:178,1
    - Dst: parse_ascii_port
      Src: /src/lwan/src/lib/lwan-request.c:178,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 42
    argCount: 2
    argNames:
    - request
    - buffer
    argTypes:
    - struct lwan_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 189
    functionName: parse_proxy_protocol_v1
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - memchr
    - STR4_INT
    - inet_pton
    - strsep_char
    - parse_ascii_port
    - UNLIKELY
    linkageType: ''
    returnType: char
    signature: 'char *

      parse_proxy_protocol_v1(struct lwan_request *request, char *buffer)'
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-request.c:149,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:155,1
    - Dst: inet_pton
      Src: /src/lwan/src/lib/lwan-request.c:155,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:157,1
    - Dst: inet_pton
      Src: /src/lwan/src/lib/lwan-request.c:157,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:159,1
    - Dst: parse_ascii_port
      Src: /src/lwan/src/lib/lwan-request.c:159,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:161,1
    - Dst: parse_ascii_port
      Src: /src/lwan/src/lib/lwan-request.c:161,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-request.c:166,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:172,1
    - Dst: inet_pton
      Src: /src/lwan/src/lib/lwan-request.c:172,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:174,1
    - Dst: inet_pton
      Src: /src/lwan/src/lib/lwan-request.c:174,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:176,1
    - Dst: parse_ascii_port
      Src: /src/lwan/src/lib/lwan-request.c:176,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:178,1
    - Dst: parse_ascii_port
      Src: /src/lwan/src/lib/lwan-request.c:178,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 185
    functionName: STRING_SWITCH
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - STR4_INT
    - UNLIKELY
    - inet_pton
    - parse_ascii_port
    linkageType: ''
    returnType: void
    signature: void STRING_SWITCH(protocol)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/lwan/src/lib/lwan-request.c:202,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:203,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:205,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-request.c:208,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 2
    argNames:
    - request
    - buffer
    argTypes:
    - struct lwan_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 245
    functionName: parse_proxy_protocol_v2
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - UNLIKELY
    - ntohs
    - LIKELY
    linkageType: ''
    returnType: char
    signature: char *parse_proxy_protocol_v2(struct lwan_request *request, char *buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - value1
    - ','
    - value2
    - ','
    - probability
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 250
    functionName: __builtin_expect_with_probability
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: __builtin_expect_with_probability(value1, value2, probability)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: string_as_uint32
      Src: /src/lwan/src/lib/lwan-request.c:256,1
    - Dst: FOR_EACH_REQUEST_METHOD
      Src: /src/lwan/src/lib/lwan-request.c:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - request
    - buffer
    argTypes:
    - struct lwan_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 253
    functionDepth: 1
    functionLinenumber: 253
    functionLinenumberEnd: 270
    functionName: identify_http_method
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - string_as_uint32
    - FOR_EACH_REQUEST_METHOD
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: "ALWAYS_INLINE *identify_http_method(struct lwan_request *request,\n
      \                                               char *buffer)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - upper
    - ','
    - lower
    - ','
    - mask
    - ','
    - constant
    - ','
    - probability
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 264
    functionName: GENERATE_IF
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GENERATE_IF(upper, lower, mask, constant, probability)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: nonnull
      Src: /src/lwan/src/lib/lwan-request.c:273,1
    - Dst: strpbrk
      Src: /src/lwan/src/lib/lwan-request.c:293,1
    - Dst: strpbrk
      Src: /src/lwan/src/lib/lwan-request.c:293,1
    - Dst: mempmove
      Src: /src/lwan/src/lib/lwan-request.c:296,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:307,1
    - Dst: stpcpy
      Src: /src/lwan/src/lib/lwan-request.c:333,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-request.c:337,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 273
    functionDepth: 1
    functionLinenumber: 273
    functionLinenumberEnd: 338
    functionName: url_decode
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - nonnull
    - stpcpy
    - mempmove
    - strlen
    - strpbrk
    - UNLIKELY
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t url_decode(char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/lwan/src/lib/lwan-request.c:344,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 342
    functionDepth: 0
    functionLinenumber: 342
    functionLinenumberEnd: 346
    functionName: key_value_compare
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int key_value_compare(const void *a, const void *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_key_value_array_reset
      Src: /src/lwan/src/lib/lwan-request.c:353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 348
    functionDepth: 0
    functionLinenumber: 348
    functionLinenumberEnd: 354
    functionName: reset_key_value_array
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - lwan_key_value_array_reset
    linkageType: ''
    returnType: void
    signature: void reset_key_value_array(void *data)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lwan_key_value_array_init
      Src: /src/lwan/src/lib/lwan-request.c:370,1
    - Dst: coro_defer
      Src: /src/lwan/src/lib/lwan-request.c:371,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:378,1
    - Dst: strsep_char
      Src: /src/lwan/src/lib/lwan-request.c:382,1
    - Dst: strsep_char
      Src: /src/lwan/src/lib/lwan-request.c:384,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:385,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:387,1
    - Dst: decode_value
      Src: /src/lwan/src/lib/lwan-request.c:387,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:392,1
    - Dst: decode_value
      Src: /src/lwan/src/lib/lwan-request.c:392,1
    - Dst: lwan_key_value_array_append
      Src: /src/lwan/src/lib/lwan-request.c:397,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:398,1
    - Dst: lwan_key_value_array_sort
      Src: /src/lwan/src/lib/lwan-request.c:405,1
    - Dst: coro_defer_fire_and_disarm
      Src: /src/lwan/src/lib/lwan-request.c:410,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 36
    argCount: 4
    argNames:
    - request
    - helper_value
    - array
    - separator
    argTypes:
    - struct lwan_request*
    - struct lwan_value*
    - struct lwan_key_value_array*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 356
    functionDepth: 2
    functionLinenumber: 356
    functionLinenumberEnd: 411
    functionName: parse_key_values
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - lwan_key_value_array_append
    - strsep_char
    - coro_defer_fire_and_disarm
    - decode_value
    - lwan_key_value_array_init
    - coro_defer
    - lwan_key_value_array_sort
    - UNLIKELY
    linkageType: ''
    returnType: void
    signature: "void parse_key_values(struct lwan_request *request,\n                             struct
      lwan_value *helper_value,\n                             struct lwan_key_value_array
      *array,\n                             ssize_t (*decode_value)(char *value),\n
      \                            const char separator)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - input
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 413
    functionDepth: 0
    functionLinenumber: 413
    functionLinenumberEnd: 417
    functionName: identity_decode
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t identity_decode(char *input __attribute__((unused)))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_request_get_header
      Src: /src/lwan/src/lib/lwan-request.c:421,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-request.c:423,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-request.c:429,1
    - Dst: parse_key_values
      Src: /src/lwan/src/lib/lwan-request.c:430,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct lwan_request*
    assertStmts:
    - condition: (!(request->flags & REQUEST_PARSED_COOKIES))
      pos:
        line_end: 422
        line_start: 422
        source_file: /src/lwan/src/lib/lwan-request.c
    constantsTouched: []
    func_position:
      end: 432
      start: 419
    functionDepth: 3
    functionLinenumber: 419
    functionLinenumberEnd: 432
    functionName: parse_cookies
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - parse_key_values
    - lwan_request_get_header
    - strlen
    - assert
    linkageType: ''
    returnType: void
    signature: void parse_cookies(struct lwan_request *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-request.c:438,1
    - Dst: parse_key_values
      Src: /src/lwan/src/lib/lwan-request.c:440,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct lwan_request*
    assertStmts:
    - condition: (!(request->flags & REQUEST_PARSED_QUERY_STRING))
      pos:
        line_end: 437
        line_start: 437
        source_file: /src/lwan/src/lib/lwan-request.c
    constantsTouched: []
    func_position:
      end: 442
      start: 434
    functionDepth: 3
    functionLinenumber: 434
    functionLinenumberEnd: 442
    functionName: parse_query_string
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - parse_key_values
    - assert
    linkageType: ''
    returnType: void
    signature: void parse_query_string(struct lwan_request *request)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-request.c:449,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:453,1
    - Dst: strncmp
      Src: /src/lwan/src/lib/lwan-request.c:453,1
    - Dst: parse_key_values
      Src: /src/lwan/src/lib/lwan-request.c:457,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct lwan_request*
    assertStmts:
    - condition: (!(request->flags & REQUEST_PARSED_FORM_DATA))
      pos:
        line_end: 448
        line_start: 448
        source_file: /src/lwan/src/lib/lwan-request.c
    constantsTouched: []
    func_position:
      end: 459
      start: 444
    functionDepth: 3
    functionLinenumber: 444
    functionLinenumberEnd: 459
    functionName: parse_form_data
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - UNLIKELY
    - parse_key_values
    - strncmp
    - assert
    linkageType: ''
    returnType: void
    signature: void parse_form_data(struct lwan_request *request)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memchr
      Src: /src/lwan/src/lib/lwan-request.c:465,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - request
    - space
    argTypes:
    - struct lwan_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 461
    functionDepth: 0
    functionLinenumber: 461
    functionLinenumberEnd: 473
    functionName: find_query_string
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - memchr
    linkageType: ''
    returnType: void
    signature: void find_query_string(struct lwan_request *request, const char *space)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:483,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:487,1
    - Dst: memchr
      Src: /src/lwan/src/lib/lwan-request.c:490,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:491,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:493,1
    - Dst: find_query_string
      Src: /src/lwan/src/lib/lwan-request.c:501,1
    - Dst: STR8_INT
      Src: /src/lwan/src/lib/lwan-request.c:507,1
    - Dst: STR8_INT
      Src: /src/lwan/src/lib/lwan-request.c:510,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 2
    argNames:
    - request
    - buffer
    argTypes:
    - struct lwan_request*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 475
    functionDepth: 1
    functionLinenumber: 475
    functionLinenumberEnd: 517
    functionName: identify_http_path
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - memchr
    - find_query_string
    - UNLIKELY
    - STR8_INT
    linkageType: ''
    returnType: char
    signature: 'char *

      identify_http_path(struct lwan_request *request, char *buffer)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: STR8_INT
      Src: /src/lwan/src/lib/lwan-request.c:507,1
    - Dst: STR8_INT
      Src: /src/lwan/src/lib/lwan-request.c:510,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 506
    functionDepth: 1
    functionLinenumber: 506
    functionLinenumberEnd: 514
    functionName: STRING_SWITCH_LARGE
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - STR8_INT
    linkageType: ''
    returnType: void
    signature: void STRING_SWITCH_LARGE(space)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-request.c:524,1
    - Dst: string_as_uint16
      Src: /src/lwan/src/lib/lwan-request.c:524,1
    - Dst: STR2_INT
      Src: /src/lwan/src/lib/lwan-request.c:524,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - header
    - end
    - p
    - header_len
    argTypes:
    - struct lwan_value*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 519
    functionDepth: 1
    functionLinenumber: 519
    functionLinenumberEnd: 531
    functionName: set_header_value
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - string_as_uint16
    - STR2_INT
    - LIKELY
    linkageType: ''
    returnType: void
    signature: "void set_header_value(\n    struct lwan_value *header, char *end,
      char *p, size_t header_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - hdr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 533
    functionDepth: 0
    functionLinenumber: 533
    functionLinenumberEnd: 539
    functionName: HEADER_LENGTH
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HEADER_LENGTH(hdr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - dest
    - ','
    - hdr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 540
    functionDepth: 0
    functionLinenumber: 540
    functionLinenumberEnd: 545
    functionName: SET_HEADER_VALUE
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_HEADER_VALUE(dest, hdr)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: memchr
      Src: /src/lwan/src/lib/lwan-request.c:556,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:558,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:564,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:569,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-request.c:579,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:582,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:590,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:594,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 3
    argNames:
    - header_start
    - request_buffer
    - next_request
    argTypes:
    - char**
    - struct lwan_value*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 546
    functionDepth: 0
    functionLinenumber: 546
    functionLinenumberEnd: 601
    functionName: find_headers
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - memchr
    - UNLIKELY
    - LIKELY
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: "ALWAYS_INLINE find_headers(char **header_start,\n                                          struct
      lwan_value *request_buffer,\n                                          char
      **next_request)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: find_headers
      Src: /src/lwan/src/lib/lwan-request.c:614,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:616,1
    - Dst: STR4_INT_L
      Src: /src/lwan/src/lib/lwan-request.c:624,1
    - Dst: HEADER_LENGTH
      Src: /src/lwan/src/lib/lwan-request.c:625,1
    - Dst: STR4_INT_L
      Src: /src/lwan/src/lib/lwan-request.c:628,1
    - Dst: SET_HEADER_VALUE
      Src: /src/lwan/src/lib/lwan-request.c:629,1
    - Dst: STR4_INT_L
      Src: /src/lwan/src/lib/lwan-request.c:633,1
    - Dst: SET_HEADER_VALUE
      Src: /src/lwan/src/lib/lwan-request.c:634,1
    - Dst: STR4_INT_L
      Src: /src/lwan/src/lib/lwan-request.c:636,1
    - Dst: HEADER_LENGTH
      Src: /src/lwan/src/lib/lwan-request.c:637,1
    - Dst: STR4_INT_L
      Src: /src/lwan/src/lib/lwan-request.c:640,1
    - Dst: SET_HEADER_VALUE
      Src: /src/lwan/src/lib/lwan-request.c:641,1
    - Dst: STR4_INT_L
      Src: /src/lwan/src/lib/lwan-request.c:643,1
    - Dst: SET_HEADER_VALUE
      Src: /src/lwan/src/lib/lwan-request.c:644,1
    - Dst: STR4_INT_L
      Src: /src/lwan/src/lib/lwan-request.c:648,1
    - Dst: SET_HEADER_VALUE
      Src: /src/lwan/src/lib/lwan-request.c:649,1
    - Dst: STR4_INT_L
      Src: /src/lwan/src/lib/lwan-request.c:651,1
    - Dst: SET_HEADER_VALUE
      Src: /src/lwan/src/lib/lwan-request.c:652,1
    - Dst: STR4_INT_L
      Src: /src/lwan/src/lib/lwan-request.c:654,1
    - Dst: SET_HEADER_VALUE
      Src: /src/lwan/src/lib/lwan-request.c:655,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 2
    argNames:
    - helper
    - buffer
    argTypes:
    - struct lwan_request_parser_helper*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 603
    functionDepth: 1
    functionLinenumber: 603
    functionLinenumberEnd: 657
    functionName: parse_headers
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - STR4_INT_L
    - HEADER_LENGTH
    - SET_HEADER_VALUE
    - find_headers
    - UNLIKELY
    linkageType: ''
    returnType: bool
    signature: "bool parse_headers(struct lwan_request_parser_helper *helper,\n                          char
      *buffer)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: STR4_INT_L
      Src: /src/lwan/src/lib/lwan-request.c:624,1
    - Dst: HEADER_LENGTH
      Src: /src/lwan/src/lib/lwan-request.c:625,1
    - Dst: STR4_INT_L
      Src: /src/lwan/src/lib/lwan-request.c:628,1
    - Dst: SET_HEADER_VALUE
      Src: /src/lwan/src/lib/lwan-request.c:629,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 623
    functionDepth: 1
    functionLinenumber: 623
    functionLinenumberEnd: 631
    functionName: STRING_SWITCH_L
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 1
    functionsReached:
    - HEADER_LENGTH
    - STR4_INT_L
    - SET_HEADER_VALUE
    linkageType: ''
    returnType: void
    signature: void STRING_SWITCH_L (p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: find_headers
      Src: /src/lwan/src/lib/lwan-request.c:669,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - header_start
    - buffer
    - next_request
    argTypes:
    - char**
    - struct lwan_value*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 666
    functionDepth: 1
    functionLinenumber: 666
    functionLinenumberEnd: 670
    functionName: lwan_find_headers
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - find_headers
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t lwan_find_headers(char **header_start, struct lwan_value *buffer,\n
      \                         char **next_request)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:678,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:681,1
    - Dst: lwan_parse_rfc_time
      Src: /src/lwan/src/lib/lwan-request.c:681,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - helper
    argTypes:
    - struct lwan_request_parser_helper*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 672
    functionDepth: 3
    functionLinenumber: 672
    functionLinenumberEnd: 686
    functionName: parse_if_modified_since
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - lwan_parse_rfc_time
    - UNLIKELY
    linkageType: ''
    returnType: void
    signature: void parse_if_modified_since(struct lwan_request_parser_helper *helper)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strtoull
      Src: /src/lwan/src/lib/lwan-request.c:698,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:699,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:701,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:703,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - ptr
    - end
    - 'off'
    argTypes:
    - char*
    - char**
    - off_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 708
      start: 688
    functionDepth: 0
    functionLinenumber: 688
    functionLinenumberEnd: 708
    functionName: parse_off_without_sign
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - strtoull
    - UNLIKELY
    linkageType: ''
    returnType: bool
    signature: bool parse_off_without_sign(const char *ptr, char **end, off_t *off)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:713,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:717,1
    - Dst: strncmp
      Src: /src/lwan/src/lib/lwan-request.c:717,1
    - Dst: parse_off_without_sign
      Src: /src/lwan/src/lib/lwan-request.c:728,1
    - Dst: lwan_char_isdigit
      Src: /src/lwan/src/lib/lwan-request.c:732,1
    - Dst: parse_off_without_sign
      Src: /src/lwan/src/lib/lwan-request.c:733,1
    - Dst: parse_off_without_sign
      Src: /src/lwan/src/lib/lwan-request.c:742,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 40
    argCount: 1
    argNames:
    - helper
    argTypes:
    - struct lwan_request_parser_helper*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 710
    functionDepth: 1
    functionLinenumber: 710
    functionLinenumberEnd: 754
    functionName: parse_range
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - lwan_char_isdigit
    - parse_off_without_sign
    - strncmp
    - UNLIKELY
    linkageType: ''
    returnType: void
    signature: void parse_range(struct lwan_request_parser_helper *helper)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-request.c:761,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-request.c:768,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-request.c:769,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-request.c:772,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-request.c:773,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-request.c:777,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-request.c:778,1
    - Dst: lwan_char_isspace
      Src: /src/lwan/src/lib/lwan-request.c:784,1
    - Dst: STR2_INT
      Src: /src/lwan/src/lib/lwan-request.c:788,1
    - Dst: strchr
      Src: /src/lwan/src/lib/lwan-request.c:795,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct lwan_request*
    assertStmts:
    - condition: (!(request->flags & REQUEST_PARSED_ACCEPT_ENCODING))
      pos:
        line_end: 760
        line_start: 760
        source_file: /src/lwan/src/lib/lwan-request.c
    constantsTouched: []
    func_position:
      end: 798
      start: 756
    functionDepth: 1
    functionLinenumber: 756
    functionLinenumberEnd: 798
    functionName: parse_accept_encoding
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - strchr
    - STR4_INT
    - STR2_INT
    - lwan_char_isspace
    - assert
    linkageType: ''
    returnType: void
    signature: void parse_accept_encoding(struct lwan_request *request)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-request.c:768,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-request.c:769,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-request.c:772,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-request.c:773,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-request.c:777,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-request.c:778,1
    - Dst: lwan_char_isspace
      Src: /src/lwan/src/lib/lwan-request.c:784,1
    - Dst: STR2_INT
      Src: /src/lwan/src/lib/lwan-request.c:788,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 767
    functionDepth: 1
    functionLinenumber: 767
    functionLinenumberEnd: 793
    functionName: STRING_SWITCH
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - STR4_INT
    - lwan_char_isspace
    - STR2_INT
    linkageType: ''
    returnType: void
    signature: void STRING_SWITCH(p)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: STR4_INT_L
      Src: /src/lwan/src/lib/lwan-request.c:812,1
    - Dst: STR4_INT_L
      Src: /src/lwan/src/lib/lwan-request.c:813,1
    - Dst: STR4_INT_L
      Src: /src/lwan/src/lib/lwan-request.c:816,1
    - Dst: STR4_INT_L
      Src: /src/lwan/src/lib/lwan-request.c:817,1
    - Dst: STR4_INT_L
      Src: /src/lwan/src/lib/lwan-request.c:820,1
    - Dst: STR4_INT_L
      Src: /src/lwan/src/lib/lwan-request.c:821,1
    - Dst: strchr
      Src: /src/lwan/src/lib/lwan-request.c:826,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-request.c:831,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct lwan_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 800
    functionDepth: 1
    functionLinenumber: 800
    functionLinenumberEnd: 842
    functionName: parse_connection_header
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - strchr
    - STR4_INT_L
    - LIKELY
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE parse_connection_header(struct lwan_request *request)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: STR4_INT_L
      Src: /src/lwan/src/lib/lwan-request.c:812,1
    - Dst: STR4_INT_L
      Src: /src/lwan/src/lib/lwan-request.c:813,1
    - Dst: STR4_INT_L
      Src: /src/lwan/src/lib/lwan-request.c:816,1
    - Dst: STR4_INT_L
      Src: /src/lwan/src/lib/lwan-request.c:817,1
    - Dst: STR4_INT_L
      Src: /src/lwan/src/lib/lwan-request.c:820,1
    - Dst: STR4_INT_L
      Src: /src/lwan/src/lib/lwan-request.c:821,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 811
    functionDepth: 1
    functionLinenumber: 811
    functionLinenumberEnd: 824
    functionName: STRING_SWITCH_L
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 1
    functionsReached:
    - STR4_INT_L
    linkageType: ''
    returnType: void
    signature: void STRING_SWITCH_L(p)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memmem
      Src: /src/lwan/src/lib/lwan-request.c:852,1
    - Dst: snprintf
      Src: /src/lwan/src/lib/lwan-request.c:859,1
    - Dst: rand
      Src: /src/lwan/src/lib/lwan-request.c:859,1
    - Dst: open
      Src: /src/lwan/src/lib/lwan-request.c:861,1
    - Dst: write
      Src: /src/lwan/src/lib/lwan-request.c:866,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-request.c:872,1
    - Dst: unlink
      Src: /src/lwan/src/lib/lwan-request.c:873,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-request.c:881,1
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan-request.c:882,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - struct lwan_value
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 845
    functionDepth: 1
    functionLinenumber: 845
    functionLinenumberEnd: 883
    functionName: save_to_corpus_for_fuzzing
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - write
    - unlink
    - open
    - close
    - lwan_log_debug
    - rand
    - memmem
    - snprintf
    linkageType: ''
    returnType: void
    signature: void save_to_corpus_for_fuzzing(struct lwan_value buffer)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: __builtin_sub_overflow
      Src: /src/lwan/src/lib/lwan-request.c:903,1
    - Dst: memmove
      Src: /src/lwan/src/lib/lwan-request.c:911,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:919,1
    - Dst: recv
      Src: /src/lwan/src/lib/lwan-request.c:922,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:923,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-request.c:929,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:934,1
    - Dst: finalizer
      Src: /src/lwan/src/lib/lwan-request.c:946,1
    - Dst: save_to_corpus_for_fuzzing
      Src: /src/lwan/src/lib/lwan-request.c:950,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-request.c:962,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-request.c:963,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 48
    argCount: 3
    argNames:
    - request
    - buffer
    - want_to_read
    argTypes:
    - struct lwan_request*
    - struct lwan_value*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 965
      start: 886
    functionDepth: 2
    functionLinenumber: 886
    functionLinenumberEnd: 965
    functionName: client_read
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - save_to_corpus_for_fuzzing
    - __builtin_sub_overflow
    - __builtin_unreachable
    - finalizer
    - recv
    - coro_yield
    - memmove
    - UNLIKELY
    linkageType: ''
    returnType: enum lwan_http_status
    signature: "enum lwan_http_status client_read(\n    struct lwan_request *request,\n
      \   struct lwan_value *buffer,\n    const size_t want_to_read,\n    enum lwan_read_finalizer
      (*finalizer)(const struct lwan_value *buffer,\n                                          size_t
      want_to_read,\n                                          const struct lwan_request
      *request,\n                                          int n_packets))"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-request.c:976,1
    - Dst: STRING_SWITCH
      Src: /src/lwan/src/lib/lwan-request.c:977,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-request.c:978,1
    - Dst: memmem
      Src: /src/lwan/src/lib/lwan-request.c:983,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-request.c:984,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-request.c:985,1
    - Dst: STRING_SWITCH_LARGE
      Src: /src/lwan/src/lib/lwan-request.c:997,1
    - Dst: STR8_INT
      Src: /src/lwan/src/lib/lwan-request.c:998,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:1010,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 4
    argNames:
    - buffer
    - helper
    - n_packets
    - allow_proxy_reqs
    argTypes:
    - struct lwan_value*
    - struct lwan_request_parser_helper*
    - int
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1014
      start: 967
    functionDepth: 1
    functionLinenumber: 967
    functionLinenumberEnd: 1014
    functionName: read_request_finalizer_from_helper
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - STR4_INT
    - STRING_SWITCH_LARGE
    - LIKELY
    - memmem
    - STR8_INT
    - STRING_SWITCH
    - UNLIKELY
    linkageType: ''
    returnType: enum lwan_read_finalizer
    signature: "enum lwan_read_finalizer read_request_finalizer_from_helper(const
      struct lwan_value *buffer,\n                                   struct lwan_request_parser_helper
      *helper,\n                                   int n_packets,\n                                   bool
      allow_proxy_reqs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: read_request_finalizer_from_helper
      Src: /src/lwan/src/lib/lwan-request.c:1022,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - buffer
    - want_to_read
    - request
    - n_packets
    argTypes:
    - struct lwan_value*
    - size_t
    - struct lwan_request*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1025
      start: 1016
    functionDepth: 2
    functionLinenumber: 1016
    functionLinenumberEnd: 1025
    functionName: read_request_finalizer
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - read_request_finalizer_from_helper
    linkageType: ''
    returnType: enum lwan_read_finalizer
    signature: "enum lwan_read_finalizer read_request_finalizer(const struct lwan_value
      *buffer,\n                       size_t want_to_read __attribute__((unused)),\n
      \                      const struct lwan_request *request,\n                       int
      n_packets)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: client_read
      Src: /src/lwan/src/lib/lwan-request.c:1030,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct lwan_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 1027
    functionDepth: 3
    functionLinenumber: 1027
    functionLinenumberEnd: 1033
    functionName: read_request
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - client_read
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE read_request(struct lwan_request *request)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:1049,1
    - Dst: time
      Src: /src/lwan/src/lib/lwan-request.c:1049,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-request.c:1054,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - buffer
    - want_to_read
    - request
    - n_packets
    argTypes:
    - struct lwan_value*
    - size_t
    - struct lwan_request*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1058
      start: 1035
    functionDepth: 0
    functionLinenumber: 1035
    functionLinenumberEnd: 1058
    functionName: body_data_finalizer
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - UNLIKELY
    - time
    linkageType: ''
    returnType: enum lwan_read_finalizer
    signature: "enum lwan_read_finalizer body_data_finalizer(const struct lwan_value
      *buffer,\n                    size_t want_to_read,\n                    const
      struct lwan_request *request,\n                    int n_packets)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/lwan/src/lib/lwan-request.c:1071,1
    - Dst: S_ISDIR
      Src: /src/lwan/src/lib/lwan-request.c:1074,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan-request.c:1078,1
    - Dst: statfs
      Src: /src/lwan/src/lib/lwan-request.c:1086,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan-request.c:1087,1
    - Dst: lwan_straitjacket_allow_dir_path_rw
      Src: /src/lwan/src/lib/lwan-request.c:1093,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-request.c:1094,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - v
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1099
      start: 1060
    functionDepth: 5
    functionLinenumber: 1060
    functionLinenumberEnd: 1099
    functionName: is_dir_good_for_tmp
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - lwan_straitjacket_allow_dir_path_rw
    - lwan_log_warning
    - S_ISDIR
    - statfs
    - lwan_log_error
    - stat
    linkageType: ''
    returnType: char
    signature: char *is_dir_good_for_tmp(const char *v)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: is_dir_good_for_tmp
      Src: /src/lwan/src/lib/lwan-request.c:1107,1
    - Dst: secure_getenv
      Src: /src/lwan/src/lib/lwan-request.c:1107,1
    - Dst: is_dir_good_for_tmp
      Src: /src/lwan/src/lib/lwan-request.c:1111,1
    - Dst: secure_getenv
      Src: /src/lwan/src/lib/lwan-request.c:1111,1
    - Dst: is_dir_good_for_tmp
      Src: /src/lwan/src/lib/lwan-request.c:1115,1
    - Dst: secure_getenv
      Src: /src/lwan/src/lib/lwan-request.c:1115,1
    - Dst: is_dir_good_for_tmp
      Src: /src/lwan/src/lib/lwan-request.c:1119,1
    - Dst: is_dir_good_for_tmp
      Src: /src/lwan/src/lib/lwan-request.c:1123,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan-request.c:1127,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1131
      start: 1103
    functionDepth: 6
    functionLinenumber: 1103
    functionLinenumberEnd: 1131
    functionName: LWAN_LAZY_GLOBAL
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached:
    - secure_getenv
    - lwan_log_warning
    - is_dir_good_for_tmp
    linkageType: ''
    returnType: void
    signature: void LWAN_LAZY_GLOBAL(const char *, get_temp_dir)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-request.c:1336,1
    - Dst: parse_proxy_protocol_v1
      Src: /src/lwan/src/lib/lwan-request.c:1337,1
    - Dst: STR4_INT
      Src: /src/lwan/src/lib/lwan-request.c:1338,1
    - Dst: parse_proxy_protocol_v2
      Src: /src/lwan/src/lib/lwan-request.c:1339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1340
      start: 1335
    functionDepth: 2
    functionLinenumber: 1335
    functionLinenumberEnd: 1340
    functionName: STRING_SWITCH
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 1
    functionsReached:
    - STR4_INT
    - parse_proxy_protocol_v1
    - parse_proxy_protocol_v2
    linkageType: ''
    returnType: void
    signature: void STRING_SWITCH(buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1609
      start: 1606
    functionDepth: 0
    functionLinenumber: 1606
    functionLinenumberEnd: 1609
    functionName: (diff.tv_nsec < 0)
    functionSourceFile: /src/lwan/src/lib/lwan-request.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: if
    signature: if (diff.tv_nsec < 0)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - var_
    - ','
    - append_to_lwan_strbuf_
    - ','
    - get_is_empty_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 59
    functionName: TPL_VAR_SIMPLE
    functionSourceFile: /src/lwan/src/lib/lwan-template.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TPL_VAR_SIMPLE(var_, append_to_lwan_strbuf_, get_is_empty_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - var_
    - ','
    - generator_
    - ','
    - seqitem_desc_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 65
    functionName: TPL_VAR_SEQUENCE
    functionSourceFile: /src/lwan/src/lib/lwan-template.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TPL_VAR_SEQUENCE(var_, generator_, seqitem_desc_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 68
    functionName: TPL_VAR_INT
    functionSourceFile: /src/lwan/src/lib/lwan-template.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TPL_VAR_INT(var_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 71
    functionName: TPL_VAR_DOUBLE
    functionSourceFile: /src/lwan/src/lib/lwan-template.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TPL_VAR_DOUBLE(var_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 74
    functionName: TPL_VAR_STR
    functionSourceFile: /src/lwan/src/lib/lwan-template.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TPL_VAR_STR(var_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 78
    functionName: TPL_VAR_STR_ESCAPE
    functionSourceFile: /src/lwan/src/lib/lwan-template.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TPL_VAR_STR_ESCAPE(var_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-template.h:106,1
    - Dst: lwan_tpl_compile_value_full
      Src: /src/lwan/src/lib/lwan-template.h:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - string
    - descriptor
    - flags
    argTypes:
    - char*
    - struct lwan_var_descriptor*
    - enum lwan_tpl_flag
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 101
    functionDepth: 6
    functionLinenumber: 101
    functionLinenumberEnd: 108
    functionName: lwan_tpl_compile_string_full
    functionSourceFile: /src/lwan/src/lib/lwan-template.h
    functionUses: 3
    functionsReached:
    - strlen
    - lwan_tpl_compile_value_full
    linkageType: ''
    returnType: struct lwan_tpl
    signature: "struct lwan_tpl *\nlwan_tpl_compile_string_full(const char *string,\n
      \                            const struct lwan_var_descriptor *descriptor,\n
      \                            enum lwan_tpl_flag flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 95
    functionName: ctz64
    functionSourceFile: /src/lwan/src/lib/timeout.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ctz64(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 96
    functionName: clz64
    functionSourceFile: /src/lwan/src/lib/timeout.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: clz64(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 98
    functionName: ctz32
    functionSourceFile: /src/lwan/src/lib/timeout.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ctz32(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 99
    functionName: clz32
    functionSourceFile: /src/lwan/src/lib/timeout.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: clz32(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 101
    functionName: ctz32
    functionSourceFile: /src/lwan/src/lib/timeout.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ctz32(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 102
    functionName: clz32
    functionSourceFile: /src/lwan/src/lib/timeout.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: clz32(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 105
    functionName: ctz
    functionSourceFile: /src/lwan/src/lib/timeout.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ctz(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 106
    functionName: clz
    functionSourceFile: /src/lwan/src/lib/timeout.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: clz(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 107
    functionName: fls
    functionSourceFile: /src/lwan/src/lib/timeout.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: fls(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 109
    functionName: WHEEL_C
    functionSourceFile: /src/lwan/src/lib/timeout.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: WHEEL_C(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/timeout.c:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - v
    - n
    argTypes:
    - wheel_t
    - uint32_t
    assertStmts:
    - condition: (n < WHEEL_T_BITS)
      pos:
        line_end: 122
        line_start: 122
        source_file: /src/lwan/src/lib/timeout.c
    constantsTouched: []
    func_position:
      end: 125
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 125
    functionName: rotl
    functionSourceFile: /src/lwan/src/lib/timeout.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: wheel_t
    signature: wheel_t rotl(const wheel_t v, uint32_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/timeout.c:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - v
    - n
    argTypes:
    - wheel_t
    - uint32_t
    assertStmts:
    - condition: (n < WHEEL_T_BITS)
      pos:
        line_end: 128
        line_start: 128
        source_file: /src/lwan/src/lib/timeout.c
    constantsTouched: []
    func_position:
      end: 131
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 131
    functionName: rotr
    functionSourceFile: /src/lwan/src/lib/timeout.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: wheel_t
    signature: wheel_t rotr(const wheel_t v, uint32_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/lib/timeout.c:153,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/lib/timeout.c:154,1
    - Dst: list_head_init
      Src: /src/lwan/src/lib/timeout.c:155,1
    - Dst: list_head_init
      Src: /src/lwan/src/lib/timeout.c:159,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/lib/timeout.c:161,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - T
    argTypes:
    - struct timeouts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 168
    functionName: timeouts_init
    functionSourceFile: /src/lwan/src/lib/timeout.c
    functionUses: 0
    functionsReached:
    - list_head_init
    - N_ELEMENTS
    linkageType: ''
    returnType: struct timeouts
    signature: struct timeouts *timeouts_init(struct timeouts *T)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_aligned_alloc
      Src: /src/lwan/src/lib/timeout.c:174,1
    - Dst: timeouts_init
      Src: /src/lwan/src/lib/timeout.c:175,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - error
    argTypes:
    - timeout_error_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 170
    functionDepth: 2
    functionLinenumber: 170
    functionLinenumberEnd: 180
    functionName: timeouts_open
    functionSourceFile: /src/lwan/src/lib/timeout.c
    functionUses: 1
    functionsReached:
    - timeouts_init
    - lwan_aligned_alloc
    linkageType: ''
    returnType: struct timeouts
    signature: struct timeouts *timeouts_open(timeout_error_t *error)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/lwan/src/lib/timeout.c:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - T
    argTypes:
    - struct timeouts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 185
    functionName: timeouts_close
    functionSourceFile: /src/lwan/src/lib/timeout.c
    functionUses: 1
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void timeouts_close(struct timeouts *T)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_del_from
      Src: /src/lwan/src/lib/timeout.c:190,1
    - Dst: list_empty
      Src: /src/lwan/src/lib/timeout.c:192,1
    - Dst: WHEEL_C
      Src: /src/lwan/src/lib/timeout.c:197,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - T
    - to
    argTypes:
    - struct timeouts*
    - struct timeout*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 187
    functionDepth: 3
    functionLinenumber: 187
    functionLinenumberEnd: 202
    functionName: timeouts_del
    functionSourceFile: /src/lwan/src/lib/timeout.c
    functionUses: 1
    functionsReached:
    - list_empty
    - list_del_from
    - WHEEL_C
    linkageType: ''
    returnType: void
    signature: void timeouts_del(struct timeouts *T, struct timeout *to)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - T
    - to
    argTypes:
    - struct timeouts*
    - struct timeout*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: timeout_rem
    functionSourceFile: /src/lwan/src/lib/timeout.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: reltime_t
    signature: reltime_t timeout_rem(struct timeouts *T, struct timeout *to)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fls
      Src: /src/lwan/src/lib/timeout.c:212,1
    - Dst: LWAN_MIN
      Src: /src/lwan/src/lib/timeout.c:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - timeout
    argTypes:
    - timeout_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 213
    functionName: timeout_wheel
    functionSourceFile: /src/lwan/src/lib/timeout.c
    functionUses: 0
    functionsReached:
    - LWAN_MIN
    - fls
    linkageType: ''
    returnType: int
    signature: int timeout_wheel(timeout_t timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - wheel
    - expires
    argTypes:
    - int
    - timeout_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 218
    functionName: timeout_slot
    functionSourceFile: /src/lwan/src/lib/timeout.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int timeout_slot(int wheel, timeout_t expires)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeouts_del
      Src: /src/lwan/src/lib/timeout.c:226,1
    - Dst: timeout_rem
      Src: /src/lwan/src/lib/timeout.c:231,1
    - Dst: timeout_wheel
      Src: /src/lwan/src/lib/timeout.c:238,1
    - Dst: timeout_slot
      Src: /src/lwan/src/lib/timeout.c:239,1
    - Dst: WHEEL_C
      Src: /src/lwan/src/lib/timeout.c:243,1
    - Dst: list_add_tail
      Src: /src/lwan/src/lib/timeout.c:248,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - T
    - to
    - expires
    argTypes:
    - struct timeouts*
    - struct timeout*
    - timeout_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 220
    functionDepth: 4
    functionLinenumber: 220
    functionLinenumberEnd: 249
    functionName: timeouts_sched
    functionSourceFile: /src/lwan/src/lib/timeout.c
    functionUses: 0
    functionsReached:
    - list_add_tail
    - timeouts_del
    - WHEEL_C
    - timeout_rem
    - timeout_wheel
    - timeout_slot
    linkageType: ''
    returnType: void
    signature: void timeouts_sched(struct timeouts *T, struct timeout *to, timeout_t
      expires)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeouts_sched
      Src: /src/lwan/src/lib/timeout.c:254,1
    - Dst: timeouts_sched
      Src: /src/lwan/src/lib/timeout.c:256,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - T
    - to
    - timeout
    argTypes:
    - struct timeouts*
    - struct timeout*
    - timeout_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 251
    functionDepth: 5
    functionLinenumber: 251
    functionLinenumberEnd: 257
    functionName: timeouts_add
    functionSourceFile: /src/lwan/src/lib/timeout.c
    functionUses: 2
    functionsReached:
    - timeouts_sched
    linkageType: ''
    returnType: void
    signature: void timeouts_add(struct timeouts *T, struct timeout *to, timeout_t
      timeout)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: list_head_init
      Src: /src/lwan/src/lib/timeout.c:265,1
    - Dst: WHEEL_C
      Src: /src/lwan/src/lib/timeout.c:289,1
    - Dst: rotl
      Src: /src/lwan/src/lib/timeout.c:302,1
    - Dst: UINT64_C
      Src: /src/lwan/src/lib/timeout.c:302,1
    - Dst: rotr
      Src: /src/lwan/src/lib/timeout.c:306,1
    - Dst: rotl
      Src: /src/lwan/src/lib/timeout.c:306,1
    - Dst: WHEEL_C
      Src: /src/lwan/src/lib/timeout.c:306,1
    - Dst: WHEEL_C
      Src: /src/lwan/src/lib/timeout.c:308,1
    - Dst: ctz
      Src: /src/lwan/src/lib/timeout.c:313,1
    - Dst: list_append_list
      Src: /src/lwan/src/lib/timeout.c:314,1
    - Dst: UINT64_C
      Src: /src/lwan/src/lib/timeout.c:315,1
    - Dst: LWAN_MAX
      Src: /src/lwan/src/lib/timeout.c:322,1
    - Dst: list_for_each_safe
      Src: /src/lwan/src/lib/timeout.c:328,1
    - Dst: list_del_from
      Src: /src/lwan/src/lib/timeout.c:329,1
    - Dst: timeouts_sched
      Src: /src/lwan/src/lib/timeout.c:332,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 2
    argNames:
    - T
    - curtime
    argTypes:
    - struct timeouts*
    - abstime_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 259
    functionDepth: 5
    functionLinenumber: 259
    functionLinenumberEnd: 336
    functionName: timeouts_update
    functionSourceFile: /src/lwan/src/lib/timeout.c
    functionUses: 1
    functionsReached:
    - list_for_each_safe
    - LWAN_MAX
    - list_head_init
    - list_append_list
    - rotr
    - rotl
    - ctz
    - list_del_from
    - WHEEL_C
    - timeouts_sched
    - UINT64_C
    linkageType: ''
    returnType: void
    signature: void timeouts_update(struct timeouts *T, abstime_t curtime)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TIMEOUT_C
      Src: /src/lwan/src/lib/timeout.c:357,1
    - Dst: ctz
      Src: /src/lwan/src/lib/timeout.c:370,1
    - Dst: rotr
      Src: /src/lwan/src/lib/timeout.c:370,1
    - Dst: LWAN_MIN
      Src: /src/lwan/src/lib/timeout.c:378,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - T
    argTypes:
    - struct timeouts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 354
    functionDepth: 1
    functionLinenumber: 354
    functionLinenumberEnd: 386
    functionName: timeouts_int
    functionSourceFile: /src/lwan/src/lib/timeout.c
    functionUses: 0
    functionsReached:
    - ctz
    - LWAN_MIN
    - rotr
    - TIMEOUT_C
    linkageType: ''
    returnType: timeout_t
    signature: timeout_t timeouts_int(struct timeouts *T)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_empty
      Src: /src/lwan/src/lib/timeout.c:394,1
    - Dst: timeouts_int
      Src: /src/lwan/src/lib/timeout.c:397,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - T
    argTypes:
    - struct timeouts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 392
    functionDepth: 2
    functionLinenumber: 392
    functionLinenumberEnd: 398
    functionName: timeouts_timeout
    functionSourceFile: /src/lwan/src/lib/timeout.c
    functionUses: 1
    functionsReached:
    - list_empty
    - timeouts_int
    linkageType: ''
    returnType: timeout_t
    signature: timeout_t timeouts_timeout(struct timeouts *T)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: list_top
      Src: /src/lwan/src/lib/timeout.c:402,1
    - Dst: list_del_from
      Src: /src/lwan/src/lib/timeout.c:407,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - T
    argTypes:
    - struct timeouts*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 400
    functionDepth: 3
    functionLinenumber: 400
    functionLinenumberEnd: 411
    functionName: timeouts_get
    functionSourceFile: /src/lwan/src/lib/timeout.c
    functionUses: 1
    functionsReached:
    - list_del_from
    - list_top
    linkageType: ''
    returnType: struct timeout
    signature: struct timeout *timeouts_get(struct timeouts *T)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: uchar
    functionSourceFile: /src/lwan/src/lib/patterns.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: uchar(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ms
    - error
    argTypes:
    - struct match_state*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 74
    functionName: match_error
    functionSourceFile: /src/lwan/src/lib/patterns.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int match_error(struct match_state *ms, const char *error)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: match_error
      Src: /src/lwan/src/lib/patterns.c:81,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - ms
    - l
    argTypes:
    - struct match_state*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 83
    functionName: check_capture
    functionSourceFile: /src/lwan/src/lib/patterns.c
    functionUses: 0
    functionsReached:
    - match_error
    linkageType: ''
    returnType: int
    signature: int check_capture(struct match_state *ms, int l)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: match_error
      Src: /src/lwan/src/lib/patterns.c:92,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - ms
    argTypes:
    - struct match_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 93
    functionName: capture_to_close
    functionSourceFile: /src/lwan/src/lib/patterns.c
    functionUses: 0
    functionsReached:
    - match_error
    linkageType: ''
    returnType: int
    signature: int capture_to_close(struct match_state *ms)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: match_error
      Src: /src/lwan/src/lib/patterns.c:101,1
    - Dst: match_error
      Src: /src/lwan/src/lib/patterns.c:110,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 2
    argNames:
    - ms
    - p
    argTypes:
    - struct match_state*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 123
    functionName: classend
    functionSourceFile: /src/lwan/src/lib/patterns.c
    functionUses: 0
    functionsReached:
    - match_error
    linkageType: ''
    returnType: char
    signature: 'char *

      classend(struct match_state *ms, const char *p)'
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: tolower
      Src: /src/lwan/src/lib/patterns.c:129,1
    - Dst: isalpha
      Src: /src/lwan/src/lib/patterns.c:131,1
    - Dst: iscntrl
      Src: /src/lwan/src/lib/patterns.c:134,1
    - Dst: isdigit
      Src: /src/lwan/src/lib/patterns.c:137,1
    - Dst: isgraph
      Src: /src/lwan/src/lib/patterns.c:140,1
    - Dst: islower
      Src: /src/lwan/src/lib/patterns.c:143,1
    - Dst: ispunct
      Src: /src/lwan/src/lib/patterns.c:146,1
    - Dst: isspace
      Src: /src/lwan/src/lib/patterns.c:149,1
    - Dst: isupper
      Src: /src/lwan/src/lib/patterns.c:152,1
    - Dst: isalnum
      Src: /src/lwan/src/lib/patterns.c:155,1
    - Dst: isxdigit
      Src: /src/lwan/src/lib/patterns.c:158,1
    - Dst: islower
      Src: /src/lwan/src/lib/patterns.c:163,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 2
    argNames:
    - c
    - cl
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 164
    functionName: match_class
    functionSourceFile: /src/lwan/src/lib/patterns.c
    functionUses: 0
    functionsReached:
    - ispunct
    - isspace
    - isxdigit
    - isalnum
    - tolower
    - isupper
    - isgraph
    - islower
    - iscntrl
    - isalpha
    - isdigit
    linkageType: ''
    returnType: int
    signature: int match_class(int c, int cl)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: match_class
      Src: /src/lwan/src/lib/patterns.c:178,1
    - Dst: uchar
      Src: /src/lwan/src/lib/patterns.c:178,1
    - Dst: uchar
      Src: /src/lwan/src/lib/patterns.c:182,1
    - Dst: uchar
      Src: /src/lwan/src/lib/patterns.c:182,1
    - Dst: uchar
      Src: /src/lwan/src/lib/patterns.c:184,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 3
    argNames:
    - c
    - p
    - ec
    argTypes:
    - int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 188
    functionName: matchbracketclass
    functionSourceFile: /src/lwan/src/lib/patterns.c
    functionUses: 0
    functionsReached:
    - uchar
    - match_class
    linkageType: ''
    returnType: int
    signature: int matchbracketclass(int c, const char *p, const char *ec)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: uchar
      Src: /src/lwan/src/lib/patterns.c:197,1
    - Dst: match_class
      Src: /src/lwan/src/lib/patterns.c:203,1
    - Dst: uchar
      Src: /src/lwan/src/lib/patterns.c:203,1
    - Dst: matchbracketclass
      Src: /src/lwan/src/lib/patterns.c:205,1
    - Dst: uchar
      Src: /src/lwan/src/lib/patterns.c:207,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - ms
    - s
    - p
    - ep
    argTypes:
    - struct match_state*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 190
    functionDepth: 2
    functionLinenumber: 190
    functionLinenumberEnd: 210
    functionName: singlematch
    functionSourceFile: /src/lwan/src/lib/patterns.c
    functionUses: 0
    functionsReached:
    - match_class
    - uchar
    - matchbracketclass
    linkageType: ''
    returnType: int
    signature: "int singlematch(struct match_state *ms, const char *s, const char
      *p,\n    const char *ep)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: match_error
      Src: /src/lwan/src/lib/patterns.c:216,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - ms
    - s
    - p
    argTypes:
    - struct match_state*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 237
    functionName: matchbalance
    functionSourceFile: /src/lwan/src/lib/patterns.c
    functionUses: 0
    functionsReached:
    - match_error
    linkageType: ''
    returnType: char
    signature: 'char *

      matchbalance(struct match_state *ms, const char *s, const char *p)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: singlematch
      Src: /src/lwan/src/lib/patterns.c:244,1
    - Dst: match
      Src: /src/lwan/src/lib/patterns.c:248,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - ms
    - s
    - p
    - ep
    argTypes:
    - struct match_state*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 239
    functionDepth: 3
    functionLinenumber: 239
    functionLinenumberEnd: 255
    functionName: max_expand
    functionSourceFile: /src/lwan/src/lib/patterns.c
    functionUses: 0
    functionsReached:
    - singlematch
    - match
    linkageType: ''
    returnType: char
    signature: 'char *

      max_expand(struct match_state *ms, const char *s, const char *p, const char
      *ep)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: match
      Src: /src/lwan/src/lib/patterns.c:261,1
    - Dst: singlematch
      Src: /src/lwan/src/lib/patterns.c:264,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - ms
    - s
    - p
    - ep
    argTypes:
    - struct match_state*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 257
    functionDepth: 3
    functionLinenumber: 257
    functionLinenumberEnd: 269
    functionName: min_expand
    functionSourceFile: /src/lwan/src/lib/patterns.c
    functionUses: 0
    functionsReached:
    - match
    - singlematch
    linkageType: ''
    returnType: char
    signature: 'char *

      min_expand(struct match_state *ms, const char *s, const char *p, const char
      *ep)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: match_error
      Src: /src/lwan/src/lib/patterns.c:278,1
    - Dst: match
      Src: /src/lwan/src/lib/patterns.c:285,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - ms
    - s
    - p
    - what
    argTypes:
    - struct match_state*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 271
    functionDepth: 1
    functionLinenumber: 271
    functionLinenumberEnd: 288
    functionName: start_capture
    functionSourceFile: /src/lwan/src/lib/patterns.c
    functionUses: 0
    functionsReached:
    - match_error
    - match
    linkageType: ''
    returnType: char
    signature: 'char *

      start_capture(struct match_state *ms, const char *s, const char *p, int what)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: capture_to_close
      Src: /src/lwan/src/lib/patterns.c:293,1
    - Dst: match
      Src: /src/lwan/src/lib/patterns.c:300,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - ms
    - s
    - p
    argTypes:
    - struct match_state*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 290
    functionDepth: 2
    functionLinenumber: 290
    functionLinenumberEnd: 303
    functionName: end_capture
    functionSourceFile: /src/lwan/src/lib/patterns.c
    functionUses: 0
    functionsReached:
    - capture_to_close
    - match
    linkageType: ''
    returnType: char
    signature: 'char *

      end_capture(struct match_state *ms, const char *s, const char *p)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: check_capture
      Src: /src/lwan/src/lib/patterns.c:309,1
    - Dst: memcmp
      Src: /src/lwan/src/lib/patterns.c:314,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - ms
    - s
    - l
    argTypes:
    - struct match_state*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 305
    functionDepth: 2
    functionLinenumber: 305
    functionLinenumberEnd: 318
    functionName: match_capture
    functionSourceFile: /src/lwan/src/lib/patterns.c
    functionUses: 0
    functionsReached:
    - check_capture
    - memcmp
    linkageType: ''
    returnType: char
    signature: 'char *

      match_capture(struct match_state *ms, const char *s, int l)'
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/patterns.c:326,1
    - Dst: match_error
      Src: /src/lwan/src/lib/patterns.c:327,1
    - Dst: start_capture
      Src: /src/lwan/src/lib/patterns.c:340,1
    - Dst: start_capture
      Src: /src/lwan/src/lib/patterns.c:342,1
    - Dst: end_capture
      Src: /src/lwan/src/lib/patterns.c:346,1
    - Dst: matchbalance
      Src: /src/lwan/src/lib/patterns.c:362,1
    - Dst: match_error
      Src: /src/lwan/src/lib/patterns.c:373,1
    - Dst: classend
      Src: /src/lwan/src/lib/patterns.c:378,1
    - Dst: matchbracketclass
      Src: /src/lwan/src/lib/patterns.c:383,1
    - Dst: uchar
      Src: /src/lwan/src/lib/patterns.c:383,1
    - Dst: matchbracketclass
      Src: /src/lwan/src/lib/patterns.c:385,1
    - Dst: uchar
      Src: /src/lwan/src/lib/patterns.c:385,1
    - Dst: match_capture
      Src: /src/lwan/src/lib/patterns.c:396,1
    - Dst: uchar
      Src: /src/lwan/src/lib/patterns.c:396,1
    - Dst: classend
      Src: /src/lwan/src/lib/patterns.c:412,1
    - Dst: singlematch
      Src: /src/lwan/src/lib/patterns.c:417,1
    - Dst: match_error
      Src: /src/lwan/src/lib/patterns.c:419,1
    - Dst: match
      Src: /src/lwan/src/lib/patterns.c:438,1
    - Dst: max_expand
      Src: /src/lwan/src/lib/patterns.c:455,1
    - Dst: min_expand
      Src: /src/lwan/src/lib/patterns.c:459,1
    CyclomaticComplexity: 42
    EdgeCount: 42
    ICount: 112
    argCount: 3
    argNames:
    - ms
    - s
    - p
    argTypes:
    - struct match_state*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 320
    functionDepth: 4
    functionLinenumber: 320
    functionLinenumberEnd: 474
    functionName: match
    functionSourceFile: /src/lwan/src/lib/patterns.c
    functionUses: 5
    functionsReached:
    - match_error
    - end_capture
    - matchbalance
    - uchar
    - match
    - match_capture
    - min_expand
    - classend
    - max_expand
    - start_capture
    - singlematch
    - UNLIKELY
    - matchbracketclass
    linkageType: ''
    returnType: char
    signature: 'char *

      match(struct match_state *ms, const char *s, const char *p)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memchr
      Src: /src/lwan/src/lib/patterns.c:492,1
    - Dst: memcmp
      Src: /src/lwan/src/lib/patterns.c:495,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 4
    argNames:
    - s1
    - l1
    - s2
    - l2
    argTypes:
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 476
    functionDepth: 0
    functionLinenumber: 476
    functionLinenumberEnd: 504
    functionName: lmemfind
    functionSourceFile: /src/lwan/src/lib/patterns.c
    functionUses: 0
    functionsReached:
    - memchr
    - memcmp
    linkageType: ''
    returnType: char
    signature: 'char *

      lmemfind(const char *s1, size_t l1, const char *s2, size_t l2)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: match_error
      Src: /src/lwan/src/lib/patterns.c:516,1
    - Dst: match_error
      Src: /src/lwan/src/lib/patterns.c:520,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 5
    argNames:
    - ms
    - i
    - s
    - e
    - sm
    argTypes:
    - struct match_state*
    - int
    - char*
    - char*
    - struct str_find*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 506
    functionDepth: 1
    functionLinenumber: 506
    functionLinenumberEnd: 526
    functionName: push_onecapture
    functionSourceFile: /src/lwan/src/lib/patterns.c
    functionUses: 0
    functionsReached:
    - match_error
    linkageType: ''
    returnType: int
    signature: "int push_onecapture(struct match_state *ms, int i, const char *s,\n
      \   const char *e, struct str_find *sm)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: push_onecapture
      Src: /src/lwan/src/lib/patterns.c:538,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 5
    argNames:
    - ms
    - s
    - e
    - sm
    - nsm
    argTypes:
    - struct match_state*
    - char*
    - char*
    - struct str_find*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 528
    functionDepth: 2
    functionLinenumber: 528
    functionLinenumberEnd: 543
    functionName: push_captures
    functionSourceFile: /src/lwan/src/lib/patterns.c
    functionUses: 0
    functionsReached:
    - push_onecapture
    linkageType: ''
    returnType: int
    signature: "int push_captures(struct match_state *ms, const char *s, const char
      *e,\n    struct str_find *sm, size_t nsm)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strpbrk
      Src: /src/lwan/src/lib/patterns.c:552,1
    - Dst: strlen
      Src: /src/lwan/src/lib/patterns.c:557,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - p
    - l
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 546
    functionDepth: 0
    functionLinenumber: 546
    functionLinenumberEnd: 562
    functionName: nospecials
    functionSourceFile: /src/lwan/src/lib/patterns.c
    functionUses: 0
    functionsReached:
    - strlen
    - strpbrk
    linkageType: ''
    returnType: int
    signature: int nospecials(const char *p, size_t l)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/lwan/src/lib/patterns.c:568,1
    - Dst: strlen
      Src: /src/lwan/src/lib/patterns.c:569,1
    - Dst: match_error
      Src: /src/lwan/src/lib/patterns.c:578,1
    - Dst: nospecials
      Src: /src/lwan/src/lib/patterns.c:581,1
    - Dst: lmemfind
      Src: /src/lwan/src/lib/patterns.c:583,1
    - Dst: match
      Src: /src/lwan/src/lib/patterns.c:612,1
    - Dst: push_captures
      Src: /src/lwan/src/lib/patterns.c:615,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 43
    argCount: 6
    argNames:
    - ms
    - pattern
    - string
    - sm
    - nsm
    - init
    argTypes:
    - struct match_state*
    - char*
    - char*
    - struct str_find*
    - size_t
    - off_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 564
    functionDepth: 5
    functionLinenumber: 564
    functionLinenumberEnd: 623
    functionName: str_find_aux
    functionSourceFile: /src/lwan/src/lib/patterns.c
    functionUses: 0
    functionsReached:
    - match_error
    - nospecials
    - strlen
    - push_captures
    - lmemfind
    - match
    linkageType: ''
    returnType: int
    signature: "int str_find_aux(struct match_state *ms, const char *pattern, const
      char *string,\n    struct str_find *sm, size_t nsm, off_t init)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/lwan/src/lib/patterns.c:632,1
    - Dst: memset
      Src: /src/lwan/src/lib/patterns.c:633,1
    - Dst: str_find_aux
      Src: /src/lwan/src/lib/patterns.c:635,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 5
    argNames:
    - string
    - pattern
    - sm
    - nsm
    - errstr
    argTypes:
    - char*
    - char*
    - struct str_find*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 625
    functionDepth: 6
    functionLinenumber: 625
    functionLinenumberEnd: 644
    functionName: str_find
    functionSourceFile: /src/lwan/src/lib/patterns.c
    functionUses: 2
    functionsReached:
    - str_find_aux
    - memset
    linkageType: ''
    returnType: int
    signature: "int str_find(const char *string, const char *pattern, struct str_find
      *sm,\n    size_t nsm, const char **errstr)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/lwan/src/lib/patterns.c:656,1
    - Dst: memset
      Src: /src/lwan/src/lib/patterns.c:657,1
    - Dst: memset
      Src: /src/lwan/src/lib/patterns.c:658,1
    - Dst: str_find_aux
      Src: /src/lwan/src/lib/patterns.c:660,1
    - Dst: calloc
      Src: /src/lwan/src/lib/patterns.c:667,1
    - Dst: strerror
      Src: /src/lwan/src/lib/patterns.c:668,1
    - Dst: strndup
      Src: /src/lwan/src/lib/patterns.c:677,1
    - Dst: strerror
      Src: /src/lwan/src/lib/patterns.c:679,1
    - Dst: str_match_free
      Src: /src/lwan/src/lib/patterns.c:680,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 4
    argNames:
    - string
    - pattern
    - m
    - errstr
    argTypes:
    - char*
    - char*
    - struct str_match*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 646
    functionDepth: 6
    functionLinenumber: 646
    functionLinenumberEnd: 687
    functionName: str_match
    functionSourceFile: /src/lwan/src/lib/patterns.c
    functionUses: 0
    functionsReached:
    - str_find_aux
    - strerror
    - calloc
    - str_match_free
    - strndup
    - memset
    linkageType: ''
    returnType: int
    signature: "int str_match(const char *string, const char *pattern, struct str_match
      *m,\n    const char **errstr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/lwan/src/lib/patterns.c:695,1
    - Dst: free
      Src: /src/lwan/src/lib/patterns.c:696,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - m
    argTypes:
    - struct str_match*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 689
    functionDepth: 0
    functionLinenumber: 689
    functionLinenumberEnd: 699
    functionName: str_match_free
    functionSourceFile: /src/lwan/src/lib/patterns.c
    functionUses: 1
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void str_match_free(struct str_match *m)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array_
    - ','
    - iter_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 62
    functionName: LWAN_ARRAY_FOREACH
    functionSourceFile: /src/lwan/src/lib/lwan-array.h
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LWAN_ARRAY_FOREACH(array_, iter_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array_
    - ','
    - iter_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 68
    functionName: LWAN_ARRAY_FOREACH_REVERSE
    functionSourceFile: /src/lwan/src/lib/lwan-array.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LWAN_ARRAY_FOREACH_REVERSE(array_, iter_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array_type_
    - ','
    - element_type_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 86
    functionName: DEFINE_ARRAY_TYPE
    functionSourceFile: /src/lwan/src/lib/lwan-array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFINE_ARRAY_TYPE(array_type_, element_type_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - array_type_
    - ','
    - element_type_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 105
    functionName: DEFINE_ARRAY_TYPE_INLINEFIRST
    functionSourceFile: /src/lwan/src/lib/lwan-array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFINE_ARRAY_TYPE_INLINEFIRST(array_type_, element_type_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - array_type_
    - ','
    - element_type_
    - ','
    - inline_storage_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 149
    functionName: DEFINE_ARRAY_TYPE_FUNCS
    functionSourceFile: /src/lwan/src/lib/lwan-array.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFINE_ARRAY_TYPE_FUNCS(array_type_, element_type_, inline_storage_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - array
    argTypes:
    - struct array_type_*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 157
    functionName: _len
    functionSourceFile: /src/lwan/src/lib/lwan-array.h
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: "size_t _len(            \\\n        const struct array_type_ *array)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/lwan/src/lib/missing.c:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - dest
    - src
    - len
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 43
    functionName: mempcpy
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 2
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void *mempcpy(void *dest, const void *src, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memchr
      Src: /src/lwan/src/lib/missing.c:53,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - s
    - c
    - n
    argTypes:
    - void*
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 59
    functionName: memrchr
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 0
    functionsReached:
    - memchr
    linkageType: ''
    returnType: void
    signature: void *memrchr(const void *s, int c, size_t n)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pipe
      Src: /src/lwan/src/lib/missing.c:67,1
    - Dst: fcntl
      Src: /src/lwan/src/lib/missing.c:71,1
    - Dst: fcntl
      Src: /src/lwan/src/lib/missing.c:72,1
    - Dst: close
      Src: /src/lwan/src/lib/missing.c:75,1
    - Dst: close
      Src: /src/lwan/src/lib/missing.c:76,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - pipefd
    - flags
    argTypes:
    - int[]
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 83
    functionName: pipe2
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 2
    functionsReached:
    - fcntl
    - close
    - pipe
    linkageType: ''
    returnType: int
    signature: int pipe2(int pipefd[2], int flags)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: accept
      Src: /src/lwan/src/lib/missing.c:89,1
    - Dst: fcntl
      Src: /src/lwan/src/lib/missing.c:108,1
    - Dst: close
      Src: /src/lwan/src/lib/missing.c:111,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 4
    argNames:
    - sock
    - addr
    - addrlen
    - flags
    argTypes:
    - int
    - struct sockaddr*
    - socklen_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 118
    functionName: accept4
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 1
    functionsReached:
    - fcntl
    - accept
    - close
    linkageType: ''
    returnType: int
    signature: int accept4(int sock, struct sockaddr *addr, socklen_t *addrlen, int
      flags)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/lwan/src/lib/missing.c:128,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - clk_id
    - ts
    argTypes:
    - clockid_t
    - struct timespec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 135
    functionName: clock_gettime
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 3
    functionsReached:
    - time
    linkageType: ''
    returnType: int
    signature: int clock_gettime(clockid_t clk_id, struct timespec *ts)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getpid
      Src: /src/lwan/src/lib/missing.c:147,1
    - Dst: getauxval
      Src: /src/lwan/src/lib/missing.c:154,1
    - Dst: strlen
      Src: /src/lwan/src/lib/missing.c:157,1
    - Dst: memcpy
      Src: /src/lwan/src/lib/missing.c:160,1
    - Dst: readlink
      Src: /src/lwan/src/lib/missing.c:167,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - pid
    - buffer
    - buffersize
    argTypes:
    - pid_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 179
    functionName: proc_pidpath
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 0
    functionsReached:
    - getpid
    - getauxval
    - readlink
    - strlen
    - memcpy
    linkageType: ''
    returnType: int
    signature: int proc_pidpath(pid_t pid, void *buffer, size_t buffersize)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getpid
      Src: /src/lwan/src/lib/missing.c:189,1
    - Dst: sysctl
      Src: /src/lwan/src/lib/missing.c:195,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/lib/missing.c:195,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - pid
    - buffer
    - buffersize
    argTypes:
    - pid_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 199
    functionName: proc_pidpath
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 0
    functionsReached:
    - getpid
    - N_ELEMENTS
    - sysctl
    linkageType: ''
    returnType: int
    signature: int proc_pidpath(pid_t pid, void *buffer, size_t buffersize)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: getpid
      Src: /src/lwan/src/lib/missing.c:207,1
    - Dst: dladdr
      Src: /src/lwan/src/lib/missing.c:213,1
    - Dst: realpath
      Src: /src/lwan/src/lib/missing.c:220,1
    - Dst: strlcpy
      Src: /src/lwan/src/lib/missing.c:225,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 3
    argNames:
    - pid
    - buffer
    - buffersize
    argTypes:
    - pid_t
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 231
    functionName: proc_pidpath
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 0
    functionsReached:
    - getpid
    - realpath
    - strlcpy
    - dladdr
    linkageType: ''
    returnType: int
    signature: int proc_pidpath(pid_t pid, void *buffer, size_t buffersize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/lwan/src/lib/missing.c:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 241
    functionName: gettid
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 1
    functionsReached:
    - syscall
    linkageType: ''
    returnType: pid_t
    signature: pid_t gettid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: thr_self
      Src: /src/lwan/src/lib/missing.c:251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 254
    functionName: gettid
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 1
    functionsReached:
    - thr_self
    linkageType: ''
    returnType: pid_t
    signature: pid_t gettid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/lwan/src/lib/missing.c:258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 258
    functionName: gettid
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 1
    functionsReached:
    - syscall
    linkageType: ''
    returnType: pid_t
    signature: pid_t gettid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_self
      Src: /src/lwan/src/lib/missing.c:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 260
    functionName: gettid
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 1
    functionsReached:
    - pthread_self
    linkageType: ''
    returnType: pid_t
    signature: pid_t gettid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getpid
      Src: /src/lwan/src/lib/missing.c:273,1
    - Dst: sysctl
      Src: /src/lwan/src/lib/missing.c:276,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/lib/missing.c:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - kp
    argTypes:
    - struct kinfo_proc*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 271
    functionDepth: 1
    functionLinenumber: 271
    functionLinenumberEnd: 277
    functionName: get_current_proc_info
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 0
    functionsReached:
    - getpid
    - N_ELEMENTS
    - sysctl
    linkageType: ''
    returnType: int
    signature: int get_current_proc_info(struct kinfo_proc *kp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_current_proc_info
      Src: /src/lwan/src/lib/missing.c:283,1
    - Dst: getuid
      Src: /src/lwan/src/lib/missing.c:284,1
    - Dst: geteuid
      Src: /src/lwan/src/lib/missing.c:285,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - ruid
    - euid
    - suid
    argTypes:
    - uid_t*
    - uid_t*
    - uid_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 279
    functionDepth: 2
    functionLinenumber: 279
    functionLinenumberEnd: 292
    functionName: getresuid
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 1
    functionsReached:
    - geteuid
    - get_current_proc_info
    - getuid
    linkageType: ''
    returnType: int
    signature: int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setreuid
      Src: /src/lwan/src/lib/missing.c:296,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ruid
    - euid
    - suid
    argTypes:
    - uid_t
    - uid_t
    - uid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 297
    functionName: setresuid
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 1
    functionsReached:
    - setreuid
    linkageType: ''
    returnType: int
    signature: int setresuid(uid_t ruid, uid_t euid, uid_t suid __attribute__((unused)))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setregid
      Src: /src/lwan/src/lib/missing.c:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - rgid
    - egid
    - sgid
    argTypes:
    - gid_t
    - gid_t
    - gid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 302
    functionName: setresgid
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 1
    functionsReached:
    - setregid
    linkageType: ''
    returnType: int
    signature: int setresgid(gid_t rgid, gid_t egid, gid_t sgid __attribute__((unused)))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_current_proc_info
      Src: /src/lwan/src/lib/missing.c:308,1
    - Dst: getgid
      Src: /src/lwan/src/lib/missing.c:309,1
    - Dst: getegid
      Src: /src/lwan/src/lib/missing.c:310,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - rgid
    - egid
    - sgid
    argTypes:
    - gid_t*
    - gid_t*
    - gid_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 304
    functionDepth: 2
    functionLinenumber: 304
    functionLinenumberEnd: 317
    functionName: getresgid
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 1
    functionsReached:
    - getegid
    - get_current_proc_info
    - getgid
    linkageType: ''
    returnType: int
    signature: int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mkstemp
      Src: /src/lwan/src/lib/missing.c:325,1
    - Dst: fcntl
      Src: /src/lwan/src/lib/missing.c:329,1
    - Dst: fcntl
      Src: /src/lwan/src/lib/missing.c:336,1
    - Dst: close
      Src: /src/lwan/src/lib/missing.c:342,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - tmpl
    - flags
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 344
    functionName: mkostemp
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 0
    functionsReached:
    - mkstemp
    - fcntl
    - close
    linkageType: ''
    returnType: int
    signature: int mkostemp(char *tmpl, int flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 3
    argNames:
    - a
    - b
    - out
    argTypes:
    - size_t
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 385
    functionName: umull_overflow
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool umull_overflow(size_t a, size_t b, size_t *out)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/missing.c:393,1
    - Dst: umull_overflow
      Src: /src/lwan/src/lib/missing.c:393,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/missing.c:397,1
    - Dst: free
      Src: /src/lwan/src/lib/missing.c:398,1
    - Dst: malloc
      Src: /src/lwan/src/lib/missing.c:399,1
    - Dst: realloc
      Src: /src/lwan/src/lib/missing.c:401,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - optr
    - nmemb
    - size
    argTypes:
    - void*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 390
    functionDepth: 1
    functionLinenumber: 390
    functionLinenumberEnd: 402
    functionName: reallocarray
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 1
    functionsReached:
    - realloc
    - free
    - umull_overflow
    - malloc
    - UNLIKELY
    linkageType: ''
    returnType: void
    signature: void *reallocarray(void *optr, size_t nmemb, size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: posix_fadvise
      Src: /src/lwan/src/lib/missing.c:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - fd
    - offset
    - count
    argTypes:
    - int
    - off_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 406
    functionDepth: 0
    functionLinenumber: 406
    functionLinenumberEnd: 418
    functionName: readahead
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 3
    functionsReached:
    - posix_fadvise
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t readahead(int fd, off_t offset, size_t count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getcwd
      Src: /src/lwan/src/lib/missing.c:429,1
    - Dst: strdup
      Src: /src/lwan/src/lib/missing.c:430,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 424
    functionDepth: 0
    functionLinenumber: 424
    functionLinenumberEnd: 431
    functionName: get_current_dir_name
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 1
    functionsReached:
    - strdup
    - getcwd
    linkageType: ''
    returnType: char
    signature: char *get_current_dir_name(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pledge
      Src: /src/lwan/src/lib/missing.c:444,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - header
    - data
    argTypes:
    - struct __user_cap_header_struct*
    - struct __user_cap_data_struct*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 435
    functionDepth: 0
    functionLinenumber: 435
    functionLinenumberEnd: 451
    functionName: capset
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 1
    functionsReached:
    - pledge
    linkageType: ''
    returnType: int
    signature: "int capset(struct __user_cap_header_struct *header,\n           struct
      __user_cap_data_struct *data)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fflush
      Src: /src/lwan/src/lib/missing.c:463,1
    - Dst: write
      Src: /src/lwan/src/lib/missing.c:466,1
    - Dst: fileno
      Src: /src/lwan/src/lib/missing.c:466,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 4
    argNames:
    - ptr
    - size
    - n
    - stream
    argTypes:
    - void*
    - size_t
    - size_t
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 455
    functionDepth: 0
    functionLinenumber: 455
    functionLinenumberEnd: 477
    functionName: fwrite_unlocked
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 1
    functionsReached:
    - fflush
    - fileno
    - write
    linkageType: ''
    returnType: size_t
    signature: size_t fwrite_unlocked(const void *ptr, size_t size, size_t n, FILE
      *stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - path
    - buf
    argTypes:
    - char*
    - struct statfs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 481
    functionDepth: 0
    functionLinenumber: 481
    functionLinenumberEnd: 488
    functionName: statfs
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int statfs(const char *path, struct statfs *buf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/lwan/src/lib/missing.c:495,1
    - Dst: open
      Src: /src/lwan/src/lib/missing.c:497,1
    - Dst: read
      Src: /src/lwan/src/lib/missing.c:501,1
    - Dst: close
      Src: /src/lwan/src/lib/missing.c:502,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - buffer
    - buffer_len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 491
    functionDepth: 0
    functionLinenumber: 491
    functionLinenumberEnd: 505
    functionName: lwan_getentropy_fallback
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 0
    functionsReached:
    - read
    - open
    - close
    linkageType: ''
    returnType: int
    signature: int lwan_getentropy_fallback(void *buffer, size_t buffer_len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/lwan/src/lib/missing.c:510,1
    - Dst: lwan_getentropy_fallback
      Src: /src/lwan/src/lib/missing.c:513,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - buffer
    - buffer_len
    - flags
    argTypes:
    - void*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 508
    functionDepth: 1
    functionLinenumber: 508
    functionLinenumberEnd: 516
    functionName: lwan_getentropy
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 1
    functionsReached:
    - lwan_getentropy_fallback
    - syscall
    linkageType: ''
    returnType: long int
    signature: long int lwan_getentropy(void *buffer, size_t buffer_len, int flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getentropy
      Src: /src/lwan/src/lib/missing.c:522,1
    - Dst: lwan_getentropy_fallback
      Src: /src/lwan/src/lib/missing.c:525,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - buffer
    - buffer_len
    - flags
    argTypes:
    - void*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 518
    functionDepth: 1
    functionLinenumber: 518
    functionLinenumberEnd: 526
    functionName: lwan_getentropy
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 1
    functionsReached:
    - getentropy
    - lwan_getentropy_fallback
    linkageType: ''
    returnType: long int
    signature: long int lwan_getentropy(void *buffer, size_t buffer_len, int flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_getentropy_fallback
      Src: /src/lwan/src/lib/missing.c:531,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - buffer
    - buffer_len
    - flags
    argTypes:
    - void*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 528
    functionDepth: 1
    functionLinenumber: 528
    functionLinenumberEnd: 532
    functionName: lwan_getentropy
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 1
    functionsReached:
    - lwan_getentropy_fallback
    linkageType: ''
    returnType: long int
    signature: long int lwan_getentropy(void *buffer, size_t buffer_len, int flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 535
    functionDepth: 0
    functionLinenumber: 535
    functionLinenumberEnd: 545
    functionName: isalpha_neutral
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int isalpha_neutral(char c)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: isalpha_neutral
      Src: /src/lwan/src/lib/missing.c:565,1
    - Dst: isalpha_neutral
      Src: /src/lwan/src/lib/missing.c:565,1
    - Dst: assert
      Src: /src/lwan/src/lib/missing.c:573,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 3
    argNames:
    - a
    - b
    - len
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts:
    - condition: ((ssize_t)len < 0)
      pos:
        line_end: 572
        line_start: 572
        source_file: /src/lwan/src/lib/missing.c
    constantsTouched: []
    func_position:
      end: 575
      start: 547
    functionDepth: 1
    functionLinenumber: 547
    functionLinenumberEnd: 575
    functionName: strcaseequal_neutral_len
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 0
    functionsReached:
    - isalpha_neutral
    - assert
    linkageType: ''
    returnType: bool
    signature: bool strcaseequal_neutral_len(const char *a, const char *b, size_t
      len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcaseequal_neutral_len
      Src: /src/lwan/src/lib/missing.c:579,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 577
    functionDepth: 2
    functionLinenumber: 577
    functionLinenumberEnd: 580
    functionName: strcaseequal_neutral
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 3
    functionsReached:
    - strcaseequal_neutral_len
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE strcaseequal_neutral(const char *a, const char *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/missing.c:584,1
    - Dst: strcaseequal_neutral
      Src: /src/lwan/src/lib/missing.c:584,1
    - Dst: assert
      Src: /src/lwan/src/lib/missing.c:585,1
    - Dst: strcaseequal_neutral
      Src: /src/lwan/src/lib/missing.c:585,1
    - Dst: assert
      Src: /src/lwan/src/lib/missing.c:586,1
    - Dst: strcaseequal_neutral
      Src: /src/lwan/src/lib/missing.c:586,1
    - Dst: assert
      Src: /src/lwan/src/lib/missing.c:588,1
    - Dst: strcaseequal_neutral
      Src: /src/lwan/src/lib/missing.c:588,1
    - Dst: assert
      Src: /src/lwan/src/lib/missing.c:589,1
    - Dst: strcaseequal_neutral
      Src: /src/lwan/src/lib/missing.c:589,1
    - Dst: assert
      Src: /src/lwan/src/lib/missing.c:590,1
    - Dst: strcaseequal_neutral
      Src: /src/lwan/src/lib/missing.c:590,1
    - Dst: assert
      Src: /src/lwan/src/lib/missing.c:592,1
    - Dst: strcaseequal_neutral_len
      Src: /src/lwan/src/lib/missing.c:592,1
    - Dst: assert
      Src: /src/lwan/src/lib/missing.c:593,1
    - Dst: strcaseequal_neutral_len
      Src: /src/lwan/src/lib/missing.c:593,1
    - Dst: assert
      Src: /src/lwan/src/lib/missing.c:594,1
    - Dst: strcaseequal_neutral_len
      Src: /src/lwan/src/lib/missing.c:594,1
    - Dst: assert
      Src: /src/lwan/src/lib/missing.c:595,1
    - Dst: strcaseequal_neutral_len
      Src: /src/lwan/src/lib/missing.c:595,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (strcaseequal_neutral("LWAN", "lwan") == true)
      pos:
        line_end: 583
        line_start: 583
        source_file: /src/lwan/src/lib/missing.c
    - condition: (strcaseequal_neutral("SomE-HeaDeP", "some-header") == false)
      pos:
        line_end: 587
        line_start: 587
        source_file: /src/lwan/src/lib/missing.c
    - condition: (strcaseequal_neutral("LwAn", "lWaM") == false)
      pos:
        line_end: 589
        line_start: 589
        source_file: /src/lwan/src/lib/missing.c
    - condition: '(strcaseequal_neutral_len("Host: localhost:8080", "Host", 4) ==
        true)'
      pos:
        line_end: 591
        line_start: 591
        source_file: /src/lwan/src/lib/missing.c
    - condition: '(strcaseequal_neutral_len("Host: something-else:443", "Host: localhost:8080",
        4) == true)'
      pos:
        line_end: 594
        line_start: 594
        source_file: /src/lwan/src/lib/missing.c
    - condition: (strcaseequal_neutral("SomE-HeaDer", "some-header") == true)
      pos:
        line_end: 585
        line_start: 585
        source_file: /src/lwan/src/lib/missing.c
    - condition: (strcaseequal_neutral("LwAn", "lWaN") == true)
      pos:
        line_end: 584
        line_start: 584
        source_file: /src/lwan/src/lib/missing.c
    - condition: (strcaseequal_neutral("LwAN", "lwam") == false)
      pos:
        line_end: 588
        line_start: 588
        source_file: /src/lwan/src/lib/missing.c
    - condition: '(strcaseequal_neutral_len("Host", "Host: localhost:8080", 4) ==
        true)'
      pos:
        line_end: 592
        line_start: 592
        source_file: /src/lwan/src/lib/missing.c
    - condition: '(strcaseequal_neutral_len("Host", "Hosh: not-localhost:1234", 4)
        == false)'
      pos:
        line_end: 593
        line_start: 593
        source_file: /src/lwan/src/lib/missing.c
    constantsTouched: []
    func_position:
      end: 601
      start: 582
    functionDepth: 3
    functionLinenumber: 582
    functionLinenumberEnd: 601
    functionName: LWAN_SELF_TEST
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 1
    functionsReached:
    - strcaseequal_neutral_len
    - strcaseequal_neutral
    - assert
    linkageType: ''
    returnType: void
    signature: void LWAN_SELF_TEST(strcaseequal_neutral)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mempcpy
      Src: /src/lwan/src/lib/missing.c:607,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - dst
    - src
    - sz
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 604
    functionDepth: 1
    functionLinenumber: 604
    functionLinenumberEnd: 610
    functionName: stpncpy
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 0
    functionsReached:
    - mempcpy
    linkageType: ''
    returnType: char
    signature: char *stpncpy(char *restrict dst, const char *restrict src, size_t
      sz)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stpncpy
      Src: /src/lwan/src/lib/missing.c:614,1
    - Dst: strlen
      Src: /src/lwan/src/lib/missing.c:614,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dst
    - src
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 612
    functionDepth: 2
    functionLinenumber: 612
    functionLinenumberEnd: 615
    functionName: stpcpy
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 1
    functionsReached:
    - strlen
    - stpncpy
    linkageType: ''
    returnType: char
    signature: char *stpcpy(char *restrict dst, const char *restrict src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: prctl
      Src: /src/lwan/src/lib/missing.c:626,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 3
    argNames:
    - ptr
    - size
    - name
    argTypes:
    - void*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 622
    functionDepth: 0
    functionLinenumber: 622
    functionLinenumberEnd: 629
    functionName: set_vma_anon_name
    functionSourceFile: /src/lwan/src/lib/missing.c
    functionUses: 4
    functionsReached:
    - prctl
    linkageType: ''
    returnType: void
    signature: void set_vma_anon_name(const void *ptr, size_t size, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 77
    functionName: LWAN_HANDLER_ROUTE
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LWAN_HANDLER_ROUTE(brew_coffee, NULL /* do not autodetect this
      route */)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: streq
      Src: /src/lwan/src/lib/lwan.c:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 90
    functionName: find_handler
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 0
    functionsReached:
    - streq
    linkageType: ''
    returnType: void
    signature: void *find_handler(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: streq
      Src: /src/lwan/src/lib/lwan.c:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 87
    functionName: LWAN_SECTION_FOREACH
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 0
    functionsReached:
    - streq
    linkageType: ''
    returnType: void
    signature: void LWAN_SECTION_FOREACH(lwan_handler, handler)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: streq
      Src: /src/lwan/src/lib/lwan.c:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 103
    functionName: find_module
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 0
    functionsReached:
    - streq
    linkageType: ''
    returnType: struct lwan_module
    signature: struct lwan_module *find_module(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: streq
      Src: /src/lwan/src/lib/lwan.c:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 100
    functionName: LWAN_SECTION_FOREACH
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 0
    functionsReached:
    - streq
    linkageType: ''
    returnType: void
    signature: void LWAN_SECTION_FOREACH(lwan_module, module)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: struct lwan_module*::destroy
      Src: /src/lwan/src/lib/lwan.c:113,1
    - Dst: hash_unref
      Src: /src/lwan/src/lib/lwan.c:115,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan.c:118,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan.c:119,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan.c:120,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan.c:121,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 122
    functionName: destroy_urlmap
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 0
    functionsReached:
    - struct lwan_module*::destroy
    - free
    - hash_unref
    linkageType: ''
    returnType: void
    signature: void destroy_urlmap(void *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan.c:127,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan.c:130,1
    - Dst: memcpy
      Src: /src/lwan/src/lib/lwan.c:132,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan.c:134,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan.c:136,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan.c:138,1
    - Dst: lwan_trie_add
      Src: /src/lwan/src/lib/lwan.c:139,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - t
    - prefix
    - map
    argTypes:
    - struct lwan_trie*
    - char*
    - struct lwan_url_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 124
    functionDepth: 3
    functionLinenumber: 124
    functionLinenumberEnd: 142
    functionName: add_url_map
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 0
    functionsReached:
    - strdup
    - memcpy
    - lwan_log_critical_perror
    - strlen
    - lwan_trie_add
    - malloc
    linkageType: ''
    returnType: struct lwan_url_map
    signature: "struct lwan_url_map *add_url_map(struct lwan_trie *t, const char *prefix,\n
      \                                       const struct lwan_url_map *map)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strcaseequal_neutral
      Src: /src/lwan/src/lib/lwan.c:149,1
    - Dst: strcaseequal_neutral
      Src: /src/lwan/src/lib/lwan.c:151,1
    - Dst: strcaseequal_neutral
      Src: /src/lwan/src/lib/lwan.c:153,1
    - Dst: strcaseequal_neutral
      Src: /src/lwan/src/lib/lwan.c:155,1
    - Dst: strcaseequal_neutral
      Src: /src/lwan/src/lib/lwan.c:157,1
    - Dst: strcaseequal_neutral
      Src: /src/lwan/src/lib/lwan.c:159,1
    - Dst: strcaseequal_neutral_len
      Src: /src/lwan/src/lib/lwan.c:161,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 144
    functionDepth: 3
    functionLinenumber: 144
    functionLinenumberEnd: 166
    functionName: can_override_header
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 0
    functionsReached:
    - strcaseequal_neutral_len
    - strcaseequal_neutral
    linkageType: ''
    returnType: bool
    signature: bool can_override_header(const char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan.c:174,1
    - Dst: lwan_strbuf_init
      Src: /src/lwan/src/lib/lwan.c:176,1
    - Dst: can_override_header
      Src: /src/lwan/src/lib/lwan.c:179,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan.c:180,1
    - Dst: strcaseequal_neutral
      Src: /src/lwan/src/lib/lwan.c:182,1
    - Dst: lwan_strbuf_append_printf
      Src: /src/lwan/src/lib/lwan.c:185,1
    - Dst: lwan_strbuf_append_strz
      Src: /src/lwan/src/lib/lwan.c:191,1
    - Dst: lwan_strbuf_append_strz
      Src: /src/lwan/src/lib/lwan.c:193,1
    - Dst: lwan_strbuf_to_value
      Src: /src/lwan/src/lib/lwan.c:195,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - l
    - kv
    argTypes:
    - struct lwan*
    - struct lwan_key_value*
    assertStmts:
    - condition: (l)
      pos:
        line_end: 173
        line_start: 173
        source_file: /src/lwan/src/lib/lwan.c
    constantsTouched: []
    func_position:
      end: 196
      start: 168
    functionDepth: 4
    functionLinenumber: 168
    functionLinenumberEnd: 196
    functionName: build_response_headers
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_init
    - lwan_strbuf_append_strz
    - lwan_log_warning
    - lwan_strbuf_append_printf
    - assert
    - strcaseequal_neutral
    - lwan_strbuf_to_value
    - can_override_header
    linkageType: ''
    returnType: void
    signature: "void build_response_headers(struct lwan *l,\n                                   const
      struct lwan_key_value *kv)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lwan_key_value_array_init
      Src: /src/lwan/src/lib/lwan.c:205,1
    - Dst: config_read_line
      Src: /src/lwan/src/lib/lwan.c:207,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:210,1
    - Dst: lwan_key_value_array_append
      Src: /src/lwan/src/lib/lwan.c:215,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan.c:217,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan.c:221,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan.c:223,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan.c:227,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan.c:229,1
    - Dst: lwan_key_value_array_append
      Src: /src/lwan/src/lib/lwan.c:235,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan.c:237,1
    - Dst: build_response_headers
      Src: /src/lwan/src/lib/lwan.c:244,1
    - Dst: lwan_key_value_array_get_array
      Src: /src/lwan/src/lib/lwan.c:244,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:249,1
    - Dst: LWAN_ARRAY_FOREACH
      Src: /src/lwan/src/lib/lwan.c:252,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan.c:253,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan.c:254,1
    - Dst: lwan_key_value_array_reset
      Src: /src/lwan/src/lib/lwan.c:256,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 42
    argCount: 2
    argNames:
    - c
    - lwan
    argTypes:
    - struct config*
    - struct lwan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 198
    functionDepth: 5
    functionLinenumber: 198
    functionLinenumberEnd: 257
    functionName: parse_global_headers
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 0
    functionsReached:
    - strdup
    - lwan_key_value_array_append
    - free
    - lwan_key_value_array_get_array
    - lwan_log_critical_perror
    - lwan_key_value_array_init
    - lwan_key_value_array_reset
    - build_response_headers
    - config_read_line
    - LWAN_ARRAY_FOREACH
    - config_error
    linkageType: ''
    returnType: void
    signature: "void parse_global_headers(struct config *c,\n                                 struct
      lwan *lwan)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: streq
      Src: /src/lwan/src/lib/lwan.c:263,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:264,1
    - Dst: memset
      Src: /src/lwan/src/lib/lwan.c:268,1
    - Dst: config_read_line
      Src: /src/lwan/src/lib/lwan.c:270,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan.c:273,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan.c:274,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan.c:275,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan.c:276,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan.c:277,1
    - Dst: realpath
      Src: /src/lwan/src/lib/lwan.c:278,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:280,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:285,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan.c:290,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan.c:292,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:299,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan.c:302,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan.c:303,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 3
    argNames:
    - c
    - l
    - url_map
    argTypes:
    - struct config*
    - struct config_line*
    - struct lwan_url_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 259
    functionDepth: 4
    functionLinenumber: 259
    functionLinenumberEnd: 304
    functionName: parse_listener_prefix_authorization
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 0
    functionsReached:
    - strdup
    - free
    - realpath
    - memset
    - config_read_line
    - streq
    - config_error
    linkageType: ''
    returnType: void
    signature: "void parse_listener_prefix_authorization(struct config *c,\n                                                const
      struct config_line *l,\n                                                struct
      lwan_url_map *url_map)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - module
    argTypes:
    - struct lwan_module*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 317
    functionName: get_module_name
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *get_module_name(const struct lwan_module *module)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 314
    functionName: LWAN_SECTION_FOREACH
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void LWAN_SECTION_FOREACH(lwan_module, iter)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: hash_str_new
      Src: /src/lwan/src/lib/lwan.c:326,1
    - Dst: strdupa
      Src: /src/lwan/src/lib/lwan.c:327,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan.c:331,1
    - Dst: config_isolate_section
      Src: /src/lwan/src/lib/lwan.c:333,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:335,1
    - Dst: config_read_line
      Src: /src/lwan/src/lib/lwan.c:339,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan.c:342,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan.c:343,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan.c:346,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan.c:348,1
    - Dst: hash_add
      Src: /src/lwan/src/lib/lwan.c:350,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan.c:355,1
    - Dst: parse_listener_prefix_authorization
      Src: /src/lwan/src/lib/lwan.c:356,1
    - Dst: config_skip_section
      Src: /src/lwan/src/lib/lwan.c:357,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:358,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:368,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan.c:372,1
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan.c:382,1
    - Dst: get_module_name
      Src: /src/lwan/src/lib/lwan.c:383,1
    - Dst: hash_get_count
      Src: /src/lwan/src/lib/lwan.c:383,1
    - Dst: struct lwan_module*::create_from_hash
      Src: /src/lwan/src/lib/lwan.c:385,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:387,1
    - Dst: struct lwan_module*::parse_conf
      Src: /src/lwan/src/lib/lwan.c:391,1
    - Dst: config_last_error
      Src: /src/lwan/src/lib/lwan.c:392,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:394,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan.c:401,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:402,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan.c:405,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:406,1
    - Dst: add_url_map
      Src: /src/lwan/src/lib/lwan.c:410,1
    - Dst: hash_unref
      Src: /src/lwan/src/lib/lwan.c:413,1
    - Dst: config_close
      Src: /src/lwan/src/lib/lwan.c:414,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 79
    argCount: 5
    argNames:
    - c
    - l
    - lwan
    - module
    - handler
    argTypes:
    - struct config*
    - struct config_line*
    - struct lwan*
    - struct lwan_module*
    - void*
    assertStmts:
    - condition: ((handler && !module) || (!handler && module))
      pos:
        line_end: 371
        line_start: 371
        source_file: /src/lwan/src/lib/lwan.c
    constantsTouched: []
    func_position:
      end: 415
      start: 319
    functionDepth: 5
    functionLinenumber: 319
    functionLinenumberEnd: 415
    functionName: parse_listener_prefix
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 0
    functionsReached:
    - config_isolate_section
    - struct lwan_module*::create_from_hash
    - lwan_log_critical
    - strdupa
    - config_skip_section
    - assert
    - hash_str_new
    - config_error
    - hash_get_count
    - hash_add
    - streq
    - strdup
    - lwan_log_debug
    - config_last_error
    - parse_listener_prefix_authorization
    - UNLIKELY
    - get_module_name
    - hash_unref
    - config_close
    - add_url_map
    - struct lwan_module*::parse_conf
    - config_read_line
    linkageType: ''
    returnType: void
    signature: "void parse_listener_prefix(struct config *c,\n                                  const
      struct config_line *l,\n                                  struct lwan *lwan,\n
      \                                 const struct lwan_module *module,\n                                  void
      *handler)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: add_url_map
      Src: /src/lwan/src/lib/lwan.c:419,1
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan.c:422,1
    - Dst: get_module_name
      Src: /src/lwan/src/lib/lwan.c:423,1
    - Dst: struct lwan_url_map*::module::create
      Src: /src/lwan/src/lib/lwan.c:425,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan.c:427,1
    - Dst: get_module_name
      Src: /src/lwan/src/lib/lwan.c:428,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - l
    - map
    argTypes:
    - struct lwan*
    - struct lwan_url_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 417
    functionDepth: 4
    functionLinenumber: 417
    functionLinenumberEnd: 436
    functionName: register_url_map
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 0
    functionsReached:
    - lwan_log_critical
    - add_url_map
    - struct lwan_url_map*::module::create
    - lwan_log_debug
    - get_module_name
    linkageType: ''
    returnType: void
    signature: void register_url_map(struct lwan *l, const struct lwan_url_map *map)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_trie_destroy
      Src: /src/lwan/src/lib/lwan.c:440,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan.c:441,1
    - Dst: lwan_trie_init
      Src: /src/lwan/src/lib/lwan.c:441,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan.c:442,1
    - Dst: register_url_map
      Src: /src/lwan/src/lib/lwan.c:445,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - l
    - map
    argTypes:
    - struct lwan*
    - struct lwan_url_map*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 438
    functionDepth: 5
    functionLinenumber: 438
    functionLinenumberEnd: 446
    functionName: lwan_set_url_map
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 4
    functionsReached:
    - lwan_trie_init
    - lwan_trie_destroy
    - lwan_log_critical_perror
    - register_url_map
    - UNLIKELY
    linkageType: ''
    returnType: void
    signature: void lwan_set_url_map(struct lwan *l, const struct lwan_url_map *map)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lwan_trie_destroy
      Src: /src/lwan/src/lib/lwan.c:453,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan.c:454,1
    - Dst: lwan_trie_init
      Src: /src/lwan/src/lib/lwan.c:454,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan.c:455,1
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan.c:461,1
    - Dst: register_url_map
      Src: /src/lwan/src/lib/lwan.c:467,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct lwan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 448
    functionDepth: 5
    functionLinenumber: 448
    functionLinenumberEnd: 469
    functionName: lwan_detect_url_map
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 2
    functionsReached:
    - lwan_trie_init
    - lwan_trie_destroy
    - lwan_log_debug
    - lwan_log_critical_perror
    - register_url_map
    - UNLIKELY
    linkageType: ''
    returnType: void
    signature: void lwan_detect_url_map(struct lwan *l)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan.c:461,1
    - Dst: register_url_map
      Src: /src/lwan/src/lib/lwan.c:467,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 457
    functionDepth: 5
    functionLinenumber: 457
    functionLinenumberEnd: 468
    functionName: LWAN_SECTION_FOREACH
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 0
    functionsReached:
    - lwan_log_debug
    - register_url_map
    linkageType: ''
    returnType: void
    signature: void LWAN_SECTION_FOREACH(lwan_handler, iter)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: proc_pidpath
      Src: /src/lwan/src/lib/lwan.c:475,1
    - Dst: getpid
      Src: /src/lwan/src/lib/lwan.c:475,1
    - Dst: strrchr
      Src: /src/lwan/src/lib/lwan.c:478,1
    - Dst: snprintf
      Src: /src/lwan/src/lib/lwan.c:481,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 2
    argNames:
    - path_buf
    - path_buf_len
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 471
    functionDepth: 1
    functionLinenumber: 471
    functionLinenumberEnd: 489
    functionName: lwan_get_config_path
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 1
    functionsReached:
    - getpid
    - proc_pidpath
    - snprintf
    - strrchr
    linkageType: ''
    returnType: char
    signature: char *lwan_get_config_path(char *path_buf, size_t path_buf_len)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:494,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan.c:498,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:500,1
    - Dst: config_read_line
      Src: /src/lwan/src/lib/lwan.c:507,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:511,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:513,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:516,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan.c:519,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan.c:520,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan.c:521,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan.c:523,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan.c:524,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan.c:525,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan.c:526,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan.c:528,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan.c:529,1
    - Dst: parse_bool
      Src: /src/lwan/src/lib/lwan.c:530,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:532,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:537,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 42
    argCount: 3
    argNames:
    - conf
    - line
    - lwan
    argTypes:
    - struct config*
    - struct config_line*
    - struct lwan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 491
    functionDepth: 4
    functionLinenumber: 491
    functionLinenumberEnd: 538
    functionName: parse_tls_listener
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 0
    functionsReached:
    - parse_bool
    - strdup
    - free
    - lwan_log_critical
    - config_read_line
    - streq
    - config_error
    linkageType: ''
    returnType: void
    signature: void parse_tls_listener(struct config *conf, const struct config_line
      *line, struct lwan *lwan)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strdupa
      Src: /src/lwan/src/lib/lwan.c:544,1
    - Dst: strncmp
      Src: /src/lwan/src/lib/lwan.c:547,1
    - Dst: lwan_socket_parse_address
      Src: /src/lwan/src/lib/lwan.c:550,1
    - Dst: parse_int
      Src: /src/lwan/src/lib/lwan.c:551,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan.c:554,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan.c:555,1
    - Dst: lwan_straitjacket_allow_bind
      Src: /src/lwan/src/lib/lwan.c:558,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan.c:559,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan.c:560,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - listener
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 541
    functionDepth: 4
    functionLinenumber: 541
    functionLinenumberEnd: 563
    functionName: allow_bind_for_listener
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 0
    functionsReached:
    - parse_int
    - lwan_log_critical
    - __builtin_unreachable
    - strdupa
    - lwan_straitjacket_allow_bind
    - strncmp
    - lwan_socket_parse_address
    linkageType: ''
    returnType: void
    signature: void allow_bind_for_listener(const char *listener)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan.c:569,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:571,1
    - Dst: config_read_line
      Src: /src/lwan/src/lib/lwan.c:575,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:578,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:581,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:588,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - c
    - l
    - lwan
    argTypes:
    - struct config*
    - struct config_line*
    - struct lwan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 566
    functionDepth: 4
    functionLinenumber: 566
    functionLinenumberEnd: 589
    functionName: parse_listener
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 0
    functionsReached:
    - strdup
    - config_error
    - config_read_line
    linkageType: ''
    returnType: void
    signature: void parse_listener(struct config *c, const struct config_line *l,
      struct lwan *lwan)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: config_read_line
      Src: /src/lwan/src/lib/lwan.c:594,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:597,1
    - Dst: find_handler
      Src: /src/lwan/src/lib/lwan.c:603,1
    - Dst: parse_listener_prefix
      Src: /src/lwan/src/lib/lwan.c:605,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:609,1
    - Dst: find_module
      Src: /src/lwan/src/lib/lwan.c:613,1
    - Dst: parse_listener_prefix
      Src: /src/lwan/src/lib/lwan.c:615,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:619,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:626,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 3
    argNames:
    - c
    - l
    - lwan
    argTypes:
    - struct config*
    - struct config_line*
    - struct lwan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 591
    functionDepth: 6
    functionLinenumber: 591
    functionLinenumberEnd: 627
    functionName: parse_site
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 0
    functionsReached:
    - find_module
    - find_handler
    - config_read_line
    - parse_listener_prefix
    - config_error
    linkageType: ''
    returnType: void
    signature: void parse_site(struct config *c, const struct config_line *l, struct
      lwan *lwan)
  - BBCount: 39
    BranchProfiles: []
    Callsites:
    - Dst: lwan_get_config_path
      Src: /src/lwan/src/lib/lwan.c:639,1
    - Dst: lwan_log_info
      Src: /src/lwan/src/lib/lwan.c:640,1
    - Dst: config_open
      Src: /src/lwan/src/lib/lwan.c:642,1
    - Dst: lwan_trie_init
      Src: /src/lwan/src/lib/lwan.c:646,1
    - Dst: config_read_line
      Src: /src/lwan/src/lib/lwan.c:649,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan.c:652,1
    - Dst: parse_long
      Src: /src/lwan/src/lib/lwan.c:653,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan.c:655,1
    - Dst: parse_bool
      Src: /src/lwan/src/lib/lwan.c:657,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan.c:658,1
    - Dst: parse_bool
      Src: /src/lwan/src/lib/lwan.c:660,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan.c:661,1
    - Dst: parse_bool
      Src: /src/lwan/src/lib/lwan.c:663,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan.c:664,1
    - Dst: parse_time_period
      Src: /src/lwan/src/lib/lwan.c:666,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan.c:667,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan.c:668,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan.c:669,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan.c:670,1
    - Dst: parse_long
      Src: /src/lwan/src/lib/lwan.c:672,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:674,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan.c:677,1
    - Dst: parse_long
      Src: /src/lwan/src/lib/lwan.c:678,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:682,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan.c:685,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan.c:694,1
    - Dst: parse_long
      Src: /src/lwan/src/lib/lwan.c:695,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:699,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:701,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan.c:707,1
    - Dst: parse_long
      Src: /src/lwan/src/lib/lwan.c:708,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:712,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:714,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan.c:719,1
    - Dst: parse_long
      Src: /src/lwan/src/lib/lwan.c:720,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:724,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:726,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan.c:730,1
    - Dst: strstr
      Src: /src/lwan/src/lib/lwan.c:733,1
    - Dst: strstr
      Src: /src/lwan/src/lib/lwan.c:736,1
    - Dst: strstr
      Src: /src/lwan/src/lib/lwan.c:737,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:743,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan.c:747,1
    - Dst: parse_site
      Src: /src/lwan/src/lib/lwan.c:749,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:752,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan.c:754,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan.c:754,1
    - Dst: lwan_straitjacket_enforce_from_config
      Src: /src/lwan/src/lib/lwan.c:755,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan.c:756,1
    - Dst: parse_global_headers
      Src: /src/lwan/src/lib/lwan.c:757,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan.c:758,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:760,1
    - Dst: parse_listener
      Src: /src/lwan/src/lib/lwan.c:762,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan.c:765,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:767,1
    - Dst: parse_tls_listener
      Src: /src/lwan/src/lib/lwan.c:769,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:773,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan.c:777,1
    - Dst: config_last_error
      Src: /src/lwan/src/lib/lwan.c:781,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan.c:782,1
    - Dst: config_cur_line
      Src: /src/lwan/src/lib/lwan.c:783,1
    - Dst: config_last_error
      Src: /src/lwan/src/lib/lwan.c:783,1
    - Dst: lwan_trie_destroy
      Src: /src/lwan/src/lib/lwan.c:784,1
    - Dst: config_close
      Src: /src/lwan/src/lib/lwan.c:787,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 133
    argCount: 2
    argNames:
    - lwan
    - path
    argTypes:
    - struct lwan*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 629
    functionDepth: 7
    functionLinenumber: 629
    functionLinenumberEnd: 790
    functionName: setup_from_config
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 0
    functionsReached:
    - config_cur_line
    - lwan_trie_init
    - free
    - parse_listener
    - lwan_log_critical
    - config_error
    - parse_tls_listener
    - lwan_trie_destroy
    - strstr
    - lwan_get_config_path
    - streq
    - parse_bool
    - strdup
    - parse_site
    - config_last_error
    - parse_global_headers
    - parse_long
    - config_close
    - lwan_log_info
    - lwan_log_warning
    - lwan_straitjacket_enforce_from_config
    - parse_time_period
    - config_open
    - config_read_line
    linkageType: ''
    returnType: bool
    signature: bool setup_from_config(struct lwan *lwan, const char *path)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setup_from_config
      Src: /src/lwan/src/lib/lwan.c:795,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan.c:797,1
    - Dst: lwan_log_init
      Src: /src/lwan/src/lib/lwan.c:802,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - l
    - config
    argTypes:
    - struct lwan*
    - struct lwan_config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 808
      start: 792
    functionDepth: 8
    functionLinenumber: 792
    functionLinenumberEnd: 808
    functionName: try_setup_from_config
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 0
    functionsReached:
    - lwan_log_init
    - lwan_log_critical
    - setup_from_config
    linkageType: ''
    returnType: void
    signature: "void try_setup_from_config(struct lwan *l,\n                                  const
      struct lwan_config *config)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: getrlimit
      Src: /src/lwan/src/lib/lwan.c:814,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan.c:815,1
    - Dst: LWAN_MIN
      Src: /src/lwan/src/lib/lwan.c:833,1
    - Dst: setrlimit
      Src: /src/lwan/src/lib/lwan.c:836,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan.c:837,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan.c:846,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct lwan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 853
      start: 810
    functionDepth: 1
    functionLinenumber: 810
    functionLinenumberEnd: 853
    functionName: setup_open_file_count_limits
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 0
    functionsReached:
    - getrlimit
    - lwan_log_critical
    - LWAN_MIN
    - setrlimit
    - lwan_log_perror
    linkageType: ''
    returnType: rlim_t
    signature: rlim_t setup_open_file_count_limits(struct lwan *l)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_aligned_alloc
      Src: /src/lwan/src/lib/lwan.c:859,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan.c:860,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan.c:861,1
    - Dst: memset
      Src: /src/lwan/src/lib/lwan.c:863,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - l
    - max_open_files
    argTypes:
    - struct lwan*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 855
    functionDepth: 1
    functionLinenumber: 855
    functionLinenumberEnd: 864
    functionName: allocate_connections
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 0
    functionsReached:
    - lwan_log_critical_perror
    - memset
    - lwan_aligned_alloc
    - UNLIKELY
    linkageType: ''
    returnType: void
    signature: void allocate_connections(struct lwan *l, size_t max_open_files)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sysconf
      Src: /src/lwan/src/lib/lwan.c:868,1
    - Dst: sysconf
      Src: /src/lwan/src/lib/lwan.c:869,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan.c:872,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan.c:878,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct lwan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 866
    functionDepth: 1
    functionLinenumber: 866
    functionLinenumberEnd: 886
    functionName: get_number_of_cpus
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 0
    functionsReached:
    - sysconf
    - lwan_log_warning
    linkageType: ''
    returnType: void
    signature: void get_number_of_cpus(struct lwan *l)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_init_with_config
      Src: /src/lwan/src/lib/lwan.c:888,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct lwan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 888
    functionDepth: 1
    functionLinenumber: 888
    functionLinenumberEnd: 888
    functionName: lwan_init
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 8
    functionsReached:
    - lwan_init_with_config
    linkageType: ''
    returnType: void
    signature: void lwan_init(struct lwan *l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 890
    functionDepth: 0
    functionLinenumber: 890
    functionLinenumberEnd: 893
    functionName: lwan_get_default_config
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct lwan_config
    signature: struct lwan_config *lwan_get_default_config(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan.c:897,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 898
      start: 895
    functionDepth: 0
    functionLinenumber: 895
    functionLinenumberEnd: 898
    functionName: dup_or_null
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 0
    functionsReached:
    - strdup
    linkageType: ''
    returnType: char
    signature: char *dup_or_null(const char *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 902
    functionDepth: 0
    functionLinenumber: 902
    functionLinenumberEnd: 907
    functionName: constructor_sort
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int constructor_sort(const void *a, const void *b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: constructor_array_init
      Src: /src/lwan/src/lib/lwan.c:915,1
    - Dst: constructor_array_append
      Src: /src/lwan/src/lib/lwan.c:919,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan.c:921,1
    - Dst: constructor_array_sort
      Src: /src/lwan/src/lib/lwan.c:924,1
    - Dst: LWAN_ARRAY_FOREACH
      Src: /src/lwan/src/lib/lwan.c:926,1
    - Dst: struct lwan_constructor_callback_info*::func
      Src: /src/lwan/src/lib/lwan.c:927,1
    - Dst: constructor_array_reset
      Src: /src/lwan/src/lib/lwan.c:930,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct lwan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 909
    functionDepth: 1
    functionLinenumber: 909
    functionLinenumberEnd: 931
    functionName: call_constructors
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 0
    functionsReached:
    - lwan_log_critical
    - struct lwan_constructor_callback_info*::func
    - constructor_array_sort
    - constructor_array_reset
    - constructor_array_append
    - constructor_array_init
    - LWAN_ARRAY_FOREACH
    linkageType: ''
    returnType: void
    signature: void call_constructors(struct lwan *l)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: constructor_array_append
      Src: /src/lwan/src/lib/lwan.c:919,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan.c:921,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 916
    functionDepth: 1
    functionLinenumber: 916
    functionLinenumberEnd: 923
    functionName: LWAN_SECTION_FOREACH
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 0
    functionsReached:
    - constructor_array_append
    - lwan_log_critical
    linkageType: ''
    returnType: void
    signature: void LWAN_SECTION_FOREACH(lwan_constructor, iter)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/lwan/src/lib/lwan.c:936,1
    - Dst: memcpy
      Src: /src/lwan/src/lib/lwan.c:937,1
    - Dst: dup_or_null
      Src: /src/lwan/src/lib/lwan.c:938,1
    - Dst: dup_or_null
      Src: /src/lwan/src/lib/lwan.c:939,1
    - Dst: dup_or_null
      Src: /src/lwan/src/lib/lwan.c:940,1
    - Dst: dup_or_null
      Src: /src/lwan/src/lib/lwan.c:941,1
    - Dst: lwan_log_init
      Src: /src/lwan/src/lib/lwan.c:945,1
    - Dst: call_constructors
      Src: /src/lwan/src/lib/lwan.c:947,1
    - Dst: lwan_job_thread_init
      Src: /src/lwan/src/lib/lwan.c:952,1
    - Dst: lwan_tables_init
      Src: /src/lwan/src/lib/lwan.c:953,1
    - Dst: get_number_of_cpus
      Src: /src/lwan/src/lib/lwan.c:958,1
    - Dst: try_setup_from_config
      Src: /src/lwan/src/lib/lwan.c:960,1
    - Dst: build_response_headers
      Src: /src/lwan/src/lib/lwan.c:963,1
    - Dst: lwan_response_init
      Src: /src/lwan/src/lib/lwan.c:965,1
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan.c:968,1
    - Dst: allow_bind_for_listener
      Src: /src/lwan/src/lib/lwan.c:972,1
    - Dst: allow_bind_for_listener
      Src: /src/lwan/src/lib/lwan.c:974,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan.c:984,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan.c:991,1
    - Dst: setup_open_file_count_limits
      Src: /src/lwan/src/lib/lwan.c:997,1
    - Dst: allocate_connections
      Src: /src/lwan/src/lib/lwan.c:998,1
    - Dst: lwan_log_info
      Src: /src/lwan/src/lib/lwan.c:1001,1
    - Dst: signal
      Src: /src/lwan/src/lib/lwan.c:1004,1
    - Dst: lwan_readahead_init
      Src: /src/lwan/src/lib/lwan.c:1006,1
    - Dst: lwan_http_authorize_init
      Src: /src/lwan/src/lib/lwan.c:1007,1
    - Dst: lwan_thread_init
      Src: /src/lwan/src/lib/lwan.c:1008,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 43
    argCount: 2
    argNames:
    - l
    - config
    argTypes:
    - struct lwan*
    - struct lwan_config*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 933
    functionDepth: 9
    functionLinenumber: 933
    functionLinenumberEnd: 1009
    functionName: lwan_init_with_config
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 2
    functionsReached:
    - lwan_thread_init
    - allow_bind_for_listener
    - dup_or_null
    - build_response_headers
    - lwan_job_thread_init
    - memcpy
    - get_number_of_cpus
    - call_constructors
    - memset
    - signal
    - lwan_tables_init
    - lwan_http_authorize_init
    - lwan_log_init
    - lwan_log_debug
    - lwan_response_init
    - allocate_connections
    - try_setup_from_config
    - setup_open_file_count_limits
    - lwan_readahead_init
    - lwan_log_info
    - lwan_log_warning
    linkageType: ''
    returnType: void
    signature: void lwan_init_with_config(struct lwan *l, const struct lwan_config
      *config)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_log_info
      Src: /src/lwan/src/lib/lwan.c:1013,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan.c:1015,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan.c:1016,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan.c:1017,1
    - Dst: lwan_always_bzero
      Src: /src/lwan/src/lib/lwan.c:1019,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan.c:1019,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan.c:1020,1
    - Dst: lwan_always_bzero
      Src: /src/lwan/src/lib/lwan.c:1021,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan.c:1021,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan.c:1022,1
    - Dst: lwan_job_thread_shutdown
      Src: /src/lwan/src/lib/lwan.c:1024,1
    - Dst: lwan_thread_shutdown
      Src: /src/lwan/src/lib/lwan.c:1025,1
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan.c:1027,1
    - Dst: lwan_trie_destroy
      Src: /src/lwan/src/lib/lwan.c:1028,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan.c:1030,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan.c:1031,1
    - Dst: lwan_response_shutdown
      Src: /src/lwan/src/lib/lwan.c:1033,1
    - Dst: lwan_tables_shutdown
      Src: /src/lwan/src/lib/lwan.c:1034,1
    - Dst: lwan_log_shutdown
      Src: /src/lwan/src/lib/lwan.c:1035,1
    - Dst: lwan_http_authorize_shutdown
      Src: /src/lwan/src/lib/lwan.c:1036,1
    - Dst: lwan_readahead_shutdown
      Src: /src/lwan/src/lib/lwan.c:1037,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct lwan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 1011
    functionDepth: 5
    functionLinenumber: 1011
    functionLinenumberEnd: 1038
    functionName: lwan_shutdown
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 8
    functionsReached:
    - lwan_log_shutdown
    - lwan_http_authorize_shutdown
    - free
    - lwan_trie_destroy
    - lwan_response_shutdown
    - lwan_log_info
    - lwan_log_debug
    - strlen
    - lwan_thread_shutdown
    - lwan_tables_shutdown
    - lwan_always_bzero
    - lwan_readahead_shutdown
    - lwan_job_thread_shutdown
    linkageType: ''
    returnType: void
    signature: void lwan_shutdown(struct lwan *l)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_landlock_enforce
      Src: /src/lwan/src/lib/lwan.c:1043,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan.c:1044,1
    - Dst: pthread_barrier_wait
      Src: /src/lwan/src/lib/lwan.c:1047,1
    - Dst: lwan_log_info
      Src: /src/lwan/src/lib/lwan.c:1049,1
    - Dst: lwan_job_thread_main_loop
      Src: /src/lwan/src/lib/lwan.c:1051,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - l
    argTypes:
    - struct lwan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1052
      start: 1040
    functionDepth: 7
    functionLinenumber: 1040
    functionLinenumberEnd: 1052
    functionName: lwan_main_loop
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 8
    functionsReached:
    - lwan_log_critical
    - pthread_barrier_wait
    - lwan_log_info
    - lwan_landlock_enforce
    - lwan_job_thread_main_loop
    linkageType: ''
    returnType: void
    signature: void lwan_main_loop(struct lwan *l __attribute__((unused)))
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: proc_pidpath
      Src: /src/lwan/src/lib/lwan.c:1071,1
    - Dst: getpid
      Src: /src/lwan/src/lib/lwan.c:1071,1
    - Dst: strrchr
      Src: /src/lwan/src/lib/lwan.c:1074,1
    - Dst: snprintf
      Src: /src/lwan/src/lib/lwan.c:1078,1
    - Dst: pthread_set_name_np
      Src: /src/lwan/src/lib/lwan.c:1082,1
    - Dst: pthread_self
      Src: /src/lwan/src/lib/lwan.c:1082,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 1064
    functionDepth: 1
    functionLinenumber: 1064
    functionLinenumberEnd: 1083
    functionName: lwan_set_thread_name
    functionSourceFile: /src/lwan/src/lib/lwan.c
    functionUses: 3
    functionsReached:
    - strrchr
    - pthread_self
    - pthread_set_name_np
    - getpid
    - proc_pidpath
    - snprintf
    linkageType: ''
    returnType: void
    signature: void lwan_set_thread_name(const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/lwan/src/lib/sd-daemon.h:263,1
    - Dst: free
      Src: /src/lwan/src/lib/sd-daemon.h:264,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - p
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 266
    functionName: strv_free
    functionSourceFile: /src/lwan/src/lib/sd-daemon.h
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void strv_free(char **p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - to_
    - ','
    - code_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 39
    functionName: REDIRECT_CODE
    functionSourceFile: /src/lwan/src/lib/lwan-mod-redirect.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REDIRECT_CODE(to_, code_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - to_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    functionName: REDIRECT
    functionSourceFile: /src/lwan/src/lib/lwan-mod-redirect.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REDIRECT(to_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 119
    functionName: close_fd
    functionSourceFile: /src/lwan/src/lib/lwan-mod-fastcgi.c
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void close_fd(void *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:128,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:129,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:132,1
    - Dst: htonl
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:134,1
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:135,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:139,1
    - Dst: htonl
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:141,1
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:142,1
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:145,1
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 5
    argNames:
    - strbuf
    - key
    - len_key
    - value
    - len_value
    argTypes:
    - struct lwan_strbuf*
    - char*
    - size_t
    - char*
    - size_t
    assertStmts:
    - condition: (len_key <= INT_MAX)
      pos:
        line_end: 127
        line_start: 127
        source_file: /src/lwan/src/lib/lwan-mod-fastcgi.c
    - condition: (len_value <= INT_MAX)
      pos:
        line_end: 128
        line_start: 128
        source_file: /src/lwan/src/lib/lwan-mod-fastcgi.c
    constantsTouched: []
    func_position:
      end: 147
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 147
    functionName: add_param_len
    functionSourceFile: /src/lwan/src/lib/lwan-mod-fastcgi.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_append_char
    - htonl
    - assert
    - lwan_strbuf_append_str
    linkageType: ''
    returnType: void
    signature: "void add_param_len(struct lwan_strbuf *strbuf,\n                          const
      char *key,\n                          size_t len_key,\n                          const
      char *value,\n                          size_t len_value)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_param_len
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:152,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:152,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - strbuf
    - key
    - value
    argTypes:
    - struct lwan_strbuf*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 149
    functionDepth: 2
    functionLinenumber: 149
    functionLinenumberEnd: 153
    functionName: add_param
    functionSourceFile: /src/lwan/src/lib/lwan-mod-fastcgi.c
    functionUses: 0
    functionsReached:
    - add_param_len
    - strlen
    linkageType: ''
    returnType: void
    signature: void add_param(struct lwan_strbuf *strbuf, const char *key, const char
      *value)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: int_to_string
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:160,1
    - Dst: add_param_len
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:162,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - strbuf
    - key
    - value
    argTypes:
    - struct lwan_strbuf*
    - char*
    - ssize_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 155
    functionDepth: 2
    functionLinenumber: 155
    functionLinenumberEnd: 163
    functionName: add_int_param
    functionSourceFile: /src/lwan/src/lib/lwan-mod-fastcgi.c
    functionUses: 0
    functionsReached:
    - int_to_string
    - add_param_len
    - strlen
    linkageType: ''
    returnType: void
    signature: void add_int_param(struct lwan_strbuf *strbuf, const char *key, ssize_t
      value)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:175,1
    - Dst: asprintf
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:183,1
    - Dst: snprintf
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:189,1
    - Dst: realpathat
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:195,1
    - Dst: strncmp
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:199,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:200,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:206,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:208,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:210,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 3
    argNames:
    - keyptr
    - context
    - create_contex
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 165
    functionDepth: 3
    functionLinenumber: 165
    functionLinenumberEnd: 213
    functionName: create_script_name
    functionSourceFile: /src/lwan/src/lib/lwan-mod-fastcgi.c
    functionUses: 0
    functionsReached:
    - free
    - strlen
    - strncmp
    - asprintf
    - malloc
    - snprintf
    - realpathat
    linkageType: ''
    returnType: struct cache_entry
    signature: "struct cache_entry *create_script_name(const void *keyptr,\n                                              void
      *context,\n                                              void *create_contex\n
      \                                             __attribute__((unused)))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:221,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:222,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - entry
    - context
    argTypes:
    - struct cache_entry*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 224
    functionName: destroy_script_name
    functionSourceFile: /src/lwan/src/lib/lwan-mod-fastcgi.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: "void destroy_script_name(struct cache_entry *entry,\n                                void
      *context __attribute__((unused)))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cache_coro_get_and_ref_entry
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:231,1
    - Dst: add_param
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:235,1
    - Dst: add_param
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:236,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - pd
    - request
    - response
    argTypes:
    - struct private_data*
    - struct lwan_request*
    - struct lwan_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 226
    functionDepth: 3
    functionLinenumber: 226
    functionLinenumberEnd: 241
    functionName: add_script_paths
    functionSourceFile: /src/lwan/src/lib/lwan-mod-fastcgi.c
    functionUses: 0
    functionsReached:
    - cache_coro_get_and_ref_entry
    - add_param
    linkageType: ''
    returnType: enum lwan_http_status
    signature: "enum lwan_http_status add_script_paths(const struct private_data *pd,\n
      \                                             struct lwan_request *request,\n
      \                                             struct lwan_response *response)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: add_param_len
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - header
    - header_len
    - value
    - value_len
    - user_data
    argTypes:
    - char*
    - size_t
    - char*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 243
    functionDepth: 2
    functionLinenumber: 243
    functionLinenumberEnd: 251
    functionName: add_header_to_strbuf
    functionSourceFile: /src/lwan/src/lib/lwan-mod-fastcgi.c
    functionUses: 0
    functionsReached:
    - add_param_len
    linkageType: ''
    returnType: void
    signature: "void add_header_to_strbuf(const char *header,\n                                 size_t
      header_len,\n                                 const char *value,\n                                 size_t
      value_len,\n                                 void *user_data)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: add_param
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:266,1
    - Dst: add_param
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:269,1
    - Dst: getsockname
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:272,1
    - Dst: inet_ntop
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:278,1
    - Dst: ntohs
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:280,1
    - Dst: inet_ntop
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:284,1
    - Dst: ntohs
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:286,1
    - Dst: lwan_request_get_remote_address_and_port
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:291,1
    - Dst: add_param
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:300,1
    - Dst: add_int_param
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:301,1
    - Dst: add_param
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:303,1
    - Dst: add_int_param
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:304,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 2
    argNames:
    - r
    - strbuf
    argTypes:
    - struct lwan_request*
    - struct lwan_strbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 253
    functionDepth: 3
    functionLinenumber: 253
    functionLinenumberEnd: 307
    functionName: fill_addr_and_port
    functionSourceFile: /src/lwan/src/lib/lwan-mod-fastcgi.c
    functionUses: 0
    functionsReached:
    - add_param
    - inet_ntop
    - add_int_param
    - getsockname
    - lwan_request_get_remote_address_and_port
    - ntohs
    linkageType: ''
    returnType: bool
    signature: "bool fill_addr_and_port(const struct lwan_request *r,\n                               struct
      lwan_strbuf *strbuf)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: add_param
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:317,1
    - Dst: fill_addr_and_port
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:319,1
    - Dst: add_param
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:322,1
    - Dst: add_param
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:323,1
    - Dst: add_param
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:326,1
    - Dst: lwan_request_get_method_str
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:326,1
    - Dst: add_param
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:330,1
    - Dst: add_param
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:332,1
    - Dst: add_param
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:333,1
    - Dst: asprintf
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:341,1
    - Dst: add_param
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:346,1
    - Dst: add_param
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:347,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:349,1
    - Dst: add_param
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:351,1
    - Dst: add_param
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:352,1
    - Dst: lwan_request_foreach_header_for_cgi
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:355,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 3
    argNames:
    - pd
    - request
    - response
    argTypes:
    - struct private_data*
    - struct lwan_request*
    - struct lwan_response*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 309
    functionDepth: 4
    functionLinenumber: 309
    functionLinenumberEnd: 358
    functionName: add_params
    functionSourceFile: /src/lwan/src/lib/lwan-mod-fastcgi.c
    functionUses: 0
    functionsReached:
    - lwan_request_foreach_header_for_cgi
    - add_param
    - free
    - lwan_request_get_method_str
    - fill_addr_and_port
    - asprintf
    linkageType: ''
    returnType: enum lwan_http_status
    signature: "enum lwan_http_status add_params(const struct private_data *pd,\n
      \                                       struct lwan_request *request,\n                                        struct
      lwan_response *response)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LWAN_MIN
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:364,1
    - Dst: lwan_recv_fd
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:367,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:368,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - request
    - fd
    - to_read
    argTypes:
    - struct lwan_request*
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 360
    functionDepth: 2
    functionLinenumber: 360
    functionLinenumberEnd: 375
    functionName: discard
    functionSourceFile: /src/lwan/src/lib/lwan-mod-fastcgi.c
    functionUses: 0
    functionsReached:
    - LWAN_MIN
    - lwan_recv_fd
    - UNLIKELY
    linkageType: ''
    returnType: bool
    signature: bool discard(struct lwan_request *request, int fd, size_t to_read)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_extend_unsafe
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:381,1
    - Dst: lwan_recv_fd
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:387,1
    - Dst: discard
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:396,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - request
    - record
    - fd
    argTypes:
    - struct lwan_request*
    - struct record*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 377
    functionDepth: 3
    functionLinenumber: 377
    functionLinenumberEnd: 397
    functionName: handle_stdout
    functionSourceFile: /src/lwan/src/lib/lwan-mod-fastcgi.c
    functionUses: 0
    functionsReached:
    - discard
    - lwan_strbuf_extend_unsafe
    - lwan_recv_fd
    linkageType: ''
    returnType: bool
    signature: bool handle_stdout(struct lwan_request *request, const struct record
      *record, int fd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:403,1
    - Dst: coro_defer
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:409,1
    - Dst: lwan_recv_fd
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:412,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:421,1
    - Dst: coro_defer_fire_and_disarm
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:424,1
    - Dst: discard
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:426,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - request
    - record
    - fd
    argTypes:
    - struct lwan_request*
    - struct record*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 399
    functionDepth: 3
    functionLinenumber: 399
    functionLinenumberEnd: 427
    functionName: handle_stderr
    functionSourceFile: /src/lwan/src/lib/lwan-mod-fastcgi.c
    functionUses: 0
    functionsReached:
    - lwan_recv_fd
    - coro_defer_fire_and_disarm
    - coro_defer
    - malloc
    - discard
    - lwan_log_error
    linkageType: ''
    returnType: bool
    signature: bool handle_stderr(struct lwan_request *request, const struct record
      *record, int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:438,1
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:443,1
    - Dst: discard
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:446,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - request
    - record
    - fd
    argTypes:
    - struct lwan_request*
    - struct record*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 429
    functionDepth: 3
    functionLinenumber: 429
    functionLinenumberEnd: 447
    functionName: discard_unknown_record
    functionSourceFile: /src/lwan/src/lib/lwan-mod-fastcgi.c
    functionUses: 0
    functionsReached:
    - lwan_log_debug
    - discard
    - lwan_log_warning
    linkageType: ''
    returnType: bool
    signature: "bool discard_unknown_record(struct lwan_request *request,\n                                   const
      struct record *record,\n                                   int fd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: header_array_reset
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:454,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 451
    functionDepth: 0
    functionLinenumber: 451
    functionLinenumberEnd: 455
    functionName: reset_additional_header
    functionSourceFile: /src/lwan/src/lib/lwan-mod-fastcgi.c
    functionUses: 0
    functionsReached:
    - header_array_reset
    linkageType: ''
    returnType: void
    signature: void reset_additional_header(void *data)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_to_value
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:471,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:473,1
    - Dst: memmem
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:477,1
    - Dst: lwan_find_headers
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:480,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:481,1
    - Dst: header_array_init
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:486,1
    - Dst: coro_defer
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:487,1
    - Dst: strchr
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:495,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:496,1
    - Dst: strcaseequal_neutral
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:507,1
    - Dst: strcaseequal_neutral
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:510,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:515,1
    - Dst: strcaseequal_neutral
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:517,1
    - Dst: coro_strdup
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:518,1
    - Dst: strcaseequal_neutral
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:519,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:520,1
    - Dst: parse_int
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:526,1
    - Dst: lwan_http_status_is_valid
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:528,1
    - Dst: header_array_append
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:533,1
    - Dst: header_array_append
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:542,1
    - Dst: lwan_response_set_chunked_full
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:547,1
    - Dst: header_array_get_array
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:548,1
    - Dst: coro_defer_fire_and_disarm
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:552,1
    - Dst: lwan_strbuf_init
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:560,1
    - Dst: lwan_strbuf_set_static
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:561,1
    - Dst: lwan_response_send_chunk_full
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:562,1
    - Dst: lwan_strbuf_reset
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:566,1
    - Dst: coro_defer_fire_and_disarm
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:572,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 61
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct lwan_request*
    assertStmts:
    - condition: "(!(request->flags &\n             (RESPONSE_CHUNKED_ENCODING | RESPONSE_SENT_HEADERS)))"
      pos:
        line_end: 473
        line_start: 472
        source_file: /src/lwan/src/lib/lwan-mod-fastcgi.c
    constantsTouched: []
    func_position:
      end: 574
      start: 457
    functionDepth: 7
    functionLinenumber: 457
    functionLinenumberEnd: 574
    functionName: try_initiating_chunked_response
    functionSourceFile: /src/lwan/src/lib/lwan-mod-fastcgi.c
    functionUses: 0
    functionsReached:
    - lwan_find_headers
    - lwan_response_send_chunk_full
    - memmem
    - assert
    - header_array_get_array
    - coro_defer_fire_and_disarm
    - lwan_strbuf_to_value
    - streq
    - lwan_strbuf_reset
    - parse_int
    - lwan_strbuf_init
    - header_array_init
    - coro_defer
    - strcaseequal_neutral
    - lwan_http_status_is_valid
    - UNLIKELY
    - coro_strdup
    - strchr
    - lwan_response_set_chunked_full
    - header_array_append
    - strlen
    - lwan_strbuf_set_static
    linkageType: ''
    returnType: enum lwan_http_status
    signature: enum lwan_http_status try_initiating_chunked_response(struct lwan_request
      *request)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_writev_fd
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:582,1
    - Dst: iovec_array_get_array
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:582,1
    - Dst: iovec_array_len
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:583,1
    - Dst: iovec_array_reset
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:586,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - request
    - fcgi_fd
    - iovec_array
    argTypes:
    - struct lwan_request*
    - int
    - struct iovec_array*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 578
    functionDepth: 2
    functionLinenumber: 578
    functionLinenumberEnd: 588
    functionName: flush_iovec
    functionSourceFile: /src/lwan/src/lib/lwan-mod-fastcgi.c
    functionUses: 0
    functionsReached:
    - iovec_array_len
    - iovec_array_get_array
    - iovec_array_reset
    - lwan_writev_fd
    linkageType: ''
    returnType: bool
    signature: "bool flush_iovec(struct lwan_request *request,\n                        int
      fcgi_fd,\n                        struct iovec_array *iovec_array)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: coro_arena_new
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:598,1
    - Dst: LWAN_MIN
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:604,1
    - Dst: arena_alloc
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:606,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:607,1
    - Dst: htons
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:612,1
    - Dst: htons
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:613,1
    - Dst: iovec_array_append
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:616,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:617,1
    - Dst: iovec_array_append
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:622,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:623,1
    - Dst: iovec_array_len
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:627,1
    - Dst: flush_iovec
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:628,1
    - Dst: arena_reset
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:630,1
    - Dst: iovec_array_append
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:638,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:639,1
    - Dst: htons
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:644,1
    - Dst: flush_iovec
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:648,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 4
    argNames:
    - request
    - iovec_array
    - fcgi_fd
    - body_data
    argTypes:
    - struct lwan_request*
    - struct iovec_array*
    - int
    - struct lwan_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 590
    functionDepth: 3
    functionLinenumber: 590
    functionLinenumberEnd: 649
    functionName: build_stdin_records
    functionSourceFile: /src/lwan/src/lib/lwan-mod-fastcgi.c
    functionUses: 0
    functionsReached:
    - arena_reset
    - LWAN_MIN
    - htons
    - iovec_array_len
    - coro_arena_new
    - arena_alloc
    - flush_iovec
    - iovec_array_append
    - UNLIKELY
    linkageType: ''
    returnType: bool
    signature: "bool build_stdin_records(struct lwan_request *request,\n                                struct
      iovec_array *iovec_array,\n                                int fcgi_fd,\n                                const
      struct lwan_value *body_data)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: add_params
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:658,1
    - Dst: add_script_paths
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:662,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:666,1
    - Dst: lwan_strbuf_get_length
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:666,1
    - Dst: iovec_array_init
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:681,1
    - Dst: iovec_array_append
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:683,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:684,1
    - Dst: htons
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:693,1
    - Dst: htons
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:695,1
    - Dst: htons
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:697,1
    - Dst: htons
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:702,1
    - Dst: htons
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:703,1
    - Dst: lwan_strbuf_get_length
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:704,1
    - Dst: iovec_array_append
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:710,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:711,1
    - Dst: lwan_strbuf_to_iovec
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:713,1
    - Dst: iovec_array_append
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:715,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:716,1
    - Dst: htons
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:721,1
    - Dst: build_stdin_records
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:725,1
    - Dst: lwan_request_get_request_body
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:726,1
    - Dst: lwan_strbuf_reset
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:730,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 4
    argNames:
    - pd
    - request
    - response
    - fcgi_fd
    argTypes:
    - struct private_data*
    - struct lwan_request*
    - struct lwan_response*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 651
    functionDepth: 5
    functionLinenumber: 651
    functionLinenumberEnd: 733
    functionName: send_request
    functionSourceFile: /src/lwan/src/lib/lwan-mod-fastcgi.c
    functionUses: 0
    functionsReached:
    - iovec_array_init
    - build_stdin_records
    - lwan_strbuf_get_length
    - add_script_paths
    - add_params
    - lwan_strbuf_to_iovec
    - htons
    - lwan_request_get_request_body
    - iovec_array_append
    - UNLIKELY
    - lwan_strbuf_reset
    linkageType: ''
    returnType: enum lwan_http_status
    signature: "enum lwan_http_status send_request(struct private_data *pd,\n                                          struct
      lwan_request *request,\n                                          struct lwan_response
      *response,\n                                          int fcgi_fd)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:740,1
    - Dst: connect
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:740,1
    - Dst: lwan_request_await_write
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:757,1
    - Dst: getsockopt
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:759,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 4
    argNames:
    - request
    - sock_fd
    - sockaddr
    - socklen
    argTypes:
    - struct lwan_request*
    - int
    - struct sockaddr*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 780
      start: 735
    functionDepth: 5
    functionLinenumber: 735
    functionLinenumberEnd: 780
    functionName: try_connect
    functionSourceFile: /src/lwan/src/lib/lwan-mod-fastcgi.c
    functionUses: 0
    functionsReached:
    - getsockopt
    - connect
    - lwan_request_await_write
    - LIKELY
    linkageType: ''
    returnType: bool
    signature: "bool try_connect(struct lwan_request *request,\n                        int
      sock_fd,\n                        struct sockaddr *sockaddr,\n                        socklen_t
      socklen)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:793,1
    - Dst: coro_defer
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:797,1
    - Dst: try_connect
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:799,1
    - Dst: send_request
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:804,1
    - Dst: lwan_strbuf_append_char
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:810,1
    - Dst: lwan_recv_fd
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:818,1
    - Dst: ntohs
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:824,1
    - Dst: ntohs
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:825,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:827,1
    - Dst: handle_stdout
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:831,1
    - Dst: lwan_strbuf_get_length
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:838,1
    - Dst: lwan_response_send_chunk
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:842,1
    - Dst: try_initiating_chunked_response
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:852,1
    - Dst: handle_stderr
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:863,1
    - Dst: discard_unknown_record
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:868,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:874,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 53
    argCount: 3
    argNames:
    - request
    - response
    - instance
    argTypes:
    - struct lwan_request*
    - struct lwan_response*
    - void*
    assertStmts:
    - condition: (record.id == 1)
      pos:
        line_end: 826
        line_start: 826
        source_file: /src/lwan/src/lib/lwan-mod-fastcgi.c
    constantsTouched: []
    func_position:
      end: 875
      start: 782
    functionDepth: 8
    functionLinenumber: 782
    functionLinenumberEnd: 875
    functionName: fastcgi_handle_request
    functionSourceFile: /src/lwan/src/lib/lwan-mod-fastcgi.c
    functionUses: 0
    functionsReached:
    - handle_stderr
    - handle_stdout
    - discard_unknown_record
    - send_request
    - __builtin_unreachable
    - lwan_strbuf_get_length
    - try_connect
    - lwan_recv_fd
    - coro_defer
    - ntohs
    - assert
    - lwan_response_send_chunk
    - lwan_strbuf_append_char
    - socket
    - try_initiating_chunked_response
    linkageType: ''
    returnType: enum lwan_http_status
    signature: "enum lwan_http_status fastcgi_handle_request(struct lwan_request *request,\n
      \                      struct lwan_response *response,\n                       void
      *instance)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:884,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:888,1
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:895,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:897,1
    - Dst: cache_create_full
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:901,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:904,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:909,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:910,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:913,1
    - Dst: lwan_get_real_root_path
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:917,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:919,1
    - Dst: open
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:925,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:927,1
    - Dst: lwan_straitjacket_allow_dirfd_ro
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:932,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:933,1
    - Dst: stat
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:940,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:941,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:947,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:952,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:953,1
    - Dst: memcpy
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:962,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:963,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:969,1
    - Dst: lwan_socket_parse_address
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:973,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:975,1
    - Dst: parse_int
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:980,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:982,1
    - Dst: lwan_straitjacket_allow_connect
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:987,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:988,1
    - Dst: inet_pton
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:995,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:996,1
    - Dst: htons
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:1004,1
    - Dst: inet_pton
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:1009,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:1010,1
    - Dst: htons
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:1018,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:1021,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:1027,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:1031,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:1033,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:1035,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:1037,1
    - Dst: cache_destroy
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:1039,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:1041,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 130
    argCount: 2
    argNames:
    - prefix
    - user_settings
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1043
      start: 877
    functionDepth: 4
    functionLinenumber: 877
    functionLinenumberEnd: 1043
    functionName: fastcgi_create
    functionSourceFile: /src/lwan/src/lib/lwan-mod-fastcgi.c
    functionUses: 0
    functionsReached:
    - inet_pton
    - cache_create_full
    - free
    - lwan_straitjacket_allow_connect
    - lwan_straitjacket_allow_dirfd_ro
    - lwan_log_perror
    - memcpy
    - lwan_socket_parse_address
    - stat
    - parse_int
    - strdup
    - open
    - cache_destroy
    - close
    - lwan_log_error
    - lwan_get_real_root_path
    - htons
    - strlen
    - malloc
    linkageType: ''
    returnType: void
    signature: "void *fastcgi_create(const char *prefix __attribute__((unused)),\n
      \                           void *user_settings)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cache_destroy
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:1049,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:1050,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:1051,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:1052,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:1053,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - instance
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1054
      start: 1045
    functionDepth: 1
    functionLinenumber: 1045
    functionLinenumberEnd: 1054
    functionName: fastcgi_destroy
    functionSourceFile: /src/lwan/src/lib/lwan-mod-fastcgi.c
    functionUses: 0
    functionsReached:
    - close
    - cache_destroy
    - free
    linkageType: ''
    returnType: void
    signature: void fastcgi_destroy(void *instance)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_find
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:1060,1
    - Dst: hash_find
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:1061,1
    - Dst: hash_find
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:1062,1
    - Dst: fastcgi_create
      Src: /src/lwan/src/lib/lwan-mod-fastcgi.c:1064,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - prefix
    - hash
    argTypes:
    - char*
    - struct hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1065
      start: 1056
    functionDepth: 5
    functionLinenumber: 1056
    functionLinenumberEnd: 1065
    functionName: fastcgi_create_from_hash
    functionSourceFile: /src/lwan/src/lib/lwan-mod-fastcgi.c
    functionUses: 0
    functionsReached:
    - fastcgi_create
    - hash_find
    linkageType: ''
    returnType: void
    signature: "void *fastcgi_create_from_hash(const char *prefix,\n                                      const
      struct hash *hash)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-array.c:32,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-array.c:36,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - a
    - inline_storage
    argTypes:
    - struct lwan_array*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 42
    functionName: lwan_array_reset
    functionSourceFile: /src/lwan/src/lib/lwan-array.c
    functionUses: 0
    functionsReached:
    - UNLIKELY
    - free
    linkageType: ''
    returnType: int
    signature: int lwan_array_reset(struct lwan_array *a, void *inline_storage)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-array.c:47,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - a
    - b
    - out
    argTypes:
    - size_t
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 52
    functionName: add_overflow
    functionSourceFile: /src/lwan/src/lib/lwan-array.c
    functionUses: 3
    functionsReached:
    - UNLIKELY
    linkageType: ''
    returnType: bool
    signature: bool add_overflow(size_t a, size_t b, size_t *out)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-array.c:63,1
    - Dst: add_overflow
      Src: /src/lwan/src/lib/lwan-array.c:64,1
    - Dst: reallocarray
      Src: /src/lwan/src/lib/lwan-array.c:69,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-array.c:70,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - a
    - element_size
    argTypes:
    - struct lwan_array*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 79
    functionName: lwan_array_append_heap
    functionSourceFile: /src/lwan/src/lib/lwan-array.c
    functionUses: 0
    functionsReached:
    - reallocarray
    - add_overflow
    - UNLIKELY
    linkageType: ''
    returnType: void
    signature: void *lwan_array_append_heap(struct lwan_array *a, size_t element_size)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-array.c:87,1
    - Dst: lwan_array_append_heap
      Src: /src/lwan/src/lib/lwan-array.c:88,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-array.c:90,1
    - Dst: reallocarray
      Src: /src/lwan/src/lib/lwan-array.c:94,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-array.c:96,1
    - Dst: memcpy
      Src: /src/lwan/src/lib/lwan-array.c:99,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - a
    - element_size
    - inline_storage
    argTypes:
    - struct lwan_array*
    - size_t
    - void*
    assertStmts:
    - condition: (a->elements <= LWAN_ARRAY_INCREMENT)
      pos:
        line_end: 89
        line_start: 89
        source_file: /src/lwan/src/lib/lwan-array.c
    constantsTouched: []
    func_position:
      end: 106
      start: 81
    functionDepth: 3
    functionLinenumber: 81
    functionLinenumberEnd: 106
    functionName: lwan_array_append_inline
    functionSourceFile: /src/lwan/src/lib/lwan-array.c
    functionUses: 0
    functionsReached:
    - lwan_array_append_heap
    - reallocarray
    - memcpy
    - assert
    - UNLIKELY
    linkageType: ''
    returnType: void
    signature: "void *lwan_array_append_inline(struct lwan_array *a,\n                               size_t
      element_size,\n                               void *inline_storage)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-array.c:112,1
    - Dst: qsort
      Src: /src/lwan/src/lib/lwan-array.c:113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - a
    - element_size
    argTypes:
    - struct lwan_array*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 114
    functionName: lwan_array_sort
    functionSourceFile: /src/lwan/src/lib/lwan-array.c
    functionUses: 0
    functionsReached:
    - qsort
    - LIKELY
    linkageType: ''
    returnType: void
    signature: "void lwan_array_sort(struct lwan_array *a,\n                     size_t
      element_size,\n                     int (*cmp)(const void *a, const void *b))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_array_reset
      Src: /src/lwan/src/lib/lwan-array.c:121,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-array.c:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 123
    functionName: coro_lwan_array_free_heap
    functionSourceFile: /src/lwan/src/lib/lwan-array.c
    functionUses: 0
    functionsReached:
    - lwan_array_reset
    - free
    linkageType: ''
    returnType: void
    signature: void coro_lwan_array_free_heap(void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_array_reset
      Src: /src/lwan/src/lib/lwan-array.c:129,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-array.c:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 131
    functionName: coro_lwan_array_free_inline
    functionSourceFile: /src/lwan/src/lib/lwan-array.c
    functionUses: 0
    functionsReached:
    - lwan_array_reset
    - free
    linkageType: ''
    returnType: void
    signature: void coro_lwan_array_free_inline(void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-array.c:139,1
    - Dst: coro_malloc_full
      Src: /src/lwan/src/lib/lwan-array.c:141,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-array.c:144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - coro
    - struct_size
    - inline_first
    argTypes:
    - struct coro*
    - size_t
    - bool
    assertStmts:
    - condition: (struct_size >= sizeof(struct lwan_array))
      pos:
        line_end: 138
        line_start: 138
        source_file: /src/lwan/src/lib/lwan-array.c
    constantsTouched: []
    func_position:
      end: 148
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 148
    functionName: coro_lwan_array_new
    functionSourceFile: /src/lwan/src/lib/lwan-array.c
    functionUses: 0
    functionsReached:
    - assert
    - LIKELY
    - coro_malloc_full
    linkageType: ''
    returnType: struct lwan_array
    signature: "struct lwan_array *coro_lwan_array_new(struct coro *coro,\n                                       size_t
      struct_size,\n                                       bool inline_first)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ptr_array_init
      Src: /src/lwan/src/lib/lwan-arena.c:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - a
    argTypes:
    - struct arena*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 47
    functionName: arena_init
    functionSourceFile: /src/lwan/src/lib/lwan-arena.c
    functionUses: 1
    functionsReached:
    - ptr_array_init
    linkageType: ''
    returnType: void
    signature: void arena_init(struct arena *a)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arena_init
      Src: /src/lwan/src/lib/lwan-arena.c:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - a
    argTypes:
    - struct arena*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 53
    functionName: arena_init0
    functionSourceFile: /src/lwan/src/lib/lwan-arena.c
    functionUses: 1
    functionsReached:
    - arena_init
    linkageType: ''
    returnType: void
    signature: void arena_init0(struct arena *a)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LWAN_ARRAY_FOREACH
      Src: /src/lwan/src/lib/lwan-arena.c:59,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-arena.c:60,1
    - Dst: arena_init
      Src: /src/lwan/src/lib/lwan-arena.c:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - a
    argTypes:
    - struct arena*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 64
    functionName: arena_reset
    functionSourceFile: /src/lwan/src/lib/lwan-arena.c
    functionUses: 4
    functionsReached:
    - arena_init
    - LWAN_ARRAY_FOREACH
    - free
    linkageType: ''
    returnType: void
    signature: void arena_reset(struct arena *a)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LWAN_MAX
      Src: /src/lwan/src/lib/lwan-arena.c:72,1
    - Dst: calloc
      Src: /src/lwan/src/lib/lwan-arena.c:73,1
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-arena.c:73,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-arena.c:75,1
    - Dst: ptr_array_append
      Src: /src/lwan/src/lib/lwan-arena.c:78,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-arena.c:79,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-arena.c:80,1
    - Dst: __asan_poison_memory_region
      Src: /src/lwan/src/lib/lwan-arena.c:90,1
    - Dst: VALGRIND_MAKE_MEM_NOACCESS
      Src: /src/lwan/src/lib/lwan-arena.c:93,1
    - Dst: VALGRIND_MAKE_MEM_UNDEFINED
      Src: /src/lwan/src/lib/lwan-arena.c:100,1
    - Dst: __asan_unpoison_memory_region
      Src: /src/lwan/src/lib/lwan-arena.c:103,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - a
    - sz
    argTypes:
    - struct arena*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 110
    functionName: arena_alloc
    functionSourceFile: /src/lwan/src/lib/lwan-arena.c
    functionUses: 4
    functionsReached:
    - __asan_poison_memory_region
    - VALGRIND_MAKE_MEM_UNDEFINED
    - __asan_unpoison_memory_region
    - calloc
    - LWAN_MAX
    - free
    - VALGRIND_MAKE_MEM_NOACCESS
    - malloc
    - ptr_array_append
    - UNLIKELY
    linkageType: ''
    returnType: void
    signature: void *arena_alloc(struct arena *a, const size_t sz)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arena_reset
      Src: /src/lwan/src/lib/lwan-arena.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 112
    functionDepth: 2
    functionLinenumber: 112
    functionLinenumberEnd: 116
    functionName: reset_arena
    functionSourceFile: /src/lwan/src/lib/lwan-arena.c
    functionUses: 0
    functionsReached:
    - arena_reset
    linkageType: ''
    returnType: void
    signature: void reset_arena(void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: coro_malloc
      Src: /src/lwan/src/lib/lwan-arena.c:120,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-arena.c:122,1
    - Dst: arena_init
      Src: /src/lwan/src/lib/lwan-arena.c:123,1
    - Dst: coro_defer
      Src: /src/lwan/src/lib/lwan-arena.c:124,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - coro
    argTypes:
    - struct coro*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 118
    functionDepth: 2
    functionLinenumber: 118
    functionLinenumberEnd: 128
    functionName: coro_arena_new
    functionSourceFile: /src/lwan/src/lib/lwan-arena.c
    functionUses: 1
    functionsReached:
    - arena_init
    - coro_malloc
    - coro_defer
    - LIKELY
    linkageType: ''
    returnType: struct arena
    signature: struct arena *coro_arena_new(struct coro *coro)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/lwan/src/lib/lwan-socket.c:47,1
    - Dst: fgets
      Src: /src/lwan/src/lib/lwan-socket.c:50,1
    - Dst: strstr
      Src: /src/lwan/src/lib/lwan-socket.c:51,1
    - Dst: fclose
      Src: /src/lwan/src/lib/lwan-socket.c:54,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 58
    functionName: LWAN_LAZY_GLOBAL
    functionSourceFile: /src/lwan/src/lib/lwan-socket.c
    functionUses: 0
    functionsReached:
    - strstr
    - fopen
    - fgets
    - fclose
    linkageType: ''
    returnType: void
    signature: void LWAN_LAZY_GLOBAL(bool, is_reno_supported)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/lwan/src/lib/lwan-socket.c:66,1
    - Dst: fscanf
      Src: /src/lwan/src/lib/lwan-socket.c:70,1
    - Dst: fclose
      Src: /src/lwan/src/lib/lwan-socket.c:72,1
    - Dst: sysctl
      Src: /src/lwan/src/lib/lwan-socket.c:83,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/lib/lwan-socket.c:83,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 88
    functionName: LWAN_LAZY_GLOBAL
    functionSourceFile: /src/lwan/src/lib/lwan-socket.c
    functionUses: 0
    functionsReached:
    - fclose
    - fscanf
    - N_ELEMENTS
    - fopen
    - sysctl
    linkageType: ''
    returnType: void
    signature: void LWAN_LAZY_GLOBAL(int, get_backlog_size)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/lwan/src/lib/lwan-socket.c:92,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan-socket.c:94,1
    - Dst: fcntl
      Src: /src/lwan/src/lib/lwan-socket.c:95,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan-socket.c:96,1
    - Dst: fcntl
      Src: /src/lwan/src/lib/lwan-socket.c:98,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan-socket.c:100,1
    - Dst: fcntl
      Src: /src/lwan/src/lib/lwan-socket.c:101,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan-socket.c:102,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 105
    functionName: set_socket_flags
    functionSourceFile: /src/lwan/src/lib/lwan-socket.c
    functionUses: 0
    functionsReached:
    - lwan_log_critical_perror
    - fcntl
    linkageType: ''
    returnType: int
    signature: int set_socket_flags(int fd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/lwan/src/lib/lwan-socket.c:109,1
    - Dst: strchr
      Src: /src/lwan/src/lib/lwan-socket.c:112,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-socket.c:128,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - listener
    - node
    - port
    argTypes:
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 107
    functionDepth: 1
    functionLinenumber: 107
    functionLinenumberEnd: 137
    functionName: parse_listener_ipv4
    functionSourceFile: /src/lwan/src/lib/lwan-socket.c
    functionUses: 0
    functionsReached:
    - strchr
    - strrchr
    - streq
    linkageType: ''
    returnType: sa_family_t
    signature: sa_family_t parse_listener_ipv4(char *listener, char **node, char **port)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/lwan/src/lib/lwan-socket.c:141,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-socket.c:152,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - listener
    - node
    - port
    argTypes:
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 158
    functionName: parse_listener_ipv6
    functionSourceFile: /src/lwan/src/lib/lwan-socket.c
    functionUses: 0
    functionsReached:
    - strrchr
    - strlen
    linkageType: ''
    returnType: sa_family_t
    signature: sa_family_t parse_listener_ipv6(char *listener, char **node, char **port)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: parse_listener_ipv6
      Src: /src/lwan/src/lib/lwan-socket.c:163,1
    - Dst: parse_listener_ipv4
      Src: /src/lwan/src/lib/lwan-socket.c:165,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - listener
    - node
    - port
    argTypes:
    - char*
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 160
    functionDepth: 2
    functionLinenumber: 160
    functionLinenumberEnd: 166
    functionName: lwan_socket_parse_address
    functionSourceFile: /src/lwan/src/lib/lwan-socket.c
    functionUses: 2
    functionsReached:
    - parse_listener_ipv6
    - parse_listener_ipv4
    linkageType: ''
    returnType: sa_family_t
    signature: sa_family_t lwan_socket_parse_address(char *listener, char **node,
      char **port)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: listen
      Src: /src/lwan/src/lib/lwan-socket.c:173,1
    - Dst: get_backlog_size
      Src: /src/lwan/src/lib/lwan-socket.c:173,1
    - Dst: lwan_log_critical_perror
      Src: /src/lwan/src/lib/lwan-socket.c:174,1
    - Dst: getnameinfo
      Src: /src/lwan/src/lib/lwan-socket.c:179,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-socket.c:183,1
    - Dst: gai_strerror
      Src: /src/lwan/src/lib/lwan-socket.c:183,1
    - Dst: lwan_log_info
      Src: /src/lwan/src/lib/lwan-socket.c:186,1
    - Dst: lwan_log_info
      Src: /src/lwan/src/lib/lwan-socket.c:189,1
    - Dst: set_socket_flags
      Src: /src/lwan/src/lib/lwan-socket.c:193,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 4
    argNames:
    - fd
    - addr
    - print_listening_msg
    - is_https
    argTypes:
    - int
    - struct addrinfo*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 168
    functionDepth: 2
    functionLinenumber: 168
    functionLinenumberEnd: 194
    functionName: listen_addrinfo
    functionSourceFile: /src/lwan/src/lib/lwan-socket.c
    functionUses: 0
    functionsReached:
    - listen
    - getnameinfo
    - lwan_log_critical
    - get_backlog_size
    - lwan_log_info
    - gai_strerror
    - lwan_log_critical_perror
    - set_socket_flags
    linkageType: ''
    returnType: int
    signature: "int listen_addrinfo(int fd,\n                           const struct
      addrinfo *addr,\n                           bool print_listening_msg,\n                           bool
      is_https)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _domain
    - ','
    - _option
    - ','
    - _param
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 202
    functionName: SET_SOCKET_OPTION
    functionSourceFile: /src/lwan/src/lib/lwan-socket.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_SOCKET_OPTION(_domain, _option, _param)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - _domain
    - ','
    - _option
    - ','
    - _param
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 209
    functionName: SET_SOCKET_OPTION_MAY_FAIL
    functionSourceFile: /src/lwan/src/lib/lwan-socket.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_SOCKET_OPTION_MAY_FAIL(_domain, _option, _param)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/lwan/src/lib/lwan-socket.c:218,1
    - Dst: SET_SOCKET_OPTION
      Src: /src/lwan/src/lib/lwan-socket.c:222,1
    - Dst: SET_SOCKET_OPTION
      Src: /src/lwan/src/lib/lwan-socket.c:224,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-socket.c:226,1
    - Dst: bind
      Src: /src/lwan/src/lib/lwan-socket.c:229,1
    - Dst: listen_addrinfo
      Src: /src/lwan/src/lib/lwan-socket.c:230,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-socket.c:232,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-socket.c:235,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - addrs
    - print_listening_msg
    - is_https
    argTypes:
    - struct addrinfo*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 210
    functionDepth: 3
    functionLinenumber: 210
    functionLinenumberEnd: 236
    functionName: bind_and_listen_addrinfos
    functionSourceFile: /src/lwan/src/lib/lwan-socket.c
    functionUses: 0
    functionsReached:
    - lwan_log_critical
    - SET_SOCKET_OPTION
    - close
    - listen_addrinfo
    - socket
    - bind
    linkageType: ''
    returnType: int
    signature: "int bind_and_listen_addrinfos(const struct addrinfo *addrs,\n                                     bool
      print_listening_msg,\n                                     bool is_https)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SET_SOCKET_OPTION
      Src: /src/lwan/src/lib/lwan-socket.c:240,1
    - Dst: SET_SOCKET_OPTION_MAY_FAIL
      Src: /src/lwan/src/lib/lwan-socket.c:249,1
    - Dst: SET_SOCKET_OPTION_MAY_FAIL
      Src: /src/lwan/src/lib/lwan-socket.c:250,1
    - Dst: SET_SOCKET_OPTION_MAY_FAIL
      Src: /src/lwan/src/lib/lwan-socket.c:251,1
    - Dst: SET_SOCKET_OPTION_MAY_FAIL
      Src: /src/lwan/src/lib/lwan-socket.c:252,1
    - Dst: SET_SOCKET_OPTION_MAY_FAIL
      Src: /src/lwan/src/lib/lwan-socket.c:253,1
    - Dst: is_reno_supported
      Src: /src/lwan/src/lib/lwan-socket.c:256,1
    - Dst: setsockopt
      Src: /src/lwan/src/lib/lwan-socket.c:257,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - l
    - fd
    argTypes:
    - struct lwan*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 263
    functionName: set_socket_options
    functionSourceFile: /src/lwan/src/lib/lwan-socket.c
    functionUses: 0
    functionsReached:
    - SET_SOCKET_OPTION
    - is_reno_supported
    - SET_SOCKET_OPTION_MAY_FAIL
    - setsockopt
    linkageType: ''
    returnType: int
    signature: int set_socket_options(const struct lwan *l, int fd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strdupa
      Src: /src/lwan/src/lib/lwan-socket.c:271,1
    - Dst: lwan_socket_parse_address
      Src: /src/lwan/src/lib/lwan-socket.c:272,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-socket.c:275,1
    - Dst: getaddrinfo
      Src: /src/lwan/src/lib/lwan-socket.c:284,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-socket.c:286,1
    - Dst: gai_strerror
      Src: /src/lwan/src/lib/lwan-socket.c:286,1
    - Dst: bind_and_listen_addrinfos
      Src: /src/lwan/src/lib/lwan-socket.c:288,1
    - Dst: freeaddrinfo
      Src: /src/lwan/src/lib/lwan-socket.c:289,1
    - Dst: set_socket_options
      Src: /src/lwan/src/lib/lwan-socket.c:290,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - l
    - print_listening_msg
    - is_https
    - listener_from_config
    argTypes:
    - struct lwan*
    - bool
    - bool
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 265
    functionDepth: 4
    functionLinenumber: 265
    functionLinenumberEnd: 291
    functionName: setup_socket_normally
    functionSourceFile: /src/lwan/src/lib/lwan-socket.c
    functionUses: 0
    functionsReached:
    - lwan_log_critical
    - strdupa
    - bind_and_listen_addrinfos
    - gai_strerror
    - freeaddrinfo
    - getaddrinfo
    - lwan_socket_parse_address
    - set_socket_options
    linkageType: ''
    returnType: int
    signature: "int setup_socket_normally(const struct lwan *l,\n                                 bool
      print_listening_msg,\n                                 bool is_https,\n                                 const
      char *listener_from_config)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sd_is_socket_inet
      Src: /src/lwan/src/lib/lwan-socket.c:295,1
    - Dst: sd_is_socket_inet
      Src: /src/lwan/src/lib/lwan-socket.c:296,1
    - Dst: set_socket_options
      Src: /src/lwan/src/lib/lwan-socket.c:297,1
    - Dst: set_socket_flags
      Src: /src/lwan/src/lib/lwan-socket.c:297,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-socket.c:300,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - l
    - fd
    argTypes:
    - struct lwan*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 293
    functionDepth: 2
    functionLinenumber: 293
    functionLinenumberEnd: 302
    functionName: from_systemd_socket
    functionSourceFile: /src/lwan/src/lib/lwan-socket.c
    functionUses: 0
    functionsReached:
    - lwan_log_critical
    - sd_is_socket_inet
    - set_socket_flags
    - set_socket_options
    linkageType: ''
    returnType: int
    signature: int from_systemd_socket(const struct lwan *l, int fd)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/lwan/src/lib/lwan-socket.c:311,1
    - Dst: sd_listen_fds_with_names
      Src: /src/lwan/src/lib/lwan-socket.c:313,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-socket.c:320,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-socket.c:326,1
    - Dst: strcmp
      Src: /src/lwan/src/lib/lwan-socket.c:332,1
    - Dst: strv_free
      Src: /src/lwan/src/lib/lwan-socket.c:338,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-socket.c:341,1
    - Dst: from_systemd_socket
      Src: /src/lwan/src/lib/lwan-socket.c:345,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-socket.c:348,1
    - Dst: sd_listen_fds
      Src: /src/lwan/src/lib/lwan-socket.c:349,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-socket.c:353,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-socket.c:358,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-socket.c:363,1
    - Dst: from_systemd_socket
      Src: /src/lwan/src/lib/lwan-socket.c:369,1
    - Dst: setup_socket_normally
      Src: /src/lwan/src/lib/lwan-socket.c:372,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 38
    argCount: 3
    argNames:
    - l
    - print_listening_msg
    - is_https
    argTypes:
    - struct lwan*
    - bool
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 304
    functionDepth: 5
    functionLinenumber: 304
    functionLinenumberEnd: 373
    functionName: lwan_create_listen_socket
    functionSourceFile: /src/lwan/src/lib/lwan-socket.c
    functionUses: 1
    functionsReached:
    - setup_socket_normally
    - lwan_log_critical
    - sd_listen_fds
    - strcmp
    - from_systemd_socket
    - strncmp
    - strv_free
    - lwan_log_perror
    - streq
    - sd_listen_fds_with_names
    linkageType: ''
    returnType: int
    signature: "int lwan_create_listen_socket(const struct lwan *l,\n                              bool
      print_listening_msg,\n                              bool is_https)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/int-to-str.c:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - value
    argTypes:
    - size_t
    assertStmts:
    - condition: (value <= 99)
      pos:
        line_end: 35
        line_start: 35
        source_file: /src/lwan/src/lib/int-to-str.c
    constantsTouched: []
    func_position:
      end: 38
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 38
    functionName: uint_to_string_2_digits
    functionSourceFile: /src/lwan/src/lib/int-to-str.c
    functionUses: 1
    functionsReached:
    - assert
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: 'ALWAYS_INLINE *

      uint_to_string_2_digits(size_t value)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - value
    - dst
    - length_out
    argTypes:
    - size_t
    - char[]
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 69
    functionName: uint_to_string
    functionSourceFile: /src/lwan/src/lib/int-to-str.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: "ALWAYS_INLINE *uint_to_string(size_t value,\n                                   char
      dst[static INT_TO_STR_BUFFER_SIZE],\n                                   size_t
      *length_out)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: uint_to_string
      Src: /src/lwan/src/lib/int-to-str.c:76,1
    - Dst: uint_to_string
      Src: /src/lwan/src/lib/int-to-str.c:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - value
    - dst
    - length_out
    argTypes:
    - ssize_t
    - char[]
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 84
    functionName: int_to_string
    functionSourceFile: /src/lwan/src/lib/int-to-str.c
    functionUses: 5
    functionsReached:
    - uint_to_string
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: "ALWAYS_INLINE *int_to_string(ssize_t value,\n                                  char
      dst[static INT_TO_STR_BUFFER_SIZE],\n                                  size_t
      *length_out)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/lwan/src/lib/lwan-websocket.c:75,1
    - Dst: htons
      Src: /src/lwan/src/lib/lwan-websocket.c:75,1
    - Dst: memcpy
      Src: /src/lwan/src/lib/lwan-websocket.c:79,1
    - Dst: htobe64
      Src: /src/lwan/src/lib/lwan-websocket.c:79,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-websocket.c:89,1
    - Dst: lwan_writev
      Src: /src/lwan/src/lib/lwan-websocket.c:90,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/lib/lwan-websocket.c:90,1
    - Dst: writev
      Src: /src/lwan/src/lib/lwan-websocket.c:96,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/lib/lwan-websocket.c:97,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/lib/lwan-websocket.c:104,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/lib/lwan-websocket.c:109,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 5
    argNames:
    - request
    - header_byte
    - msg
    - len
    - use_coro
    argTypes:
    - struct lwan_request*
    - unsigned char
    - char*
    - size_t
    - bool
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 60
    functionDepth: 3
    functionLinenumber: 60
    functionLinenumberEnd: 117
    functionName: write_websocket_frame_full
    functionSourceFile: /src/lwan/src/lib/lwan-websocket.c
    functionUses: 0
    functionsReached:
    - lwan_writev
    - htobe64
    - writev
    - N_ELEMENTS
    - LIKELY
    - memcpy
    - htons
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: "ALWAYS_INLINE write_websocket_frame_full(struct lwan_request *request,\n
      \                          unsigned char header_byte,\n                           char
      *msg,\n                           size_t len,\n                           bool
      use_coro)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write_websocket_frame_full
      Src: /src/lwan/src/lib/lwan-websocket.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - request
    - header_byte
    - msg
    - len
    argTypes:
    - struct lwan_request*
    - unsigned char
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 119
    functionDepth: 4
    functionLinenumber: 119
    functionLinenumberEnd: 125
    functionName: write_websocket_frame
    functionSourceFile: /src/lwan/src/lib/lwan-websocket.c
    functionUses: 0
    functionsReached:
    - write_websocket_frame_full
    linkageType: ''
    returnType: bool
    signature: "bool write_websocket_frame(struct lwan_request *request,\n                                  unsigned
      char header_byte,\n                                  char *msg,\n                                  size_t
      len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_get_length
      Src: /src/lwan/src/lib/lwan-websocket.c:130,1
    - Dst: lwan_strbuf_get_buffer
      Src: /src/lwan/src/lib/lwan-websocket.c:131,1
    - Dst: write_websocket_frame
      Src: /src/lwan/src/lib/lwan-websocket.c:137,1
    - Dst: lwan_strbuf_reset
      Src: /src/lwan/src/lib/lwan-websocket.c:138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - request
    - op
    argTypes:
    - struct lwan_request*
    - unsigned char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 127
    functionDepth: 5
    functionLinenumber: 127
    functionLinenumberEnd: 139
    functionName: lwan_response_websocket_write
    functionSourceFile: /src/lwan/src/lib/lwan-websocket.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_get_length
    - lwan_strbuf_get_buffer
    - write_websocket_frame
    - lwan_strbuf_reset
    linkageType: ''
    returnType: void
    signature: "void lwan_response_websocket_write(struct lwan_request *request,\n
      \                                                unsigned char op)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_response_websocket_write
      Src: /src/lwan/src/lib/lwan-websocket.c:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct lwan_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 141
    functionDepth: 6
    functionLinenumber: 141
    functionLinenumberEnd: 144
    functionName: lwan_response_websocket_write_text
    functionSourceFile: /src/lwan/src/lib/lwan-websocket.c
    functionUses: 3
    functionsReached:
    - lwan_response_websocket_write
    linkageType: ''
    returnType: void
    signature: void lwan_response_websocket_write_text(struct lwan_request *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_response_websocket_write
      Src: /src/lwan/src/lib/lwan-websocket.c:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct lwan_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 146
    functionDepth: 6
    functionLinenumber: 146
    functionLinenumberEnd: 149
    functionName: lwan_response_websocket_write_binary
    functionSourceFile: /src/lwan/src/lib/lwan-websocket.c
    functionUses: 2
    functionsReached:
    - lwan_response_websocket_write
    linkageType: ''
    returnType: void
    signature: void lwan_response_websocket_write_binary(struct lwan_request *request)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lwan_recv
      Src: /src/lwan/src/lib/lwan-websocket.c:157,1
    - Dst: ntohs
      Src: /src/lwan/src/lib/lwan-websocket.c:158,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan-websocket.c:161,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-websocket.c:163,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-websocket.c:164,1
    - Dst: lwan_recv
      Src: /src/lwan/src/lib/lwan-websocket.c:169,1
    - Dst: be64toh
      Src: /src/lwan/src/lib/lwan-websocket.c:170,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-websocket.c:172,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan-websocket.c:173,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-websocket.c:174,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-websocket.c:175,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-websocket.c:177,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan-websocket.c:178,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-websocket.c:180,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-websocket.c:181,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 2
    argNames:
    - request
    - header
    argTypes:
    - struct lwan_request*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 151
    functionDepth: 3
    functionLinenumber: 151
    functionLinenumberEnd: 188
    functionName: get_frame_length
    functionSourceFile: /src/lwan/src/lib/lwan-websocket.c
    functionUses: 0
    functionsReached:
    - __builtin_unreachable
    - be64toh
    - UNLIKELY
    - lwan_log_warning
    - lwan_recv
    - ntohs
    - coro_yield
    linkageType: ''
    returnType: size_t
    signature: size_t get_frame_length(struct lwan_request *request, uint16_t header)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: _mm256_castps_si256
      Src: /src/lwan/src/lib/lwan-websocket.c:201,1
    - Dst: _mm256_broadcast_ss
      Src: /src/lwan/src/lib/lwan-websocket.c:201,1
    - Dst: _mm256_lddqu_si256
      Src: /src/lwan/src/lib/lwan-websocket.c:203,1
    - Dst: _mm256_storeu_si256
      Src: /src/lwan/src/lib/lwan-websocket.c:204,1
    - Dst: _mm256_xor_si256
      Src: /src/lwan/src/lib/lwan-websocket.c:204,1
    - Dst: _mm256_extracti128_si256
      Src: /src/lwan/src/lib/lwan-websocket.c:210,1
    - Dst: _mm_lddqu_si128
      Src: /src/lwan/src/lib/lwan-websocket.c:211,1
    - Dst: _mm_storeu_si128
      Src: /src/lwan/src/lib/lwan-websocket.c:212,1
    - Dst: _mm_xor_si128
      Src: /src/lwan/src/lib/lwan-websocket.c:212,1
    - Dst: _mm256_extract_epi32
      Src: /src/lwan/src/lib/lwan-websocket.c:217,1
    - Dst: string_as_uint32
      Src: /src/lwan/src/lib/lwan-websocket.c:219,1
    - Dst: _mm_castps_si128
      Src: /src/lwan/src/lib/lwan-websocket.c:224,1
    - Dst: _mm_broadcast_ss
      Src: /src/lwan/src/lib/lwan-websocket.c:224,1
    - Dst: _mm_lddqu_si128
      Src: /src/lwan/src/lib/lwan-websocket.c:227,1
    - Dst: _mm_storeu_si128
      Src: /src/lwan/src/lib/lwan-websocket.c:228,1
    - Dst: _mm_xor_si128
      Src: /src/lwan/src/lib/lwan-websocket.c:228,1
    - Dst: _mm_extract_epi32
      Src: /src/lwan/src/lib/lwan-websocket.c:233,1
    - Dst: string_as_uint32
      Src: /src/lwan/src/lib/lwan-websocket.c:235,1
    - Dst: string_as_uint32
      Src: /src/lwan/src/lib/lwan-websocket.c:238,1
    - Dst: string_as_uint64
      Src: /src/lwan/src/lib/lwan-websocket.c:246,1
    - Dst: mempcpy
      Src: /src/lwan/src/lib/lwan-websocket.c:248,1
    - Dst: string_as_uint32
      Src: /src/lwan/src/lib/lwan-websocket.c:256,1
    - Dst: mempcpy
      Src: /src/lwan/src/lib/lwan-websocket.c:258,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-websocket.c:273,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 53
    argCount: 3
    argNames:
    - msg
    - msg_len
    - mask
    argTypes:
    - char*
    - size_t
    - char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 275
    functionName: unmask
    functionSourceFile: /src/lwan/src/lib/lwan-websocket.c
    functionUses: 0
    functionsReached:
    - string_as_uint32
    - _mm256_extract_epi32
    - _mm_lddqu_si128
    - __builtin_unreachable
    - _mm256_castps_si256
    - _mm_xor_si128
    - _mm_castps_si128
    - _mm_extract_epi32
    - mempcpy
    - _mm256_xor_si256
    - _mm256_extracti128_si256
    - _mm_broadcast_ss
    - _mm256_broadcast_ss
    - _mm_storeu_si128
    - _mm256_storeu_si256
    - string_as_uint64
    - _mm256_lddqu_si256
    linkageType: ''
    returnType: void
    signature: void unmask(char *msg, size_t msg_len, char mask[static 4])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-websocket.c:283,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-websocket.c:284,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-websocket.c:286,1
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan-websocket.c:287,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-websocket.c:290,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-websocket.c:291,1
    - Dst: lwan_recv
      Src: /src/lwan/src/lib/lwan-websocket.c:295,1
    - Dst: unmask
      Src: /src/lwan/src/lib/lwan-websocket.c:296,1
    - Dst: write_websocket_frame
      Src: /src/lwan/src/lib/lwan-websocket.c:297,1
    - Dst: lwan_recv
      Src: /src/lwan/src/lib/lwan-websocket.c:303,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - request
    - header
    - opcode
    argTypes:
    - struct lwan_request*
    - uint16_t
    - enum ws_opcode
    assertStmts:
    - condition: (header & WS_MASKED)
      pos:
        line_end: 282
        line_start: 282
        source_file: /src/lwan/src/lib/lwan-websocket.c
    - condition: (opcode == WS_OPCODE_PING || opcode == WS_OPCODE_PONG)
      pos:
        line_end: 283
        line_start: 283
        source_file: /src/lwan/src/lib/lwan-websocket.c
    constantsTouched: []
    func_position:
      end: 305
      start: 277
    functionDepth: 5
    functionLinenumber: 277
    functionLinenumberEnd: 305
    functionName: ping_pong
    functionSourceFile: /src/lwan/src/lib/lwan-websocket.c
    functionUses: 0
    functionsReached:
    - __builtin_unreachable
    - lwan_log_debug
    - unmask
    - write_websocket_frame
    - lwan_recv
    - coro_yield
    - assert
    - UNLIKELY
    linkageType: ''
    returnType: void
    signature: void ping_pong(struct lwan_request *request, uint16_t header, enum
      ws_opcode opcode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_random_uint64
      Src: /src/lwan/src/lib/lwan-websocket.c:309,1
    - Dst: memcpy
      Src: /src/lwan/src/lib/lwan-websocket.c:313,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-websocket.c:315,1
    - Dst: clock_gettime
      Src: /src/lwan/src/lib/lwan-websocket.c:315,1
    - Dst: unmask
      Src: /src/lwan/src/lib/lwan-websocket.c:318,1
    - Dst: lwan_connection_get_fd
      Src: /src/lwan/src/lib/lwan-websocket.c:325,1
    - Dst: write_websocket_frame_full
      Src: /src/lwan/src/lib/lwan-websocket.c:327,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct lwan_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 329
      start: 307
    functionDepth: 4
    functionLinenumber: 307
    functionLinenumberEnd: 329
    functionName: lwan_send_websocket_ping_for_tq
    functionSourceFile: /src/lwan/src/lib/lwan-websocket.c
    functionUses: 0
    functionsReached:
    - clock_gettime
    - lwan_connection_get_fd
    - write_websocket_frame_full
    - memcpy
    - unmask
    - lwan_random_uint64
    - UNLIKELY
    linkageType: ''
    returnType: bool
    signature: bool lwan_send_websocket_ping_for_tq(struct lwan_connection *conn)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-websocket.c:339,1
    - Dst: lwan_strbuf_reset_trim
      Src: /src/lwan/src/lib/lwan-websocket.c:342,1
    - Dst: lwan_recv
      Src: /src/lwan/src/lib/lwan-websocket.c:347,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-websocket.c:349,1
    - Dst: htons
      Src: /src/lwan/src/lib/lwan-websocket.c:351,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-websocket.c:354,1
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan-websocket.c:355,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-websocket.c:358,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-websocket.c:359,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-websocket.c:361,1
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan-websocket.c:362,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-websocket.c:363,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-websocket.c:364,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-websocket.c:370,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-websocket.c:372,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-websocket.c:373,1
    - Dst: ping_pong
      Src: /src/lwan/src/lib/lwan-websocket.c:389,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-websocket.c:397,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-websocket.c:398,1
    - Dst: get_frame_length
      Src: /src/lwan/src/lib/lwan-websocket.c:401,1
    - Dst: lwan_strbuf_extend_unsafe
      Src: /src/lwan/src/lib/lwan-websocket.c:402,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-websocket.c:403,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-websocket.c:404,1
    - Dst: __builtin_unreachable
      Src: /src/lwan/src/lib/lwan-websocket.c:405,1
    - Dst: lwan_readv
      Src: /src/lwan/src/lib/lwan-websocket.c:413,1
    - Dst: N_ELEMENTS
      Src: /src/lwan/src/lib/lwan-websocket.c:413,1
    - Dst: unmask
      Src: /src/lwan/src/lib/lwan-websocket.c:414,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 57
    argCount: 2
    argNames:
    - request
    - size_hint
    argTypes:
    - struct lwan_request*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 331
    functionDepth: 6
    functionLinenumber: 331
    functionLinenumberEnd: 420
    functionName: lwan_response_websocket_read_hint
    functionSourceFile: /src/lwan/src/lib/lwan-websocket.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_extend_unsafe
    - __builtin_unreachable
    - N_ELEMENTS
    - lwan_strbuf_reset_trim
    - lwan_log_debug
    - lwan_readv
    - htons
    - ping_pong
    - lwan_recv
    - coro_yield
    - get_frame_length
    - unmask
    - UNLIKELY
    linkageType: ''
    returnType: int
    signature: "int lwan_response_websocket_read_hint(struct lwan_request *request,\n
      \                                     size_t size_hint)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_response_websocket_read_hint
      Src: /src/lwan/src/lib/lwan-websocket.c:430,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct lwan_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 422
    functionDepth: 7
    functionLinenumber: 422
    functionLinenumberEnd: 431
    functionName: lwan_response_websocket_read
    functionSourceFile: /src/lwan/src/lib/lwan-websocket.c
    functionUses: 1
    functionsReached:
    - lwan_response_websocket_read_hint
    linkageType: ''
    returnType: int
    signature: int lwan_response_websocket_read(struct lwan_request *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - array
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: ZERO_IF_IS_ARRAY
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ZERO_IF_IS_ARRAY(array)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - array
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: ZERO_IF_IS_ARRAY
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ZERO_IF_IS_ARRAY(array)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - array
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 56
    functionName: N_ELEMENTS
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 19
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: N_ELEMENTS(array)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 60
    functionName: LWAN_SECTION_NAME
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LWAN_SECTION_NAME(name_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 62
    functionName: LWAN_SECTION_NAME
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LWAN_SECTION_NAME(name_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 65
    functionName: LWAN_MODULE_REF
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LWAN_MODULE_REF(name_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 67
    functionName: LWAN_MODULE_FORWARD_DECL
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LWAN_MODULE_FORWARD_DECL(name_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - name_
    - ','
    - module_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 71
    functionName: LWAN_REGISTER_MODULE
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LWAN_REGISTER_MODULE(name_, module_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 73
    functionName: LWAN_HANDLER_REF
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LWAN_HANDLER_REF(name_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 90
    functionName: LWAN_HANDLER
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LWAN_HANDLER(name_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 95
    functionName: STR4_INT
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STR4_INT(a, b, c, d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 96
    functionName: STR2_INT
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STR2_INT(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - e
    - ','
    - f
    - ','
    - g
    - ','
    - h
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 98
    functionName: STR8_INT
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STR8_INT(a, b, c, d, e, f, g, h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - d
    - ','
    - c
    - ','
    - b
    - ','
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 100
    functionName: STR4_INT
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STR4_INT(d, c, b, a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - b
    - ','
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 101
    functionName: STR2_INT
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STR2_INT(b, a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - e
    - ','
    - f
    - ','
    - g
    - ','
    - h
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 103
    functionName: STR8_INT
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STR8_INT(a, b, c, d, e, f, g, h)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/lwan/src/lib/lwan.h:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 114
    functionName: string_as_uint16
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 2
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE string_as_uint16(const char *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/lwan/src/lib/lwan.h:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 123
    functionName: string_as_uint32
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 3
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE string_as_uint32(const char *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/lwan/src/lib/lwan.h:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 132
    functionName: string_as_uint64
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 2
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE string_as_uint64(const char *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 135
    functionName: LOWER2
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOWER2(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 136
    functionName: LOWER4
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOWER4(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 137
    functionName: LOWER8
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOWER8(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 139
    functionName: STR2_INT_L
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STR2_INT_L(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 140
    functionName: STR4_INT_L
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STR4_INT_L(a, b, c, d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 17
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - e
    - ','
    - f
    - ','
    - g
    - ','
    - h
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 141
    functionName: STR8_INT_L
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STR8_INT_L(a, b, c, d, e, f, g, h)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 143
    functionName: STRING_SWITCH_SMALL
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STRING_SWITCH_SMALL(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 144
    functionName: STRING_SWITCH_SMALL_L
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STRING_SWITCH_SMALL_L(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 145
    functionName: STRING_SWITCH
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STRING_SWITCH(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 146
    functionName: STRING_SWITCH_L
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STRING_SWITCH_L(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 147
    functionName: STRING_SWITCH_LARGE
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STRING_SWITCH_LARGE(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 148
    functionName: STRING_SWITCH_LARGE_L
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STRING_SWITCH_LARGE_L(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 150
    functionName: LIKELY_IS
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIKELY_IS(x, y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 151
    functionName: LIKELY
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 182
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIKELY(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 152
    functionName: UNLIKELY
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 149
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNLIKELY(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - V
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 153
    functionDepth: 0
    functionLinenumber: 153
    functionLinenumberEnd: 154
    functionName: ATOMIC_READ
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ATOMIC_READ(V)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - P
    - ','
    - O
    - ','
    - V
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 155
    functionName: ATOMIC_OP
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ATOMIC_OP(P, O, V)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - P
    - ','
    - V
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 156
    functionName: ATOMIC_AAF
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ATOMIC_AAF(P, V)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - P
    - ','
    - V
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 157
    functionName: ATOMIC_SAF
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ATOMIC_SAF(P, V)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - V
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 158
    functionName: ATOMIC_INC
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ATOMIC_INC(V)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - V
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 159
    functionName: ATOMIC_DEC
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ATOMIC_DEC(V)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - length
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 162
    functionName: LWAN_ARRAY_PARAM
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LWAN_ARRAY_PARAM(length)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - length
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 164
    functionName: LWAN_ARRAY_PARAM
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LWAN_ARRAY_PARAM(length)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 168
    functionName: LWAN_ACCESS_PARAM
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LWAN_ACCESS_PARAM(...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - id
    - ','
    - code
    - ','
    - short
    - ','
    - long
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 175
    functionName: GENERATE_ENUM_ITEM
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GENERATE_ENUM_ITEM(id, code, short, long)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - X
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 204
    functionName: FOR_EACH_REQUEST_METHOD
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FOR_EACH_REQUEST_METHOD(X)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - upper
    - ','
    - lower
    - ','
    - mask
    - ','
    - constant
    - ','
    - probability
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 206
    functionName: SELECT_MASK
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SELECT_MASK(upper, lower, mask, constant, probability)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - upper
    - ','
    - lower
    - ','
    - mask
    - ','
    - constant
    - ','
    - probability
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 207
    functionName: GENERATE_ENUM_ITEM
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GENERATE_ENUM_ITEM(upper, lower, mask, constant, probability)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_init
      Src: /src/lwan/src/lib/lwan.h:613,1
    - Dst: lwan_detect_url_map
      Src: /src/lwan/src/lib/lwan.h:615,1
    - Dst: lwan_main_loop
      Src: /src/lwan/src/lib/lwan.h:616,1
    - Dst: lwan_shutdown
      Src: /src/lwan/src/lib/lwan.h:618,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 609
    functionDepth: 8
    functionLinenumber: 609
    functionLinenumberEnd: 621
    functionName: lwan_main
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 5
    functionsReached:
    - lwan_main_loop
    - lwan_init
    - lwan_shutdown
    - lwan_detect_url_map
    linkageType: ''
    returnType: int
    signature: int lwan_main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct lwan_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 640
    functionDepth: 0
    functionLinenumber: 640
    functionLinenumberEnd: 644
    functionName: lwan_request_get_method
    functionSourceFile: /src/lwan/src/lib/lwan.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: enum lwan_request_flags
    signature: enum lwan_request_flags lwan_request_get_method(const struct lwan_request
      *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: LIKELY
    functionSourceFile: /src/lwan/src/lib/lwan-h2-huffman.c
    functionUses: 182
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LIKELY(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    functionName: UNLIKELY
    functionSourceFile: /src/lwan/src/lib/lwan-h2-huffman.c
    functionUses: 149
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UNLIKELY(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:45,1
    - Dst: htobe64
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 42
    functionDepth: 1
    functionLinenumber: 42
    functionLinenumberEnd: 47
    functionName: read64be
    functionSourceFile: /src/lwan/src/lib/lwan-h2-huffman.c
    functionUses: 0
    functionsReached:
    - memcpy
    - htobe64
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t read64be(const void *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:52,1
    - Dst: htobe32
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 54
    functionName: read32be
    functionSourceFile: /src/lwan/src/lib/lwan-h2-huffman.c
    functionUses: 0
    functionsReached:
    - memcpy
    - htobe32
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t read32be(const void *ptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - peeked_byte
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 121
    functionName: next_level0
    functionSourceFile: /src/lwan/src/lib/lwan-h2-huffman.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct h2_huffman_code
    signature: struct h2_huffman_code *next_level0(uint8_t peeked_byte)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - peeked_byte
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 176
    functionName: next_level1
    functionSourceFile: /src/lwan/src/lib/lwan-h2-huffman.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct h2_huffman_code
    signature: struct h2_huffman_code *next_level1(uint8_t peeked_byte)
  - BBCount: 12
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 1
    argNames:
    - peeked_byte
    argTypes:
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 269
    functionName: next_level2
    functionSourceFile: /src/lwan/src/lib/lwan-h2-huffman.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct h2_huffman_code
    signature: struct h2_huffman_code *next_level2(uint8_t peeked_byte)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: read64be
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:282,1
    - Dst: read32be
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:287,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - reader
    argTypes:
    - struct bit_reader*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 278
    functionDepth: 2
    functionLinenumber: 278
    functionLinenumberEnd: 299
    functionName: peek_byte
    functionSourceFile: /src/lwan/src/lib/lwan-h2-huffman.c
    functionUses: 0
    functionsReached:
    - read32be
    - read64be
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t peek_byte(struct bit_reader *reader)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - reader
    - count
    argTypes:
    - struct bit_reader*
    - int
    assertStmts:
    - condition: (count > 0)
      pos:
        line_end: 302
        line_start: 302
        source_file: /src/lwan/src/lib/lwan-h2-huffman.c
    constantsTouched: []
    func_position:
      end: 308
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 308
    functionName: consume
    functionSourceFile: /src/lwan/src/lib/lwan-h2-huffman.c
    functionUses: 1
    functionsReached:
    - assert
    linkageType: ''
    returnType: bool
    signature: bool consume(struct bit_reader *reader, int count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: uint8_ring_buffer_init
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - lwan_h2_huffman_init
    argTypes:
    - void
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 326
    functionName: DEFINE_RING_BUFFER_TYPE
    functionSourceFile: /src/lwan/src/lib/lwan-h2-huffman.c
    functionUses: 0
    functionsReached:
    - uint8_ring_buffer_init
    linkageType: ''
    returnType: void
    signature: "void DEFINE_RING_BUFFER_TYPE(uint8_ring_buffer, uint8_t, 64)\n\nstruct
      lwan_h2_huffman_decoder {\n    struct bit_reader bit_reader;\n    struct uint8_ring_buffer
      buffer;\n};\n\nvoid lwan_h2_huffman_init(struct lwan_h2_huffman_decoder *huff,\n
      \                         const uint8_t *input,\n                          size_t
      input_len)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: peek_byte
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:334,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:335,1
    - Dst: uint8_ring_buffer_try_put_copy
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:336,1
    - Dst: consume
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:339,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:340,1
    - Dst: consume
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:344,1
    - Dst: next_level0
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:347,1
    - Dst: peek_byte
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:348,1
    - Dst: uint8_ring_buffer_try_put_copy
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:350,1
    - Dst: consume
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:353,1
    - Dst: consume
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:358,1
    - Dst: next_level1
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:361,1
    - Dst: peek_byte
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:362,1
    - Dst: uint8_ring_buffer_try_put_copy
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:364,1
    - Dst: consume
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:367,1
    - Dst: consume
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:372,1
    - Dst: next_level2
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:375,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:376,1
    - Dst: peek_byte
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:377,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:382,1
    - Dst: uint8_ring_buffer_try_put_copy
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:383,1
    - Dst: consume
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:386,1
    - Dst: peek_byte
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:397,1
    - Dst: uint8_ring_buffer_try_put_copy
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:406,1
    - Dst: uint8_ring_buffer_size
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:419,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 65
    argCount: 1
    argNames:
    - huff
    argTypes:
    - struct lwan_h2_huffman_decoder*
    assertStmts:
    - condition: (reader->total_bitcount >= 0)
      pos:
        line_end: 339
        line_start: 339
        source_file: /src/lwan/src/lib/lwan-h2-huffman.c
    constantsTouched: []
    func_position:
      end: 420
      start: 328
    functionDepth: 3
    functionLinenumber: 328
    functionLinenumberEnd: 420
    functionName: lwan_h2_huffman_next
    functionSourceFile: /src/lwan/src/lib/lwan-h2-huffman.c
    functionUses: 0
    functionsReached:
    - uint8_ring_buffer_try_put_copy
    - next_level1
    - consume
    - next_level0
    - LIKELY
    - uint8_ring_buffer_size
    - assert
    - peek_byte
    - next_level2
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t lwan_h2_huffman_next(struct lwan_h2_huffman_decoder *huff)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lwan_h2_huffman_init
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:426,1
    - Dst: lwan_h2_huffman_next
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:429,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:431,1
    - Dst: uint8_ring_buffer_init
      Src: /src/lwan/src/lib/lwan-h2-huffman.c:436,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - input
    - input_len
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 422
    functionDepth: 4
    functionLinenumber: 422
    functionLinenumberEnd: 438
    functionName: lwan_h2_huffman_decode_for_fuzzing
    functionSourceFile: /src/lwan/src/lib/lwan-h2-huffman.c
    functionUses: 1
    functionsReached:
    - lwan_h2_huffman_init
    - uint8_ring_buffer_init
    - UNLIKELY
    - lwan_h2_huffman_next
    linkageType: ''
    returnType: bool
    signature: bool lwan_h2_huffman_decode_for_fuzzing(const uint8_t *input, size_t
      input_len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - type_name_
    - ','
    - element_type_
    - ','
    - size_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 142
    functionName: DEFINE_RING_BUFFER_TYPE
    functionSourceFile: /src/lwan/src/lib/ringbuffer.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DEFINE_RING_BUFFER_TYPE(type_name_, element_type_, size_)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-http-authorize.c:41,1
    - Dst: lwan_always_bzero
      Src: /src/lwan/src/lib/lwan-http-authorize.c:42,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-http-authorize.c:42,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-http-authorize.c:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - str
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 45
    functionName: zero_and_free
    functionSourceFile: /src/lwan/src/lib/lwan-http-authorize.c
    functionUses: 0
    functionsReached:
    - lwan_always_bzero
    - strlen
    - free
    - LIKELY
    linkageType: ''
    returnType: void
    signature: void zero_and_free(void *str)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-http-authorize.c:51,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-http-authorize.c:55,1
    - Dst: hash_str_new
      Src: /src/lwan/src/lib/lwan-http-authorize.c:58,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-http-authorize.c:59,1
    - Dst: config_open_for_fuzzing
      Src: /src/lwan/src/lib/lwan-http-authorize.c:65,1
    - Dst: config_open
      Src: /src/lwan/src/lib/lwan-http-authorize.c:68,1
    - Dst: config_read_line
      Src: /src/lwan/src/lib/lwan-http-authorize.c:73,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan-http-authorize.c:77,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan-http-authorize.c:81,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-http-authorize.c:83,1
    - Dst: hash_add_unique
      Src: /src/lwan/src/lib/lwan-http-authorize.c:87,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-http-authorize.c:88,1
    - Dst: zero_and_free
      Src: /src/lwan/src/lib/lwan-http-authorize.c:91,1
    - Dst: zero_and_free
      Src: /src/lwan/src/lib/lwan-http-authorize.c:92,1
    - Dst: lwan_log_warning
      Src: /src/lwan/src/lib/lwan-http-authorize.c:95,1
    - Dst: config_error
      Src: /src/lwan/src/lib/lwan-http-authorize.c:103,1
    - Dst: config_last_error
      Src: /src/lwan/src/lib/lwan-http-authorize.c:108,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-http-authorize.c:109,1
    - Dst: config_cur_line
      Src: /src/lwan/src/lib/lwan-http-authorize.c:110,1
    - Dst: config_last_error
      Src: /src/lwan/src/lib/lwan-http-authorize.c:110,1
    - Dst: config_close
      Src: /src/lwan/src/lib/lwan-http-authorize.c:114,1
    - Dst: config_close
      Src: /src/lwan/src/lib/lwan-http-authorize.c:118,1
    - Dst: hash_unref
      Src: /src/lwan/src/lib/lwan-http-authorize.c:120,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-http-authorize.c:121,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 54
    argCount: 3
    argNames:
    - key
    - context
    - create_contex
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 47
    functionDepth: 4
    functionLinenumber: 47
    functionLinenumberEnd: 123
    functionName: create_realm_file
    functionSourceFile: /src/lwan/src/lib/lwan-http-authorize.c
    functionUses: 0
    functionsReached:
    - strdup
    - config_cur_line
    - hash_add_unique
    - free
    - hash_unref
    - zero_and_free
    - config_close
    - LIKELY
    - lwan_log_error
    - lwan_log_warning
    - config_last_error
    - config_open
    - config_read_line
    - malloc
    - hash_str_new
    - config_open_for_fuzzing
    - UNLIKELY
    - config_error
    linkageType: ''
    returnType: struct cache_entry
    signature: "struct cache_entry *\ncreate_realm_file(const void *key, void *context
      __attribute__((unused)),\n                  void *create_contex __attribute__((unused)))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_unref
      Src: /src/lwan/src/lib/lwan-http-authorize.c:129,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-http-authorize.c:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - entry
    - context
    argTypes:
    - struct cache_entry*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 131
    functionName: destroy_realm_file
    functionSourceFile: /src/lwan/src/lib/lwan-http-authorize.c
    functionUses: 0
    functionsReached:
    - free
    - hash_unref
    linkageType: ''
    returnType: void
    signature: "void destroy_realm_file(struct cache_entry *entry,\n                               void
      *context __attribute__((unused)))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cache_create
      Src: /src/lwan/src/lib/lwan-http-authorize.c:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 139
    functionName: lwan_http_authorize_init
    functionSourceFile: /src/lwan/src/lib/lwan-http-authorize.c
    functionUses: 1
    functionsReached:
    - cache_create
    linkageType: ''
    returnType: bool
    signature: bool lwan_http_authorize_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cache_destroy
      Src: /src/lwan/src/lib/lwan-http-authorize.c:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 141
    functionName: lwan_http_authorize_shutdown
    functionSourceFile: /src/lwan/src/lib/lwan-http-authorize.c
    functionUses: 1
    functionsReached:
    - cache_destroy
    linkageType: ''
    returnType: void
    signature: void lwan_http_authorize_shutdown(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: cache_coro_get_and_ref_entry
      Src: /src/lwan/src/lib/lwan-http-authorize.c:156,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-http-authorize.c:158,1
    - Dst: base64_decode
      Src: /src/lwan/src/lib/lwan-http-authorize.c:161,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-http-authorize.c:162,1
    - Dst: memchr
      Src: /src/lwan/src/lib/lwan-http-authorize.c:165,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-http-authorize.c:166,1
    - Dst: hash_find
      Src: /src/lwan/src/lib/lwan-http-authorize.c:172,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-http-authorize.c:174,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-http-authorize.c:177,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 4
    argNames:
    - coro
    - header
    - header_len
    - password_file
    argTypes:
    - struct coro*
    - char*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 143
    functionDepth: 4
    functionLinenumber: 143
    functionLinenumberEnd: 179
    functionName: authorize
    functionSourceFile: /src/lwan/src/lib/lwan-http-authorize.c
    functionUses: 1
    functionsReached:
    - memchr
    - free
    - hash_find
    - streq
    - cache_coro_get_and_ref_entry
    - base64_decode
    - UNLIKELY
    linkageType: ''
    returnType: bool
    signature: "bool authorize(struct coro *coro,\n                      const char
      *header,\n                      size_t header_len,\n                      const
      char *password_file)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lwan_request_get_header
      Src: /src/lwan/src/lib/lwan-http-authorize.c:188,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-http-authorize.c:190,1
    - Dst: strncmp
      Src: /src/lwan/src/lib/lwan-http-authorize.c:190,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-http-authorize.c:192,1
    - Dst: authorize
      Src: /src/lwan/src/lib/lwan-http-authorize.c:194,1
    - Dst: coro_printf
      Src: /src/lwan/src/lib/lwan-http-authorize.c:200,1
    - Dst: coro_memdup
      Src: /src/lwan/src/lib/lwan-http-authorize.c:204,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - request
    - realm
    - password_file
    argTypes:
    - struct lwan_request*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 181
    functionDepth: 5
    functionLinenumber: 181
    functionLinenumberEnd: 207
    functionName: lwan_http_authorize
    functionSourceFile: /src/lwan/src/lib/lwan-http-authorize.c
    functionUses: 1
    functionsReached:
    - coro_printf
    - coro_memdup
    - authorize
    - LIKELY
    - strlen
    - strncmp
    - lwan_request_get_header
    linkageType: ''
    returnType: bool
    signature: "bool lwan_http_authorize(struct lwan_request *request,\n                         const
      char *realm,\n                         const char *password_file)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/lib/lwan-strbuf.h:65,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-strbuf.h:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - struct lwan_strbuf*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 66
    functionName: lwan_strbuf_append_strz
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.h
    functionUses: 5
    functionsReached:
    - strlen
    - lwan_strbuf_append_str
    linkageType: ''
    returnType: bool
    signature: "bool lwan_strbuf_append_strz(struct lwan_strbuf *s1,\n                                           const
      char *s2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_set_static
      Src: /src/lwan/src/lib/lwan-strbuf.h:77,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-strbuf.h:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - struct lwan_strbuf*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 78
    functionName: lwan_strbuf_set_staticz
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.h
    functionUses: 2
    functionsReached:
    - strlen
    - lwan_strbuf_set_static
    linkageType: ''
    returnType: bool
    signature: "bool lwan_strbuf_set_staticz(struct lwan_strbuf *s1,\n                                           const
      char *s2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_set
      Src: /src/lwan/src/lib/lwan-strbuf.h:83,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-strbuf.h:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - struct lwan_strbuf*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 81
    functionDepth: 1
    functionLinenumber: 81
    functionLinenumberEnd: 84
    functionName: lwan_strbuf_setz
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.h
    functionUses: 0
    functionsReached:
    - lwan_strbuf_set
    - strlen
    linkageType: ''
    returnType: bool
    signature: bool lwan_strbuf_setz(struct lwan_strbuf *s1, const char *s2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct lwan_strbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 102
    functionName: lwan_strbuf_get_length
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.h
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t lwan_strbuf_get_length(const struct lwan_strbuf *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct lwan_strbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 107
    functionName: lwan_strbuf_get_buffer
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.h
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *lwan_strbuf_get_buffer(const struct lwan_strbuf *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - symbol_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    functionName: Z
    functionSourceFile: /src/lwan/src/lib/lwan-tables.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Z(symbol_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - symbol_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: Z
    functionSourceFile: /src/lwan/src/lib/lwan-tables.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Z(symbol_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 50
    functionName: lwan_tables_shutdown
    functionSourceFile: /src/lwan/src/lib/lwan-tables.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void lwan_tables_shutdown(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan-tables.c:57,1
    - Dst: BrotliDecoderDecompress
      Src: /src/lwan/src/lib/lwan-tables.c:64,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-tables.c:68,1
    - Dst: ZSTD_decompress
      Src: /src/lwan/src/lib/lwan-tables.c:71,1
    - Dst: ZSTD_isError
      Src: /src/lwan/src/lib/lwan-tables.c:73,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-tables.c:74,1
    - Dst: libdeflate_alloc_decompressor
      Src: /src/lwan/src/lib/lwan-tables.c:76,1
    - Dst: libdeflate_deflate_decompress
      Src: /src/lwan/src/lib/lwan-tables.c:79,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-tables.c:86,1
    - Dst: libdeflate_free_decompressor
      Src: /src/lwan/src/lib/lwan-tables.c:89,1
    - Dst: Z
      Src: /src/lwan/src/lib/lwan-tables.c:93,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-tables.c:96,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-tables.c:102,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-tables.c:109,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-tables.c:115,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-tables.c:115,1
    - Dst: lwan_determine_mime_type_for_file_name
      Src: /src/lwan/src/lib/lwan-tables.c:115,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-tables.c:117,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-tables.c:117,1
    - Dst: lwan_determine_mime_type_for_file_name
      Src: /src/lwan/src/lib/lwan-tables.c:117,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-tables.c:119,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-tables.c:119,1
    - Dst: lwan_determine_mime_type_for_file_name
      Src: /src/lwan/src/lib/lwan-tables.c:119,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-tables.c:121,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-tables.c:121,1
    - Dst: lwan_determine_mime_type_for_file_name
      Src: /src/lwan/src/lib/lwan-tables.c:121,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-tables.c:123,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-tables.c:123,1
    - Dst: lwan_determine_mime_type_for_file_name
      Src: /src/lwan/src/lib/lwan-tables.c:123,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-tables.c:125,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-tables.c:125,1
    - Dst: lwan_determine_mime_type_for_file_name
      Src: /src/lwan/src/lib/lwan-tables.c:125,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-tables.c:126,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-tables.c:126,1
    - Dst: lwan_determine_mime_type_for_file_name
      Src: /src/lwan/src/lib/lwan-tables.c:126,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-tables.c:128,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-tables.c:128,1
    - Dst: lwan_determine_mime_type_for_file_name
      Src: /src/lwan/src/lib/lwan-tables.c:128,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-tables.c:130,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-tables.c:130,1
    - Dst: lwan_determine_mime_type_for_file_name
      Src: /src/lwan/src/lib/lwan-tables.c:130,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-tables.c:132,1
    - Dst: streq
      Src: /src/lwan/src/lib/lwan-tables.c:132,1
    - Dst: lwan_determine_mime_type_for_file_name
      Src: /src/lwan/src/lib/lwan-tables.c:132,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: "(streq(lwan_determine_mime_type_for_file_name(\".mkv\"),\n                 \"video/x-matroska\"))"
      pos:
        line_end: 115
        line_start: 114
        source_file: /src/lwan/src/lib/lwan-tables.c
    - condition: "(streq(lwan_determine_mime_type_for_file_name(\".BZ2\"),\n                 \"application/x-bzip2\"))"
      pos:
        line_end: 128
        line_start: 127
        source_file: /src/lwan/src/lib/lwan-tables.c
    - condition: "(streq(lwan_determine_mime_type_for_file_name(\".xml\"),\n                 \"application/xml\"))"
      pos:
        line_end: 117
        line_start: 116
        source_file: /src/lwan/src/lib/lwan-tables.c
    - condition: "(streq(lwan_determine_mime_type_for_file_name(\"\"),\n                 \"application/octet-stream\"))"
      pos:
        line_end: 123
        line_start: 122
        source_file: /src/lwan/src/lib/lwan-tables.c
    - condition: "(streq(lwan_determine_mime_type_for_file_name(\".z1\"),\n                 \"application/x-zmachine\"))"
      pos:
        line_end: 130
        line_start: 129
        source_file: /src/lwan/src/lib/lwan-tables.c
    - condition: "(streq(lwan_determine_mime_type_for_file_name(\".nosuchext\"),\n
        \                \"application/octet-stream\"))"
      pos:
        line_end: 119
        line_start: 118
        source_file: /src/lwan/src/lib/lwan-tables.c
    - condition: (streq(lwan_determine_mime_type_for_file_name(".gif"), "image/gif"))
      pos:
        line_end: 124
        line_start: 124
        source_file: /src/lwan/src/lib/lwan-tables.c
    - condition: "(streq(lwan_determine_mime_type_for_file_name(\"nodotinfilename\"),\n
        \                \"application/octet-stream\"))"
      pos:
        line_end: 121
        line_start: 120
        source_file: /src/lwan/src/lib/lwan-tables.c
    - condition: "(streq(lwan_determine_mime_type_for_file_name(\".JS\"),\n                 \"text/javascript\"))"
      pos:
        line_end: 126
        line_start: 125
        source_file: /src/lwan/src/lib/lwan-tables.c
    - condition: "(streq(lwan_determine_mime_type_for_file_name(\".asm\"),\n                 \"text/x-asm\"))"
      pos:
        line_end: 132
        line_start: 131
        source_file: /src/lwan/src/lib/lwan-tables.c
    constantsTouched: []
    func_position:
      end: 134
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 134
    functionName: lwan_tables_init
    functionSourceFile: /src/lwan/src/lib/lwan-tables.c
    functionUses: 1
    functionsReached:
    - lwan_determine_mime_type_for_file_name
    - ZSTD_isError
    - BrotliDecoderDecompress
    - lwan_log_critical
    - libdeflate_free_decompressor
    - ZSTD_decompress
    - libdeflate_deflate_decompress
    - lwan_log_debug
    - libdeflate_alloc_decompressor
    - strlen
    - assert
    - Z
    - streq
    linkageType: ''
    returnType: void
    signature: void lwan_tables_init(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FOR_EACH_HTTP_STATUS
      Src: /src/lwan/src/lib/lwan-tables.c:147,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-tables.c:150,1
    - Dst: lwan_http_status_is_valid
      Src: /src/lwan/src/lib/lwan-tables.c:150,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-tables.c:151,1
    - Dst: lwan_http_status_is_valid
      Src: /src/lwan/src/lib/lwan-tables.c:151,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-tables.c:152,1
    - Dst: lwan_http_status_is_valid
      Src: /src/lwan/src/lib/lwan-tables.c:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (!lwan_http_status_is_valid(-1))
      pos:
        line_end: 150
        line_start: 150
        source_file: /src/lwan/src/lib/lwan-tables.c
    - condition: (!lwan_http_status_is_valid(0))
      pos:
        line_end: 149
        line_start: 149
        source_file: /src/lwan/src/lib/lwan-tables.c
    - condition: (!lwan_http_status_is_valid(299))
      pos:
        line_end: 151
        line_start: 151
        source_file: /src/lwan/src/lib/lwan-tables.c
    constantsTouched: []
    func_position:
      end: 153
      start: 136
    functionDepth: 1
    functionLinenumber: 136
    functionLinenumberEnd: 153
    functionName: LWAN_SELF_TEST
    functionSourceFile: /src/lwan/src/lib/lwan-tables.c
    functionUses: 1
    functionsReached:
    - lwan_http_status_is_valid
    - FOR_EACH_HTTP_STATUS
    - assert
    linkageType: ''
    returnType: void
    signature: void LWAN_SELF_TEST(status_codes)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - id
    - ','
    - code
    - ','
    - short
    - ','
    - long
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 138
    functionDepth: 0
    functionLinenumber: 138
    functionLinenumberEnd: 147
    functionName: ASSERT_STATUS
    functionSourceFile: /src/lwan/src/lib/lwan-tables.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ASSERT_STATUS(id, code, short, long)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ext
    argTypes:
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 167
    functionName: bsearch_mime_type
    functionSourceFile: /src/lwan/src/lib/lwan-tables.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE *bsearch_mime_type(uint64_t ext)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/lwan/src/lib/lwan-tables.c:171,1
    - Dst: strncpy
      Src: /src/lwan/src/lib/lwan-tables.c:180,1
    - Dst: bsearch_mime_type
      Src: /src/lwan/src/lib/lwan-tables.c:183,1
    - Dst: htobe64
      Src: /src/lwan/src/lib/lwan-tables.c:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - file_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 169
    functionDepth: 1
    functionLinenumber: 169
    functionLinenumberEnd: 184
    functionName: lwan_determine_mime_type_for_file_name
    functionSourceFile: /src/lwan/src/lib/lwan-tables.c
    functionUses: 5
    functionsReached:
    - bsearch_mime_type
    - strrchr
    - htobe64
    - strncpy
    linkageType: ''
    returnType: char
    signature: char *lwan_determine_mime_type_for_file_name(const char *file_name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_lookup_http_status_impl
      Src: /src/lwan/src/lib/lwan-tables.c:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - status
    argTypes:
    - enum lwan_http_status
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 192
    functionName: lwan_http_status_as_string_with_code
    functionSourceFile: /src/lwan/src/lib/lwan-tables.c
    functionUses: 4
    functionsReached:
    - lwan_lookup_http_status_impl
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: 'ALWAYS_INLINE *

      lwan_http_status_as_string_with_code(const enum lwan_http_status status)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_is_http_status_valid_impl
      Src: /src/lwan/src/lib/lwan-tables.c:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - status
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 197
    functionName: lwan_http_status_is_valid
    functionSourceFile: /src/lwan/src/lib/lwan-tables.c
    functionUses: 2
    functionsReached:
    - lwan_is_http_status_valid_impl
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE lwan_http_status_is_valid(int status)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_http_status_as_string_with_code
      Src: /src/lwan/src/lib/lwan-tables.c:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - status
    argTypes:
    - enum lwan_http_status
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 203
    functionName: lwan_http_status_as_string
    functionSourceFile: /src/lwan/src/lib/lwan-tables.c
    functionUses: 1
    functionsReached:
    - lwan_http_status_as_string_with_code
    linkageType: ''
    returnType: char
    signature: 'char *

      lwan_http_status_as_string(const enum lwan_http_status status)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_lookup_http_status_impl
      Src: /src/lwan/src/lib/lwan-tables.c:207,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-tables.c:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - status
    argTypes:
    - enum lwan_http_status
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 209
    functionName: lwan_http_status_as_descriptive_string
    functionSourceFile: /src/lwan/src/lib/lwan-tables.c
    functionUses: 1
    functionsReached:
    - strlen
    - lwan_lookup_http_status_impl
    linkageType: ''
    returnType: char
    signature: char *lwan_http_status_as_descriptive_string(const enum lwan_http_status
      status)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 305
      start: 302
    functionDepth: 0
    functionLinenumber: 302
    functionLinenumberEnd: 305
    functionName: lwan_char_isspace
    functionSourceFile: /src/lwan/src/lib/lwan-tables.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE lwan_char_isspace(char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 310
    functionName: lwan_char_iscgiheader
    functionSourceFile: /src/lwan/src/lib/lwan-tables.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE lwan_char_iscgiheader(char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 315
    functionName: lwan_char_isxdigit
    functionSourceFile: /src/lwan/src/lib/lwan-tables.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE lwan_char_isxdigit(char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 320
    functionName: lwan_char_isdigit
    functionSourceFile: /src/lwan/src/lib/lwan-tables.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE lwan_char_isdigit(char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 325
    functionName: lwan_char_isalpha
    functionSourceFile: /src/lwan/src/lib/lwan-tables.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE lwan_char_isalpha(char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ch
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 330
      start: 327
    functionDepth: 0
    functionLinenumber: 327
    functionLinenumberEnd: 330
    functionName: lwan_char_isalnum
    functionSourceFile: /src/lwan/src/lib/lwan-tables.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE lwan_char_isalnum(char ch)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-tables.c:336,1
    - Dst: isxdigit
      Src: /src/lwan/src/lib/lwan-tables.c:336,1
    - Dst: lwan_char_isxdigit
      Src: /src/lwan/src/lib/lwan-tables.c:336,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-tables.c:337,1
    - Dst: isdigit
      Src: /src/lwan/src/lib/lwan-tables.c:337,1
    - Dst: lwan_char_isdigit
      Src: /src/lwan/src/lib/lwan-tables.c:337,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-tables.c:338,1
    - Dst: isalpha
      Src: /src/lwan/src/lib/lwan-tables.c:338,1
    - Dst: lwan_char_isalpha
      Src: /src/lwan/src/lib/lwan-tables.c:338,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-tables.c:339,1
    - Dst: isalnum
      Src: /src/lwan/src/lib/lwan-tables.c:339,1
    - Dst: lwan_char_isalnum
      Src: /src/lwan/src/lib/lwan-tables.c:339,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-tables.c:340,1
    - Dst: memchr
      Src: /src/lwan/src/lib/lwan-tables.c:340,1
    - Dst: lwan_char_isspace
      Src: /src/lwan/src/lib/lwan-tables.c:340,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts:
    - condition: (!!isxdigit((char)i) == !!lwan_char_isxdigit((char)i))
      pos:
        line_end: 335
        line_start: 335
        source_file: /src/lwan/src/lib/lwan-tables.c
    - condition: (!!isdigit((char)i) == !!lwan_char_isdigit((char)i))
      pos:
        line_end: 336
        line_start: 336
        source_file: /src/lwan/src/lib/lwan-tables.c
    - condition: (!!isalpha((char)i) == !!lwan_char_isalpha((char)i))
      pos:
        line_end: 337
        line_start: 337
        source_file: /src/lwan/src/lib/lwan-tables.c
    - condition: (!!isalnum((char)i) == !!lwan_char_isalnum((char)i))
      pos:
        line_end: 338
        line_start: 338
        source_file: /src/lwan/src/lib/lwan-tables.c
    - condition: (!!memchr(" \t\n\r", i, 4) == !!lwan_char_isspace((char)i))
      pos:
        line_end: 339
        line_start: 339
        source_file: /src/lwan/src/lib/lwan-tables.c
    constantsTouched: []
    func_position:
      end: 342
      start: 333
    functionDepth: 1
    functionLinenumber: 333
    functionLinenumberEnd: 342
    functionName: LWAN_SELF_TEST
    functionSourceFile: /src/lwan/src/lib/lwan-tables.c
    functionUses: 1
    functionsReached:
    - lwan_char_isalnum
    - isxdigit
    - memchr
    - isalnum
    - lwan_char_isspace
    - lwan_char_isalpha
    - assert
    - lwan_char_isxdigit
    - isalpha
    - lwan_char_isdigit
    - isdigit
    linkageType: ''
    returnType: void
    signature: void LWAN_SELF_TEST(compare_with_ctype)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - value
    - ','
    - bits
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 22
    functionName: rol
    functionSourceFile: /src/lwan/src/lib/sha1.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rol(value, bits)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 26
    functionName: blk0
    functionSourceFile: /src/lwan/src/lib/sha1.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: blk0(i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 30
    functionName: blk
    functionSourceFile: /src/lwan/src/lib/sha1.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: blk(i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - v
    - ','
    - w
    - ','
    - x
    - ','
    - y
    - ','
    - z
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: R0
    functionSourceFile: /src/lwan/src/lib/sha1.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: R0(v, w, x, y, z, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - v
    - ','
    - w
    - ','
    - x
    - ','
    - y
    - ','
    - z
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 38
    functionName: R1
    functionSourceFile: /src/lwan/src/lib/sha1.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: R1(v, w, x, y, z, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - v
    - ','
    - w
    - ','
    - x
    - ','
    - y
    - ','
    - z
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: R2
    functionSourceFile: /src/lwan/src/lib/sha1.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: R2(v, w, x, y, z, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - v
    - ','
    - w
    - ','
    - x
    - ','
    - y
    - ','
    - z
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: R3
    functionSourceFile: /src/lwan/src/lib/sha1.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: R3(v, w, x, y, z, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 13
    argNames:
    - (
    - v
    - ','
    - w
    - ','
    - x
    - ','
    - y
    - ','
    - z
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: R4
    functionSourceFile: /src/lwan/src/lib/sha1.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: R4(v, w, x, y, z, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 51
    functionName: STATE
    functionSourceFile: /src/lwan/src/lib/sha1.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: STATE(i)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/lwan/src/lib/sha1.c:59,1
    - Dst: memcpy
      Src: /src/lwan/src/lib/sha1.c:62,1
    - Dst: R0
      Src: /src/lwan/src/lib/sha1.c:66,1
    - Dst: STATE
      Src: /src/lwan/src/lib/sha1.c:66,1
    - Dst: STATE
      Src: /src/lwan/src/lib/sha1.c:66,1
    - Dst: STATE
      Src: /src/lwan/src/lib/sha1.c:66,1
    - Dst: STATE
      Src: /src/lwan/src/lib/sha1.c:66,1
    - Dst: STATE
      Src: /src/lwan/src/lib/sha1.c:66,1
    - Dst: R1
      Src: /src/lwan/src/lib/sha1.c:69,1
    - Dst: STATE
      Src: /src/lwan/src/lib/sha1.c:69,1
    - Dst: STATE
      Src: /src/lwan/src/lib/sha1.c:69,1
    - Dst: STATE
      Src: /src/lwan/src/lib/sha1.c:69,1
    - Dst: STATE
      Src: /src/lwan/src/lib/sha1.c:69,1
    - Dst: STATE
      Src: /src/lwan/src/lib/sha1.c:69,1
    - Dst: R2
      Src: /src/lwan/src/lib/sha1.c:73,1
    - Dst: STATE
      Src: /src/lwan/src/lib/sha1.c:73,1
    - Dst: STATE
      Src: /src/lwan/src/lib/sha1.c:73,1
    - Dst: STATE
      Src: /src/lwan/src/lib/sha1.c:73,1
    - Dst: STATE
      Src: /src/lwan/src/lib/sha1.c:73,1
    - Dst: STATE
      Src: /src/lwan/src/lib/sha1.c:73,1
    - Dst: R3
      Src: /src/lwan/src/lib/sha1.c:77,1
    - Dst: STATE
      Src: /src/lwan/src/lib/sha1.c:77,1
    - Dst: STATE
      Src: /src/lwan/src/lib/sha1.c:77,1
    - Dst: STATE
      Src: /src/lwan/src/lib/sha1.c:77,1
    - Dst: STATE
      Src: /src/lwan/src/lib/sha1.c:77,1
    - Dst: STATE
      Src: /src/lwan/src/lib/sha1.c:77,1
    - Dst: R4
      Src: /src/lwan/src/lib/sha1.c:81,1
    - Dst: STATE
      Src: /src/lwan/src/lib/sha1.c:81,1
    - Dst: STATE
      Src: /src/lwan/src/lib/sha1.c:81,1
    - Dst: STATE
      Src: /src/lwan/src/lib/sha1.c:81,1
    - Dst: STATE
      Src: /src/lwan/src/lib/sha1.c:81,1
    - Dst: STATE
      Src: /src/lwan/src/lib/sha1.c:81,1
    - Dst: memset
      Src: /src/lwan/src/lib/sha1.c:89,1
    - Dst: memset
      Src: /src/lwan/src/lib/sha1.c:90,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 2
    argNames:
    - orig_state
    - buffer
    argTypes:
    - uint32_t[]
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 92
    functionName: sha1_transform
    functionSourceFile: /src/lwan/src/lib/sha1.c
    functionUses: 0
    functionsReached:
    - R3
    - STATE
    - R0
    - memcpy
    - R2
    - memset
    - R4
    - R1
    linkageType: ''
    returnType: void
    signature: void sha1_transform(uint32_t orig_state[5], const unsigned char buffer[64])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - context
    argTypes:
    - sha1_context*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 105
    functionName: sha1_init
    functionSourceFile: /src/lwan/src/lib/sha1.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void sha1_init(sha1_context *context)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/lwan/src/lib/sha1.c:123,1
    - Dst: sha1_transform
      Src: /src/lwan/src/lib/sha1.c:124,1
    - Dst: sha1_transform
      Src: /src/lwan/src/lib/sha1.c:127,1
    - Dst: memcpy
      Src: /src/lwan/src/lib/sha1.c:134,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - context
    - data
    - len
    argTypes:
    - sha1_context*
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 109
    functionDepth: 2
    functionLinenumber: 109
    functionLinenumberEnd: 135
    functionName: sha1_update
    functionSourceFile: /src/lwan/src/lib/sha1.c
    functionUses: 1
    functionsReached:
    - memcpy
    - sha1_transform
    linkageType: ''
    returnType: void
    signature: void sha1_update(sha1_context *context, const unsigned char *data,
      size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sha1_update
      Src: /src/lwan/src/lib/sha1.c:152,1
    - Dst: sha1_update
      Src: /src/lwan/src/lib/sha1.c:155,1
    - Dst: sha1_update
      Src: /src/lwan/src/lib/sha1.c:157,1
    - Dst: memset
      Src: /src/lwan/src/lib/sha1.c:165,1
    - Dst: memset
      Src: /src/lwan/src/lib/sha1.c:168,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - context
    - digest
    argTypes:
    - sha1_context*
    - unsigned char[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 139
    functionDepth: 3
    functionLinenumber: 139
    functionLinenumberEnd: 170
    functionName: sha1_finalize
    functionSourceFile: /src/lwan/src/lib/sha1.c
    functionUses: 1
    functionsReached:
    - memset
    - sha1_update
    linkageType: ''
    returnType: void
    signature: void sha1_finalize(sha1_context *context, unsigned char digest[20])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sha1_init
      Src: /src/lwan/src/lib/sha1.c:182,1
    - Dst: read
      Src: /src/lwan/src/lib/sha1.c:185,1
    - Dst: fileno
      Src: /src/lwan/src/lib/sha1.c:185,1
    - Dst: perror
      Src: /src/lwan/src/lib/sha1.c:188,1
    - Dst: sha1_update
      Src: /src/lwan/src/lib/sha1.c:192,1
    - Dst: sha1_finalize
      Src: /src/lwan/src/lib/sha1.c:198,1
    - Dst: printf
      Src: /src/lwan/src/lib/sha1.c:200,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 176
    functionDepth: 4
    functionLinenumber: 176
    functionLinenumberEnd: 206
    functionName: main
    functionSourceFile: /src/lwan/src/lib/sha1.c
    functionUses: 5
    functionsReached:
    - read
    - fileno
    - sha1_init
    - sha1_update
    - printf
    - sha1_finalize
    - perror
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 91
    functionName: identity_key_copy
    functionSourceFile: /src/lwan/src/lib/lwan-cache.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE *identity_key_copy(const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - key
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 95
    functionName: identity_key_free
    functionSourceFile: /src/lwan/src/lib/lwan-cache.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void identity_key_free(void *key __attribute__((unused)))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan-cache.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 100
    functionName: str_key_copy
    functionSourceFile: /src/lwan/src/lib/lwan-cache.c
    functionUses: 0
    functionsReached:
    - strdup
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE *str_key_copy(const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/lwan/src/lib/lwan-cache.c:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 105
    functionName: str_key_free
    functionSourceFile: /src/lwan/src/lib/lwan-cache.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE str_key_free(void *key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-cache.c:110,1
    - Dst: memcpy
      Src: /src/lwan/src/lib/lwan-cache.c:114,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - key
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 117
    functionName: lwan_value_key_copy
    functionSourceFile: /src/lwan/src/lib/lwan-cache.c
    functionUses: 0
    functionsReached:
    - malloc
    - memcpy
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE *lwan_value_key_copy(const void *key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/lwan/src/lib/lwan-cache.c:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 122
    functionName: lwan_value_key_free
    functionSourceFile: /src/lwan/src/lib/lwan-cache.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE lwan_value_key_free(void *key)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-cache.c:132,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-cache.c:133,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-cache.c:134,1
    - Dst: calloc
      Src: /src/lwan/src/lib/lwan-cache.c:136,1
    - Dst: hash_create_func
      Src: /src/lwan/src/lib/lwan-cache.c:141,1
    - Dst: hash_create_func
      Src: /src/lwan/src/lib/lwan-cache.c:143,1
    - Dst: hash_create_func
      Src: /src/lwan/src/lib/lwan-cache.c:145,1
    - Dst: pthread_rwlock_init
      Src: /src/lwan/src/lib/lwan-cache.c:150,1
    - Dst: pthread_rwlock_init
      Src: /src/lwan/src/lib/lwan-cache.c:152,1
    - Dst: list_head_init
      Src: /src/lwan/src/lib/lwan-cache.c:172,1
    - Dst: lwan_job_add
      Src: /src/lwan/src/lib/lwan-cache.c:174,1
    - Dst: pthread_rwlock_destroy
      Src: /src/lwan/src/lib/lwan-cache.c:179,1
    - Dst: hash_unref
      Src: /src/lwan/src/lib/lwan-cache.c:181,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-cache.c:183,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 52
    argCount: 5
    argNames:
    - create_entry_cb
    - destroy_entry_cb
    - hash_create_func
    - cb_context
    - time_to_live
    argTypes:
    - cache_create_entry_cb
    - cache_destroy_entry_cb
    - hash_create_func_cb
    - void*
    - time_t
    assertStmts:
    - condition: (create_entry_cb)
      pos:
        line_end: 131
        line_start: 131
        source_file: /src/lwan/src/lib/lwan-cache.c
    - condition: (time_to_live > 0)
      pos:
        line_end: 133
        line_start: 133
        source_file: /src/lwan/src/lib/lwan-cache.c
    - condition: (destroy_entry_cb)
      pos:
        line_end: 132
        line_start: 132
        source_file: /src/lwan/src/lib/lwan-cache.c
    constantsTouched: []
    func_position:
      end: 186
      start: 124
    functionDepth: 3
    functionLinenumber: 124
    functionLinenumberEnd: 186
    functionName: cache_create_full
    functionSourceFile: /src/lwan/src/lib/lwan-cache.c
    functionUses: 4
    functionsReached:
    - pthread_rwlock_destroy
    - calloc
    - list_head_init
    - hash_unref
    - free
    - hash_create_func
    - pthread_rwlock_init
    - lwan_job_add
    - assert
    linkageType: ''
    returnType: struct cache
    signature: "struct cache *cache_create_full(cache_create_entry_cb create_entry_cb,\n
      \                               cache_destroy_entry_cb destroy_entry_cb,\n                                hash_create_func_cb
      hash_create_func,\n                                void *cb_context,\n                                time_t
      time_to_live)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cache_create_full
      Src: /src/lwan/src/lib/lwan-cache.c:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - create_entry_cb
    - destroy_entry_cb
    - cb_context
    - time_to_live
    argTypes:
    - cache_create_entry_cb
    - cache_destroy_entry_cb
    - void*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 188
    functionDepth: 4
    functionLinenumber: 188
    functionLinenumberEnd: 195
    functionName: cache_create
    functionSourceFile: /src/lwan/src/lib/lwan-cache.c
    functionUses: 3
    functionsReached:
    - cache_create_full
    linkageType: ''
    returnType: struct cache
    signature: "struct cache *cache_create(cache_create_entry_cb create_entry_cb,\n
      \                          cache_destroy_entry_cb destroy_entry_cb,\n                           void
      *cb_context,\n                           time_t time_to_live)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-cache.c:199,1
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan-cache.c:202,1
    - Dst: lwan_job_del
      Src: /src/lwan/src/lib/lwan-cache.c:207,1
    - Dst: cache_pruner_job
      Src: /src/lwan/src/lib/lwan-cache.c:209,1
    - Dst: pthread_rwlock_destroy
      Src: /src/lwan/src/lib/lwan-cache.c:210,1
    - Dst: pthread_rwlock_destroy
      Src: /src/lwan/src/lib/lwan-cache.c:211,1
    - Dst: hash_unref
      Src: /src/lwan/src/lib/lwan-cache.c:212,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-cache.c:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct cache*
    assertStmts:
    - condition: (cache)
      pos:
        line_end: 198
        line_start: 198
        source_file: /src/lwan/src/lib/lwan-cache.c
    constantsTouched: []
    func_position:
      end: 214
      start: 197
    functionDepth: 3
    functionLinenumber: 197
    functionLinenumberEnd: 214
    functionName: cache_destroy
    functionSourceFile: /src/lwan/src/lib/lwan-cache.c
    functionUses: 8
    functionsReached:
    - pthread_rwlock_destroy
    - hash_unref
    - free
    - cache_pruner_job
    - lwan_log_debug
    - assert
    - lwan_job_del
    linkageType: ''
    returnType: void
    signature: void cache_destroy(struct cache *cache)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - entry
    argTypes:
    - struct cache_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 219
    functionName: cache_entry_is_new
    functionSourceFile: /src/lwan/src/lib/lwan-cache.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool cache_entry_is_new(const struct cache_entry *entry)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-cache.c:228,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-cache.c:229,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-cache.c:232,1
    - Dst: hash_find
      Src: /src/lwan/src/lib/lwan-cache.c:239,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-cache.c:240,1
    - Dst: ATOMIC_INC
      Src: /src/lwan/src/lib/lwan-cache.c:243,1
    - Dst: ATOMIC_INC
      Src: /src/lwan/src/lib/lwan-cache.c:245,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-cache.c:254,1
    - Dst: pthread_rwlock_tryrdlock
      Src: /src/lwan/src/lib/lwan-cache.c:254,1
    - Dst: hash_find
      Src: /src/lwan/src/lib/lwan-cache.c:258,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-cache.c:259,1
    - Dst: ATOMIC_INC
      Src: /src/lwan/src/lib/lwan-cache.c:260,1
    - Dst: pthread_rwlock_unlock
      Src: /src/lwan/src/lib/lwan-cache.c:261,1
    - Dst: ATOMIC_INC
      Src: /src/lwan/src/lib/lwan-cache.c:263,1
    - Dst: pthread_rwlock_unlock
      Src: /src/lwan/src/lib/lwan-cache.c:269,1
    - Dst: ATOMIC_INC
      Src: /src/lwan/src/lib/lwan-cache.c:272,1
    - Dst: struct cache*::key::copy
      Src: /src/lwan/src/lib/lwan-cache.c:275,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-cache.c:276,1
    - Dst: struct cache*::cb::create_entry
      Src: /src/lwan/src/lib/lwan-cache.c:283,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-cache.c:284,1
    - Dst: struct cache*::key::free
      Src: /src/lwan/src/lib/lwan-cache.c:286,1
    - Dst: pthread_rwlock_trywrlock
      Src: /src/lwan/src/lib/lwan-cache.c:292,1
    - Dst: hash_add_unique
      Src: /src/lwan/src/lib/lwan-cache.c:302,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-cache.c:305,1
    - Dst: clock_gettime
      Src: /src/lwan/src/lib/lwan-cache.c:305,1
    - Dst: lwan_log_critical
      Src: /src/lwan/src/lib/lwan-cache.c:306,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-cache.c:310,1
    - Dst: pthread_rwlock_wrlock
      Src: /src/lwan/src/lib/lwan-cache.c:310,1
    - Dst: list_add_tail
      Src: /src/lwan/src/lib/lwan-cache.c:311,1
    - Dst: pthread_rwlock_unlock
      Src: /src/lwan/src/lib/lwan-cache.c:312,1
    - Dst: hash_del
      Src: /src/lwan/src/lib/lwan-cache.c:321,1
    - Dst: pthread_rwlock_unlock
      Src: /src/lwan/src/lib/lwan-cache.c:333,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 64
    argCount: 4
    argNames:
    - cache
    - key
    - create_ctx
    - error
    argTypes:
    - struct cache*
    - void*
    - void*
    - int*
    assertStmts:
    - condition: (cache)
      pos:
        line_end: 227
        line_start: 227
        source_file: /src/lwan/src/lib/lwan-cache.c
    - condition: (error)
      pos:
        line_end: 228
        line_start: 228
        source_file: /src/lwan/src/lib/lwan-cache.c
    - condition: (key)
      pos:
        line_end: 231
        line_start: 231
        source_file: /src/lwan/src/lib/lwan-cache.c
    constantsTouched: []
    func_position:
      end: 335
      start: 221
    functionDepth: 4
    functionLinenumber: 221
    functionLinenumberEnd: 335
    functionName: cache_get_and_ref_entry_with_ctx
    functionSourceFile: /src/lwan/src/lib/lwan-cache.c
    functionUses: 0
    functionsReached:
    - struct cache*::cb::create_entry
    - pthread_rwlock_unlock
    - pthread_rwlock_tryrdlock
    - struct cache*::key::copy
    - ATOMIC_INC
    - clock_gettime
    - lwan_log_critical
    - LIKELY
    - hash_del
    - list_add_tail
    - hash_find
    - struct cache*::key::free
    - assert
    - pthread_rwlock_trywrlock
    - pthread_rwlock_wrlock
    - hash_add_unique
    - UNLIKELY
    linkageType: ''
    returnType: struct cache_entry
    signature: "struct cache_entry *cache_get_and_ref_entry_with_ctx(struct cache
      *cache,\n                                            const void *key, void *create_ctx,\n
      \                                           int *error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cache_get_and_ref_entry_with_ctx
      Src: /src/lwan/src/lib/lwan-cache.c:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - cache
    - key
    - error
    argTypes:
    - struct cache*
    - void*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 337
    functionDepth: 5
    functionLinenumber: 337
    functionLinenumberEnd: 341
    functionName: cache_get_and_ref_entry
    functionSourceFile: /src/lwan/src/lib/lwan-cache.c
    functionUses: 3
    functionsReached:
    - cache_get_and_ref_entry_with_ctx
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: 'ALWAYS_INLINE *

      cache_get_and_ref_entry(struct cache *cache, const void *key, int *error)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-cache.c:345,1
    - Dst: struct cache*::key::free
      Src: /src/lwan/src/lib/lwan-cache.c:359,1
    - Dst: struct cache*::cb::destroy_entry
      Src: /src/lwan/src/lib/lwan-cache.c:361,1
    - Dst: ATOMIC_DEC
      Src: /src/lwan/src/lib/lwan-cache.c:364,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-cache.c:370,1
    - Dst: struct cache*::cb::destroy_entry
      Src: /src/lwan/src/lib/lwan-cache.c:371,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - cache
    - entry
    argTypes:
    - struct cache*
    - struct cache_entry*
    assertStmts:
    - condition: (entry)
      pos:
        line_end: 344
        line_start: 344
        source_file: /src/lwan/src/lib/lwan-cache.c
    - condition: (!(entry->flags & FREE_KEY_ON_DESTROY))
      pos:
        line_end: 369
        line_start: 369
        source_file: /src/lwan/src/lib/lwan-cache.c
    constantsTouched: []
    func_position:
      end: 373
      start: 343
    functionDepth: 1
    functionLinenumber: 343
    functionLinenumberEnd: 373
    functionName: cache_entry_unref
    functionSourceFile: /src/lwan/src/lib/lwan-cache.c
    functionUses: 1
    functionsReached:
    - ATOMIC_DEC
    - struct cache*::cb::destroy_entry
    - struct cache*::key::free
    - assert
    linkageType: ''
    returnType: void
    signature: void cache_entry_unref(struct cache *cache, struct cache_entry *entry)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-cache.c:389,1
    - Dst: pthread_rwlock_trywrlock
      Src: /src/lwan/src/lib/lwan-cache.c:389,1
    - Dst: list_empty
      Src: /src/lwan/src/lib/lwan-cache.c:393,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-cache.c:394,1
    - Dst: pthread_rwlock_unlock
      Src: /src/lwan/src/lib/lwan-cache.c:394,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-cache.c:395,1
    - Dst: list_head_init
      Src: /src/lwan/src/lib/lwan-cache.c:401,1
    - Dst: list_append_list
      Src: /src/lwan/src/lib/lwan-cache.c:402,1
    - Dst: list_head_init
      Src: /src/lwan/src/lib/lwan-cache.c:403,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-cache.c:405,1
    - Dst: pthread_rwlock_unlock
      Src: /src/lwan/src/lib/lwan-cache.c:405,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-cache.c:406,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-cache.c:410,1
    - Dst: clock_gettime
      Src: /src/lwan/src/lib/lwan-cache.c:410,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-cache.c:411,1
    - Dst: list_for_each_safe
      Src: /src/lwan/src/lib/lwan-cache.c:415,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-cache.c:418,1
    - Dst: list_del
      Src: /src/lwan/src/lib/lwan-cache.c:421,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-cache.c:423,1
    - Dst: pthread_rwlock_wrlock
      Src: /src/lwan/src/lib/lwan-cache.c:423,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-cache.c:424,1
    - Dst: hash_del
      Src: /src/lwan/src/lib/lwan-cache.c:428,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-cache.c:430,1
    - Dst: pthread_rwlock_unlock
      Src: /src/lwan/src/lib/lwan-cache.c:430,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-cache.c:431,1
    - Dst: ATOMIC_INC
      Src: /src/lwan/src/lib/lwan-cache.c:433,1
    - Dst: struct cache*::cb::destroy_entry
      Src: /src/lwan/src/lib/lwan-cache.c:436,1
    - Dst: ATOMIC_OP
      Src: /src/lwan/src/lib/lwan-cache.c:439,1
    - Dst: ATOMIC_DEC
      Src: /src/lwan/src/lib/lwan-cache.c:444,1
    - Dst: struct cache*::cb::destroy_entry
      Src: /src/lwan/src/lib/lwan-cache.c:445,1
    - Dst: list_empty
      Src: /src/lwan/src/lib/lwan-cache.c:454,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-cache.c:459,1
    - Dst: pthread_rwlock_wrlock
      Src: /src/lwan/src/lib/lwan-cache.c:459,1
    - Dst: list_prepend_list
      Src: /src/lwan/src/lib/lwan-cache.c:460,1
    - Dst: pthread_rwlock_unlock
      Src: /src/lwan/src/lib/lwan-cache.c:461,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-cache.c:463,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 55
    argCount: 1
    argNames:
    - data
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 375
    functionDepth: 4
    functionLinenumber: 375
    functionLinenumberEnd: 471
    functionName: cache_pruner_job
    functionSourceFile: /src/lwan/src/lib/lwan-cache.c
    functionUses: 1
    functionsReached:
    - list_for_each_safe
    - list_head_init
    - list_append_list
    - list_empty
    - clock_gettime
    - list_del
    - ATOMIC_INC
    - LIKELY
    - hash_del
    - UNLIKELY
    - pthread_rwlock_trywrlock
    - struct cache*::cb::destroy_entry
    - ATOMIC_OP
    - lwan_log_perror
    - pthread_rwlock_wrlock
    - ATOMIC_DEC
    - list_prepend_list
    - pthread_rwlock_unlock
    linkageType: ''
    returnType: bool
    signature: bool cache_pruner_job(void *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cache_entry_unref
      Src: /src/lwan/src/lib/lwan-cache.c:475,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - data1
    - data2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 473
    functionDepth: 2
    functionLinenumber: 473
    functionLinenumberEnd: 476
    functionName: cache_entry_unref_defer
    functionSourceFile: /src/lwan/src/lib/lwan-cache.c
    functionUses: 0
    functionsReached:
    - cache_entry_unref
    linkageType: ''
    returnType: void
    signature: void cache_entry_unref_defer(void *data1, void *data2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-cache.c:485,1
    - Dst: cache_get_and_ref_entry_with_ctx
      Src: /src/lwan/src/lib/lwan-cache.c:490,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-cache.c:492,1
    - Dst: coro_defer2
      Src: /src/lwan/src/lib/lwan-cache.c:498,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-cache.c:509,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - cache
    - coro
    - key
    - create_ctx
    argTypes:
    - struct cache*
    - struct coro*
    - void*
    - void*
    assertStmts:
    - condition: (!(cache->flags & READ_ONLY))
      pos:
        line_end: 484
        line_start: 484
        source_file: /src/lwan/src/lib/lwan-cache.c
    constantsTouched: []
    func_position:
      end: 513
      start: 478
    functionDepth: 5
    functionLinenumber: 478
    functionLinenumberEnd: 513
    functionName: cache_coro_get_and_ref_entry_with_ctx
    functionSourceFile: /src/lwan/src/lib/lwan-cache.c
    functionUses: 1
    functionsReached:
    - coro_defer2
    - LIKELY
    - assert
    - cache_get_and_ref_entry_with_ctx
    - coro_yield
    linkageType: ''
    returnType: struct cache_entry
    signature: "struct cache_entry *cache_coro_get_and_ref_entry_with_ctx(struct cache
      *cache,\n                                                          struct coro
      *coro,\n                                                          const void
      *key,\n                                                          void *create_ctx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cache_coro_get_and_ref_entry_with_ctx
      Src: /src/lwan/src/lib/lwan-cache.c:518,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - cache
    - coro
    - key
    argTypes:
    - struct cache*
    - struct coro*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 515
    functionDepth: 6
    functionLinenumber: 515
    functionLinenumberEnd: 519
    functionName: cache_coro_get_and_ref_entry
    functionSourceFile: /src/lwan/src/lib/lwan-cache.c
    functionUses: 4
    functionsReached:
    - cache_coro_get_and_ref_entry_with_ctx
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: "ALWAYS_INLINE *cache_coro_get_and_ref_entry(\n    struct cache *cache,
      struct coro *coro, const void *key)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_job_del
      Src: /src/lwan/src/lib/lwan-cache.c:524,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cache
    argTypes:
    - struct cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 521
    functionDepth: 3
    functionLinenumber: 521
    functionLinenumberEnd: 525
    functionName: cache_make_read_only
    functionSourceFile: /src/lwan/src/lib/lwan-cache.c
    functionUses: 1
    functionsReached:
    - lwan_job_del
    linkageType: ''
    returnType: void
    signature: void cache_make_read_only(struct cache *cache)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unsetenv
      Src: /src/lwan/src/lib/sd-daemon.c:40,1
    - Dst: unsetenv
      Src: /src/lwan/src/lib/sd-daemon.c:41,1
    - Dst: unsetenv
      Src: /src/lwan/src/lib/sd-daemon.c:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 43
    functionName: unsetenv_listen_vars
    functionSourceFile: /src/lwan/src/lib/sd-daemon.c
    functionUses: 0
    functionsReached:
    - unsetenv
    linkageType: ''
    returnType: void
    signature: void unsetenv_listen_vars(void)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/lwan/src/lib/sd-daemon.c:49,1
    - Dst: parse_int
      Src: /src/lwan/src/lib/sd-daemon.c:55,1
    - Dst: getpid
      Src: /src/lwan/src/lib/sd-daemon.c:62,1
    - Dst: getenv
      Src: /src/lwan/src/lib/sd-daemon.c:67,1
    - Dst: parse_int
      Src: /src/lwan/src/lib/sd-daemon.c:73,1
    - Dst: fcntl
      Src: /src/lwan/src/lib/sd-daemon.c:88,1
    - Dst: fcntl
      Src: /src/lwan/src/lib/sd-daemon.c:97,1
    - Dst: unsetenv_listen_vars
      Src: /src/lwan/src/lib/sd-daemon.c:107,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 56
    argCount: 1
    argNames:
    - unset_environment
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 110
    functionName: sd_listen_fds
    functionSourceFile: /src/lwan/src/lib/sd-daemon.c
    functionUses: 1
    functionsReached:
    - parse_int
    - fcntl
    - unsetenv_listen_vars
    - getpid
    - getenv
    linkageType: ''
    returnType: int
    signature: int sd_listen_fds(int unset_environment)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/lwan/src/lib/sd-daemon.c:123,1
    - Dst: strlen
      Src: /src/lwan/src/lib/sd-daemon.c:127,1
    - Dst: calloc
      Src: /src/lwan/src/lib/sd-daemon.c:128,1
    - Dst: free
      Src: /src/lwan/src/lib/sd-daemon.c:130,1
    - Dst: memcpy
      Src: /src/lwan/src/lib/sd-daemon.c:135,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - p
    - s
    - n
    argTypes:
    - char***
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 139
    functionName: strv_extend_n
    functionSourceFile: /src/lwan/src/lib/sd-daemon.c
    functionUses: 0
    functionsReached:
    - memcpy
    - strlen
    - calloc
    - free
    linkageType: ''
    returnType: int
    signature: int strv_extend_n(char ***p, const char *s, int n)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/lwan/src/lib/sd-daemon.c:142,1
    - Dst: strchr
      Src: /src/lwan/src/lib/sd-daemon.c:148,1
    - Dst: calloc
      Src: /src/lwan/src/lib/sd-daemon.c:156,1
    - Dst: free
      Src: /src/lwan/src/lib/sd-daemon.c:158,1
    - Dst: strchr
      Src: /src/lwan/src/lib/sd-daemon.c:169,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 3
    argNames:
    - p
    - value
    - separator
    argTypes:
    - char***
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 179
    functionName: strv_split
    functionSourceFile: /src/lwan/src/lib/sd-daemon.c
    functionUses: 0
    functionsReached:
    - strdup
    - calloc
    - strchr
    - free
    linkageType: ''
    returnType: int
    signature: int strv_split(char ***p, const char *value, const char separator)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: sd_listen_fds
      Src: /src/lwan/src/lib/sd-daemon.c:189,1
    - Dst: getenv
      Src: /src/lwan/src/lib/sd-daemon.c:191,1
    - Dst: strv_split
      Src: /src/lwan/src/lib/sd-daemon.c:193,1
    - Dst: unsetenv_listen_vars
      Src: /src/lwan/src/lib/sd-daemon.c:196,1
    - Dst: sd_listen_fds
      Src: /src/lwan/src/lib/sd-daemon.c:205,1
    - Dst: strv_extend_n
      Src: /src/lwan/src/lib/sd-daemon.c:217,1
    - Dst: free
      Src: /src/lwan/src/lib/sd-daemon.c:227,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 2
    argNames:
    - unset_environment
    - names
    argTypes:
    - int
    - char***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 181
    functionDepth: 2
    functionLinenumber: 181
    functionLinenumberEnd: 229
    functionName: sd_listen_fds_with_names
    functionSourceFile: /src/lwan/src/lib/sd-daemon.c
    functionUses: 1
    functionsReached:
    - strv_extend_n
    - free
    - unsetenv_listen_vars
    - sd_listen_fds
    - getenv
    - strv_split
    linkageType: ''
    returnType: int
    signature: int sd_listen_fds_with_names(int unset_environment, char ***names)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: fstat
      Src: /src/lwan/src/lib/sd-daemon.c:240,1
    - Dst: S_ISSOCK
      Src: /src/lwan/src/lib/sd-daemon.c:243,1
    - Dst: getsockopt
      Src: /src/lwan/src/lib/sd-daemon.c:250,1
    - Dst: getsockopt
      Src: /src/lwan/src/lib/sd-daemon.c:264,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 26
    argCount: 3
    argNames:
    - fd
    - type
    - listening
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 275
    functionName: sd_is_socket_internal
    functionSourceFile: /src/lwan/src/lib/sd-daemon.c
    functionUses: 0
    functionsReached:
    - fstat
    - getsockopt
    - S_ISSOCK
    linkageType: ''
    returnType: int
    signature: int sd_is_socket_internal(int fd, int type, int listening)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: sd_is_socket_internal
      Src: /src/lwan/src/lib/sd-daemon.c:291,1
    - Dst: getsockname
      Src: /src/lwan/src/lib/sd-daemon.c:295,1
    - Dst: htons
      Src: /src/lwan/src/lib/sd-daemon.c:314,1
    - Dst: htons
      Src: /src/lwan/src/lib/sd-daemon.c:319,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 27
    argCount: 5
    argNames:
    - fd
    - family
    - type
    - listening
    - port
    argTypes:
    - int
    - int
    - int
    - int
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 283
    functionDepth: 1
    functionLinenumber: 283
    functionLinenumberEnd: 324
    functionName: sd_is_socket_inet
    functionSourceFile: /src/lwan/src/lib/sd-daemon.c
    functionUses: 1
    functionsReached:
    - sd_is_socket_internal
    - htons
    - getsockname
    linkageType: ''
    returnType: int
    signature: int sd_is_socket_inet(int fd, int family, int type, int listening,
      uint16_t port)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-mod-lua.c:56,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-lua.c:58,1
    - Dst: lwan_lua_create_state
      Src: /src/lwan/src/lib/lwan-mod-lua.c:61,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-mod-lua.c:62,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-lua.c:65,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - key
    - cache_ctx
    - create_ctx
    argTypes:
    - void*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 51
    functionDepth: 3
    functionLinenumber: 51
    functionLinenumberEnd: 67
    functionName: state_create
    functionSourceFile: /src/lwan/src/lib/lwan-mod-lua.c
    functionUses: 0
    functionsReached:
    - free
    - lwan_lua_create_state
    - LIKELY
    - malloc
    - UNLIKELY
    linkageType: ''
    returnType: struct cache_entry
    signature: "struct cache_entry *state_create(const void *key __attribute__((unused)),\n
      \                                       void *cache_ctx,\n                                        void
      *create_ctx __attribute__((unused)))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lua_close
      Src: /src/lwan/src/lib/lwan-mod-lua.c:74,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-lua.c:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - entry
    - context
    argTypes:
    - struct cache_entry*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 76
    functionName: state_destroy
    functionSourceFile: /src/lwan/src/lib/lwan-mod-lua.c
    functionUses: 0
    functionsReached:
    - lua_close
    - free
    linkageType: ''
    returnType: void
    signature: "void state_destroy(struct cache_entry *entry,\n                          void
      *context __attribute__((unused)))"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pthread_getspecific
      Src: /src/lwan/src/lib/lwan-mod-lua.c:80,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-lua.c:82,1
    - Dst: lwan_log_debug
      Src: /src/lwan/src/lib/lwan-mod-lua.c:83,1
    - Dst: cache_create
      Src: /src/lwan/src/lib/lwan-mod-lua.c:85,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-lua.c:86,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-mod-lua.c:87,1
    - Dst: pthread_setspecific
      Src: /src/lwan/src/lib/lwan-mod-lua.c:90,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - priv
    argTypes:
    - struct lwan_lua_priv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 78
    functionDepth: 5
    functionLinenumber: 78
    functionLinenumberEnd: 94
    functionName: get_or_create_cache
    functionSourceFile: /src/lwan/src/lib/lwan-mod-lua.c
    functionUses: 0
    functionsReached:
    - pthread_getspecific
    - cache_create
    - lwan_log_debug
    - lwan_log_error
    - UNLIKELY
    - pthread_setspecific
    linkageType: ''
    returnType: struct cache
    signature: struct cache *get_or_create_cache(struct lwan_lua_priv *priv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: luaL_unref
      Src: /src/lwan/src/lib/lwan-mod-lua.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - data1
    - data2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 102
    functionName: unref_thread
    functionSourceFile: /src/lwan/src/lib/lwan-mod-lua.c
    functionUses: 0
    functionsReached:
    - luaL_unref
    linkageType: ''
    returnType: void
    signature: void unref_thread(void *data1, void *data2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FOR_EACH_REQUEST_METHOD
      Src: /src/lwan/src/lib/lwan-mod-lua.c:112,1
    - Dst: lwan_request_get_method
      Src: /src/lwan/src/lib/lwan-mod-lua.c:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - request
    argTypes:
    - struct lwan_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 119
    functionName: get_handle_prefix
    functionSourceFile: /src/lwan/src/lib/lwan-mod-lua.c
    functionUses: 0
    functionsReached:
    - FOR_EACH_REQUEST_METHOD
    - lwan_request_get_method
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE get_handle_prefix(struct lwan_request *request)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 108
    functionName: ENTRY
    functionSourceFile: /src/lwan/src/lib/lwan-mod-lua.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ENTRY(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 11
    argNames:
    - (
    - upper
    - ','
    - lower
    - ','
    - mask
    - ','
    - constant
    - ','
    - probability
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 110
    functionName: GEN_TABLE_ENTRY
    functionSourceFile: /src/lwan/src/lib/lwan-mod-lua.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GEN_TABLE_ENTRY(upper, lower, mask, constant, probability)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: get_handle_prefix
      Src: /src/lwan/src/lib/lwan-mod-lua.c:124,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-lua.c:126,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-lua.c:128,1
    - Dst: strndupa
      Src: /src/lwan/src/lib/lwan-mod-lua.c:134,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-lua.c:142,1
    - Dst: isalnum
      Src: /src/lwan/src/lib/lwan-mod-lua.c:142,1
    - Dst: strlen
      Src: /src/lwan/src/lib/lwan-mod-lua.c:146,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-lua.c:153,1
    - Dst: __builtin_add_overflow
      Src: /src/lwan/src/lib/lwan-mod-lua.c:153,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-lua.c:155,1
    - Dst: mempcpy
      Src: /src/lwan/src/lib/lwan-mod-lua.c:158,1
    - Dst: memcpy
      Src: /src/lwan/src/lib/lwan-mod-lua.c:159,1
    - Dst: lua_getglobal
      Src: /src/lwan/src/lib/lwan-mod-lua.c:161,1
    - Dst: lua_isfunction
      Src: /src/lwan/src/lib/lwan-mod-lua.c:162,1
    - Dst: lua_pop
      Src: /src/lwan/src/lib/lwan-mod-lua.c:165,1
    - Dst: lua_getglobal
      Src: /src/lwan/src/lib/lwan-mod-lua.c:166,1
    - Dst: lua_isfunction
      Src: /src/lwan/src/lib/lwan-mod-lua.c:167,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 2
    argNames:
    - L
    - request
    argTypes:
    - lua_State*
    - struct lwan_request*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 121
    functionDepth: 2
    functionLinenumber: 121
    functionLinenumberEnd: 168
    functionName: get_handler_function
    functionSourceFile: /src/lwan/src/lib/lwan-mod-lua.c
    functionUses: 0
    functionsReached:
    - get_handle_prefix
    - isalnum
    - mempcpy
    - strndupa
    - memcpy
    - strlen
    - lua_pop
    - __builtin_add_overflow
    - lua_getglobal
    - UNLIKELY
    - lua_isfunction
    linkageType: ''
    returnType: bool
    signature: bool get_handler_function(lua_State *L, struct lwan_request *request)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lua_newthread
      Src: /src/lwan/src/lib/lwan-mod-lua.c:172,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-lua.c:174,1
    - Dst: luaL_ref
      Src: /src/lwan/src/lib/lwan-mod-lua.c:177,1
    - Dst: coro_defer2
      Src: /src/lwan/src/lib/lwan-mod-lua.c:178,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - L
    - coro
    argTypes:
    - lua_State*
    - struct coro*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 181
    functionName: push_newthread
    functionSourceFile: /src/lwan/src/lib/lwan-mod-lua.c
    functionUses: 0
    functionsReached:
    - lua_newthread
    - luaL_ref
    - UNLIKELY
    - coro_defer2
    linkageType: ''
    returnType: lua_State
    signature: lua_State *push_newthread(lua_State *L, struct coro *coro)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: get_or_create_cache
      Src: /src/lwan/src/lib/lwan-mod-lua.c:189,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-lua.c:190,1
    - Dst: cache_coro_get_and_ref_entry
      Src: /src/lwan/src/lib/lwan-mod-lua.c:194,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-lua.c:196,1
    - Dst: push_newthread
      Src: /src/lwan/src/lib/lwan-mod-lua.c:199,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-lua.c:200,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-mod-lua.c:203,1
    - Dst: get_handler_function
      Src: /src/lwan/src/lib/lwan-mod-lua.c:203,1
    - Dst: lwan_lua_state_push_request
      Src: /src/lwan/src/lib/lwan-mod-lua.c:207,1
    - Dst: lua_resume
      Src: /src/lwan/src/lib/lwan-mod-lua.c:210,1
    - Dst: coro_yield
      Src: /src/lwan/src/lib/lwan-mod-lua.c:212,1
    - Dst: lua_isnil
      Src: /src/lwan/src/lib/lwan-mod-lua.c:216,1
    - Dst: lua_isnumber
      Src: /src/lwan/src/lib/lwan-mod-lua.c:219,1
    - Dst: lua_tointeger
      Src: /src/lwan/src/lib/lwan-mod-lua.c:220,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-mod-lua.c:228,1
    - Dst: lua_tostring
      Src: /src/lwan/src/lib/lwan-mod-lua.c:228,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 3
    argNames:
    - request
    - response
    - instance
    argTypes:
    - struct lwan_request*
    - struct lwan_response*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 183
    functionDepth: 7
    functionLinenumber: 183
    functionLinenumberEnd: 232
    functionName: lua_handle_request
    functionSourceFile: /src/lwan/src/lib/lwan-mod-lua.c
    functionUses: 0
    functionsReached:
    - get_handler_function
    - lwan_lua_state_push_request
    - push_newthread
    - lua_resume
    - lwan_log_error
    - lua_isnil
    - get_or_create_cache
    - lua_tostring
    - coro_yield
    - cache_coro_get_and_ref_entry
    - lua_tointeger
    - UNLIKELY
    - lua_isnumber
    linkageType: ''
    returnType: enum lwan_http_status
    signature: "enum lwan_http_status lua_handle_request(struct lwan_request *request,\n
      \                                               struct lwan_response *response,\n
      \                                               void *instance)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/lwan/src/lib/lwan-mod-lua.c:239,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-mod-lua.c:241,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan-mod-lua.c:246,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-mod-lua.c:248,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan-mod-lua.c:253,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-mod-lua.c:255,1
    - Dst: strdup
      Src: /src/lwan/src/lib/lwan-mod-lua.c:259,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-mod-lua.c:261,1
    - Dst: lwan_straitjacket_allow_dir_path_ro
      Src: /src/lwan/src/lib/lwan-mod-lua.c:264,1
    - Dst: dirname
      Src: /src/lwan/src/lib/lwan-mod-lua.c:264,1
    - Dst: lwan_log_error
      Src: /src/lwan/src/lib/lwan-mod-lua.c:266,1
    - Dst: pthread_key_create
      Src: /src/lwan/src/lib/lwan-mod-lua.c:270,1
    - Dst: lwan_log_perror
      Src: /src/lwan/src/lib/lwan-mod-lua.c:271,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-lua.c:280,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-lua.c:281,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-lua.c:282,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-lua.c:283,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 47
    argCount: 2
    argNames:
    - prefix
    - data
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 234
    functionDepth: 5
    functionLinenumber: 234
    functionLinenumberEnd: 286
    functionName: lua_create
    functionSourceFile: /src/lwan/src/lib/lwan-mod-lua.c
    functionUses: 0
    functionsReached:
    - strdup
    - pthread_key_create
    - calloc
    - free
    - lwan_straitjacket_allow_dir_path_ro
    - lwan_log_perror
    - dirname
    - lwan_log_error
    linkageType: ''
    returnType: void
    signature: void *lua_create(const char *prefix __attribute__((unused)), void *data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pthread_key_delete
      Src: /src/lwan/src/lib/lwan-mod-lua.c:293,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-lua.c:294,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-lua.c:295,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-lua.c:296,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-mod-lua.c:297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - instance
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 299
    functionName: lua_destroy
    functionSourceFile: /src/lwan/src/lib/lwan-mod-lua.c
    functionUses: 0
    functionsReached:
    - pthread_key_delete
    - free
    linkageType: ''
    returnType: void
    signature: void lua_destroy(void *instance)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_find
      Src: /src/lwan/src/lib/lwan-mod-lua.c:304,1
    - Dst: hash_find
      Src: /src/lwan/src/lib/lwan-mod-lua.c:305,1
    - Dst: parse_time_period
      Src: /src/lwan/src/lib/lwan-mod-lua.c:306,1
    - Dst: hash_find
      Src: /src/lwan/src/lib/lwan-mod-lua.c:306,1
    - Dst: hash_find
      Src: /src/lwan/src/lib/lwan-mod-lua.c:307,1
    - Dst: lua_create
      Src: /src/lwan/src/lib/lwan-mod-lua.c:310,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - prefix
    - hash
    argTypes:
    - char*
    - struct hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 301
    functionDepth: 6
    functionLinenumber: 301
    functionLinenumberEnd: 311
    functionName: lua_create_from_hash
    functionSourceFile: /src/lwan/src/lib/lwan-mod-lua.c
    functionUses: 0
    functionsReached:
    - lua_create
    - hash_find
    - parse_time_period
    linkageType: ''
    returnType: void
    signature: void *lua_create_from_hash(const char *prefix, const struct hash *hash)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - default_type_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 39
    functionName: LUA
    functionSourceFile: /src/lwan/src/lib/lwan-mod-lua.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LUA(default_type_)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_init
      Src: /src/lwan/src/lib/missing-pthread.c:45,1
    - Dst: pthread_cond_init
      Src: /src/lwan/src/lib/missing-pthread.c:48,1
    - Dst: pthread_mutex_destroy
      Src: /src/lwan/src/lib/missing-pthread.c:49,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - barrier
    - attr
    - count
    argTypes:
    - pthread_barrier_t*
    - pthread_barrierattr_t*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 54
    functionName: pthread_barrier_init
    functionSourceFile: /src/lwan/src/lib/missing-pthread.c
    functionUses: 1
    functionsReached:
    - pthread_mutex_destroy
    - pthread_mutex_init
    - pthread_cond_init
    linkageType: ''
    returnType: int
    signature: "int pthread_barrier_init(pthread_barrier_t *restrict barrier,\n        const
      pthread_barrierattr_t *restrict attr __attribute__((unused)),\n        unsigned
      int count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_destroy
      Src: /src/lwan/src/lib/missing-pthread.c:59,1
    - Dst: pthread_cond_destroy
      Src: /src/lwan/src/lib/missing-pthread.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - barrier
    argTypes:
    - pthread_barrier_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 64
    functionName: pthread_barrier_destroy
    functionSourceFile: /src/lwan/src/lib/missing-pthread.c
    functionUses: 1
    functionsReached:
    - pthread_mutex_destroy
    - pthread_cond_destroy
    linkageType: ''
    returnType: int
    signature: int pthread_barrier_destroy(pthread_barrier_t *barrier)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_lock
      Src: /src/lwan/src/lib/missing-pthread.c:69,1
    - Dst: pthread_cond_broadcast
      Src: /src/lwan/src/lib/missing-pthread.c:74,1
    - Dst: pthread_mutex_unlock
      Src: /src/lwan/src/lib/missing-pthread.c:75,1
    - Dst: pthread_cond_wait
      Src: /src/lwan/src/lib/missing-pthread.c:80,1
    - Dst: pthread_mutex_unlock
      Src: /src/lwan/src/lib/missing-pthread.c:81,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - barrier
    argTypes:
    - pthread_barrier_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 84
    functionName: pthread_barrier_wait
    functionSourceFile: /src/lwan/src/lib/missing-pthread.c
    functionUses: 3
    functionsReached:
    - pthread_mutex_unlock
    - pthread_mutex_lock
    - pthread_cond_wait
    - pthread_cond_broadcast
    linkageType: ''
    returnType: int
    signature: int pthread_barrier_wait(pthread_barrier_t *barrier)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_setname_np
      Src: /src/lwan/src/lib/missing-pthread.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - thread
    - name
    argTypes:
    - pthread_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 91
    functionName: pthread_set_name_np
    functionSourceFile: /src/lwan/src/lib/missing-pthread.c
    functionUses: 1
    functionsReached:
    - pthread_setname_np
    linkageType: ''
    returnType: int
    signature: int pthread_set_name_np(pthread_t thread, const char *name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pthread_equal
      Src: /src/lwan/src/lib/missing-pthread.c:95,1
    - Dst: pthread_self
      Src: /src/lwan/src/lib/missing-pthread.c:95,1
    - Dst: pthread_setname_np
      Src: /src/lwan/src/lib/missing-pthread.c:100,1
    - Dst: strdupa
      Src: /src/lwan/src/lib/missing-pthread.c:100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - thread
    - name
    argTypes:
    - pthread_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 101
    functionName: pthread_set_name_np
    functionSourceFile: /src/lwan/src/lib/missing-pthread.c
    functionUses: 1
    functionsReached:
    - strdupa
    - pthread_setname_np
    - pthread_equal
    - pthread_self
    linkageType: ''
    returnType: int
    signature: int pthread_set_name_np(pthread_t thread, const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tq
    - conn
    argTypes:
    - struct timeout_queue*
    - struct lwan_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 30
    functionName: timeout_queue_node_to_idx
    functionSourceFile: /src/lwan/src/lib/lwan-tq.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int timeout_queue_node_to_idx(struct timeout_queue *tq,\n                                            struct
      lwan_connection *conn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tq
    - idx
    argTypes:
    - struct timeout_queue*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 36
    functionName: timeout_queue_idx_to_node
    functionSourceFile: /src/lwan/src/lib/lwan-tq.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct lwan_connection
    signature: 'struct lwan_connection *

      timeout_queue_idx_to_node(struct timeout_queue *tq, int idx)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-tq.c:41,1
    - Dst: timeout_queue_idx_to_node
      Src: /src/lwan/src/lib/lwan-tq.c:45,1
    - Dst: timeout_queue_node_to_idx
      Src: /src/lwan/src/lib/lwan-tq.c:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - tq
    - new_node
    argTypes:
    - struct timeout_queue*
    - struct lwan_connection*
    assertStmts:
    - condition: (!(new_node->flags & (CONN_HUNG_UP | CONN_ASYNC_AWAIT)))
      pos:
        line_end: 40
        line_start: 40
        source_file: /src/lwan/src/lib/lwan-tq.c
    constantsTouched: []
    func_position:
      end: 47
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 47
    functionName: timeout_queue_insert
    functionSourceFile: /src/lwan/src/lib/lwan-tq.c
    functionUses: 1
    functionsReached:
    - timeout_queue_node_to_idx
    - timeout_queue_idx_to_node
    - assert
    linkageType: ''
    returnType: void
    signature: "void timeout_queue_insert(struct timeout_queue *tq,\n                                 struct
      lwan_connection *new_node)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_queue_idx_to_node
      Src: /src/lwan/src/lib/lwan-tq.c:52,1
    - Dst: timeout_queue_idx_to_node
      Src: /src/lwan/src/lib/lwan-tq.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - tq
    - node
    argTypes:
    - struct timeout_queue*
    - struct lwan_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 57
    functionName: timeout_queue_remove
    functionSourceFile: /src/lwan/src/lib/lwan-tq.c
    functionUses: 0
    functionsReached:
    - timeout_queue_idx_to_node
    linkageType: ''
    returnType: void
    signature: "void timeout_queue_remove(struct timeout_queue *tq,\n                                        struct
      lwan_connection *node)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tq
    argTypes:
    - struct timeout_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: timeout_queue_empty
    functionSourceFile: /src/lwan/src/lib/lwan-tq.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool timeout_queue_empty(struct timeout_queue *tq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_queue_remove
      Src: /src/lwan/src/lib/lwan-tq.c:72,1
    - Dst: timeout_queue_insert
      Src: /src/lwan/src/lib/lwan-tq.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - tq
    - conn
    argTypes:
    - struct timeout_queue*
    - struct lwan_connection*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 64
    functionDepth: 2
    functionLinenumber: 64
    functionLinenumberEnd: 74
    functionName: timeout_queue_move_to_last
    functionSourceFile: /src/lwan/src/lib/lwan-tq.c
    functionUses: 1
    functionsReached:
    - timeout_queue_remove
    - timeout_queue_insert
    linkageType: ''
    returnType: void
    signature: "void timeout_queue_move_to_last(struct timeout_queue *tq,\n                                       struct
      lwan_connection *conn)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tq
    - lwan
    argTypes:
    - struct timeout_queue*
    - struct lwan*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 87
    functionName: timeout_queue_init
    functionSourceFile: /src/lwan/src/lib/lwan-tq.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void timeout_queue_init(struct timeout_queue *tq, const struct lwan
      *lwan)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-tq.c:92,1
    - Dst: timeout_queue_remove
      Src: /src/lwan/src/lib/lwan-tq.c:94,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-tq.c:96,1
    - Dst: coro_free
      Src: /src/lwan/src/lib/lwan-tq.c:97,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-tq.c:101,1
    - Dst: lwan_connection_get_fd
      Src: /src/lwan/src/lib/lwan-tq.c:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - tq
    - conn
    argTypes:
    - struct timeout_queue*
    - struct lwan_connection*
    assertStmts:
    - condition: (!(conn->flags & (CONN_HUNG_UP | CONN_ASYNC_AWAIT)))
      pos:
        line_end: 91
        line_start: 91
        source_file: /src/lwan/src/lib/lwan-tq.c
    constantsTouched: []
    func_position:
      end: 102
      start: 89
    functionDepth: 2
    functionLinenumber: 89
    functionLinenumberEnd: 102
    functionName: timeout_queue_expire
    functionSourceFile: /src/lwan/src/lib/lwan-tq.c
    functionUses: 3
    functionsReached:
    - timeout_queue_remove
    - lwan_connection_get_fd
    - close
    - LIKELY
    - coro_free
    - assert
    linkageType: ''
    returnType: void
    signature: "void timeout_queue_expire(struct timeout_queue *tq,\n                          struct
      lwan_connection *conn)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: timeout_queue_empty
      Src: /src/lwan/src/lib/lwan-tq.c:108,1
    - Dst: timeout_queue_idx_to_node
      Src: /src/lwan/src/lib/lwan-tq.c:110,1
    - Dst: LIKELY
      Src: /src/lwan/src/lib/lwan-tq.c:116,1
    - Dst: lwan_send_websocket_ping_for_tq
      Src: /src/lwan/src/lib/lwan-tq.c:116,1
    - Dst: timeout_queue_move_to_last
      Src: /src/lwan/src/lib/lwan-tq.c:117,1
    - Dst: timeout_queue_expire
      Src: /src/lwan/src/lib/lwan-tq.c:122,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - tq
    argTypes:
    - struct timeout_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 104
    functionDepth: 5
    functionLinenumber: 104
    functionLinenumberEnd: 127
    functionName: timeout_queue_expire_waiting
    functionSourceFile: /src/lwan/src/lib/lwan-tq.c
    functionUses: 1
    functionsReached:
    - timeout_queue_idx_to_node
    - lwan_send_websocket_ping_for_tq
    - timeout_queue_empty
    - timeout_queue_expire
    - LIKELY
    - timeout_queue_move_to_last
    linkageType: ''
    returnType: void
    signature: void timeout_queue_expire_waiting(struct timeout_queue *tq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeout_queue_empty
      Src: /src/lwan/src/lib/lwan-tq.c:131,1
    - Dst: timeout_queue_idx_to_node
      Src: /src/lwan/src/lib/lwan-tq.c:133,1
    - Dst: timeout_queue_expire
      Src: /src/lwan/src/lib/lwan-tq.c:134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - tq
    argTypes:
    - struct timeout_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 129
    functionDepth: 3
    functionLinenumber: 129
    functionLinenumberEnd: 136
    functionName: timeout_queue_expire_all
    functionSourceFile: /src/lwan/src/lib/lwan-tq.c
    functionUses: 1
    functionsReached:
    - timeout_queue_empty
    - timeout_queue_expire
    - timeout_queue_idx_to_node
    linkageType: ''
    returnType: void
    signature: void timeout_queue_expire_all(struct timeout_queue *tq)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - decoded_len
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 17
    functionName: base64_encoded_len
    functionSourceFile: /src/lwan/src/lib/base64.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t base64_encoded_len(size_t decoded_len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - code_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 36
    functionName: RESPONSE
    functionSourceFile: /src/lwan/src/lib/lwan-mod-response.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RESPONSE(code_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - root_path_
    - ','
    - index_html_
    - ','
    - serve_precompressed_files_
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 57
    functionName: SERVE_FILES_SETTINGS
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SERVE_FILES_SETTINGS(root_path_, index_html_, serve_precompressed_files_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - root_path
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 60
    functionName: SERVE_FILES
    functionSourceFile: /src/lwan/src/lib/lwan-mod-serve-files.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SERVE_FILES(root_path)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct lwan_strbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 43
    functionName: lwan_strbuf_has_grow_buffer_failed_flag
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: bool lwan_strbuf_has_grow_buffer_failed_flag(const struct lwan_strbuf
      *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_nextpow2
      Src: /src/lwan/src/lib/lwan-strbuf.c:47,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-strbuf.c:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - unaligned_size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 53
    functionName: align_size
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 0
    functionsReached:
    - lwan_nextpow2
    - UNLIKELY
    linkageType: ''
    returnType: size_t
    signature: size_t align_size(size_t unaligned_size)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-strbuf.c:62,1
    - Dst: __builtin_add_overflow
      Src: /src/lwan/src/lib/lwan-strbuf.c:62,1
    - Dst: align_size
      Src: /src/lwan/src/lib/lwan-strbuf.c:66,1
    - Dst: LWAN_MAX
      Src: /src/lwan/src/lib/lwan-strbuf.c:66,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-strbuf.c:67,1
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-strbuf.c:70,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-strbuf.c:71,1
    - Dst: memcpy
      Src: /src/lwan/src/lib/lwan-strbuf.c:74,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-strbuf.c:84,1
    - Dst: align_size
      Src: /src/lwan/src/lib/lwan-strbuf.c:86,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-strbuf.c:88,1
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-strbuf.c:94,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-strbuf.c:96,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-strbuf.c:99,1
    - Dst: realloc
      Src: /src/lwan/src/lib/lwan-strbuf.c:102,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-strbuf.c:104,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 2
    argNames:
    - s
    - size
    argTypes:
    - struct lwan_strbuf*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 113
    functionName: grow_buffer_if_needed_internal
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 0
    functionsReached:
    - realloc
    - LWAN_MAX
    - free
    - memcpy
    - align_size
    - __builtin_add_overflow
    - malloc
    - UNLIKELY
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE grow_buffer_if_needed_internal(struct lwan_strbuf *s,
      size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-strbuf.c:117,1
    - Dst: grow_buffer_if_needed_internal
      Src: /src/lwan/src/lib/lwan-strbuf.c:117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - s
    - size
    argTypes:
    - struct lwan_strbuf*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 115
    functionDepth: 3
    functionLinenumber: 115
    functionLinenumberEnd: 123
    functionName: grow_buffer_if_needed
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 0
    functionsReached:
    - grow_buffer_if_needed_internal
    - UNLIKELY
    linkageType: ''
    returnType: bool
    signature: bool grow_buffer_if_needed(struct lwan_strbuf *s, size_t size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-strbuf.c:127,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-strbuf.c:133,1
    - Dst: grow_buffer_if_needed
      Src: /src/lwan/src/lib/lwan-strbuf.c:133,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - s
    - size
    argTypes:
    - struct lwan_strbuf*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 125
    functionDepth: 4
    functionLinenumber: 125
    functionLinenumberEnd: 140
    functionName: lwan_strbuf_init_with_size
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 0
    functionsReached:
    - grow_buffer_if_needed
    - UNLIKELY
    linkageType: ''
    returnType: bool
    signature: bool lwan_strbuf_init_with_size(struct lwan_strbuf *s, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-strbuf.c:146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - s
    - buffer
    - size
    argTypes:
    - struct lwan_strbuf*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 157
    functionName: lwan_strbuf_init_with_fixed_buffer
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 2
    functionsReached:
    - UNLIKELY
    linkageType: ''
    returnType: bool
    signature: "bool lwan_strbuf_init_with_fixed_buffer(struct lwan_strbuf *s,\n                                        void
      *buffer,\n                                        size_t size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_init_with_size
      Src: /src/lwan/src/lib/lwan-strbuf.c:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct lwan_strbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 159
    functionDepth: 5
    functionLinenumber: 159
    functionLinenumberEnd: 162
    functionName: lwan_strbuf_init
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 7
    functionsReached:
    - lwan_strbuf_init_with_size
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE lwan_strbuf_init(struct lwan_strbuf *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-strbuf.c:166,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-strbuf.c:168,1
    - Dst: lwan_strbuf_init_with_size
      Src: /src/lwan/src/lib/lwan-strbuf.c:168,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-strbuf.c:169,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 164
    functionDepth: 5
    functionLinenumber: 164
    functionLinenumberEnd: 177
    functionName: lwan_strbuf_new_with_size
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 2
    functionsReached:
    - malloc
    - lwan_strbuf_init_with_size
    - UNLIKELY
    - free
    linkageType: ''
    returnType: struct lwan_strbuf
    signature: struct lwan_strbuf *lwan_strbuf_new_with_size(size_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-strbuf.c:184,1
    - Dst: __builtin_add_overflow
      Src: /src/lwan/src/lib/lwan-strbuf.c:184,1
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-strbuf.c:187,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-strbuf.c:188,1
    - Dst: lwan_strbuf_init_with_fixed_buffer
      Src: /src/lwan/src/lib/lwan-strbuf.c:188,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-strbuf.c:189,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 196
    functionName: lwan_strbuf_new_with_fixed_buffer
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 0
    functionsReached:
    - free
    - lwan_strbuf_init_with_fixed_buffer
    - __builtin_add_overflow
    - malloc
    - UNLIKELY
    linkageType: ''
    returnType: struct lwan_strbuf
    signature: struct lwan_strbuf *lwan_strbuf_new_with_fixed_buffer(size_t size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_new_with_size
      Src: /src/lwan/src/lib/lwan-strbuf.c:200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 198
    functionDepth: 6
    functionLinenumber: 198
    functionLinenumberEnd: 201
    functionName: lwan_strbuf_new
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 0
    functionsReached:
    - lwan_strbuf_new_with_size
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: ALWAYS_INLINE *lwan_strbuf_new(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-strbuf.c:206,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-strbuf.c:208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - str
    - size
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 219
    functionName: lwan_strbuf_new_static
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 1
    functionsReached:
    - malloc
    - UNLIKELY
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: "ALWAYS_INLINE *lwan_strbuf_new_static(const char *str,\n                                                         size_t
      size)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-strbuf.c:223,1
    - Dst: assert
      Src: /src/lwan/src/lib/lwan-strbuf.c:226,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-strbuf.c:227,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-strbuf.c:230,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct lwan_strbuf*
    assertStmts:
    - condition: (!(s->flags & BUFFER_FIXED))
      pos:
        line_end: 225
        line_start: 225
        source_file: /src/lwan/src/lib/lwan-strbuf.c
    constantsTouched: []
    func_position:
      end: 231
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 231
    functionName: lwan_strbuf_free
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 14
    functionsReached:
    - free
    - UNLIKELY
    - assert
    linkageType: ''
    returnType: void
    signature: void lwan_strbuf_free(struct lwan_strbuf *s)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-strbuf.c:236,1
    - Dst: __builtin_add_overflow
      Src: /src/lwan/src/lib/lwan-strbuf.c:236,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-strbuf.c:238,1
    - Dst: grow_buffer_if_needed
      Src: /src/lwan/src/lib/lwan-strbuf.c:238,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - s
    - c
    argTypes:
    - struct lwan_strbuf*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 233
    functionDepth: 4
    functionLinenumber: 233
    functionLinenumberEnd: 245
    functionName: lwan_strbuf_append_char
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 16
    functionsReached:
    - grow_buffer_if_needed
    - UNLIKELY
    - __builtin_add_overflow
    linkageType: ''
    returnType: bool
    signature: bool lwan_strbuf_append_char(struct lwan_strbuf *s, const char c)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-strbuf.c:250,1
    - Dst: __builtin_add_overflow
      Src: /src/lwan/src/lib/lwan-strbuf.c:250,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-strbuf.c:252,1
    - Dst: grow_buffer_if_needed
      Src: /src/lwan/src/lib/lwan-strbuf.c:252,1
    - Dst: memcpy
      Src: /src/lwan/src/lib/lwan-strbuf.c:255,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - s1
    - s2
    - sz
    argTypes:
    - struct lwan_strbuf*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 247
    functionDepth: 4
    functionLinenumber: 247
    functionLinenumberEnd: 260
    functionName: lwan_strbuf_append_str
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 15
    functionsReached:
    - memcpy
    - grow_buffer_if_needed
    - UNLIKELY
    - __builtin_add_overflow
    linkageType: ''
    returnType: bool
    signature: bool lwan_strbuf_append_str(struct lwan_strbuf *s1, const char *s2,
      size_t sz)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/lwan/src/lib/lwan-strbuf.c:265,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - s1
    - s2
    - sz
    argTypes:
    - struct lwan_strbuf*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 272
    functionName: lwan_strbuf_set_static
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 13
    functionsReached:
    - free
    linkageType: ''
    returnType: bool
    signature: bool lwan_strbuf_set_static(struct lwan_strbuf *s1, const char *s2,
      size_t sz)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-strbuf.c:276,1
    - Dst: grow_buffer_if_needed
      Src: /src/lwan/src/lib/lwan-strbuf.c:276,1
    - Dst: memcpy
      Src: /src/lwan/src/lib/lwan-strbuf.c:279,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - s1
    - s2
    - sz
    argTypes:
    - struct lwan_strbuf*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 274
    functionDepth: 4
    functionLinenumber: 274
    functionLinenumberEnd: 284
    functionName: lwan_strbuf_set
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 3
    functionsReached:
    - memcpy
    - grow_buffer_if_needed
    - UNLIKELY
    linkageType: ''
    returnType: bool
    signature: bool lwan_strbuf_set(struct lwan_strbuf *s1, const char *s2, size_t
      sz)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-strbuf.c:295,1
    - Dst: vasprintf
      Src: /src/lwan/src/lib/lwan-strbuf.c:295,1
    - Dst: save_str
      Src: /src/lwan/src/lib/lwan-strbuf.c:298,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-strbuf.c:299,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - s1
    - fmt
    - values
    argTypes:
    - struct lwan_strbuf*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 302
    functionName: internal_printf
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 0
    functionsReached:
    - save_str
    - UNLIKELY
    - free
    - vasprintf
    linkageType: ''
    returnType: ALWAYS_INLINE
    signature: "ALWAYS_INLINE internal_printf(struct lwan_strbuf *s1,\n                bool
      (*save_str)(struct lwan_strbuf *, const char *, size_t),\n                const
      char *fmt,\n                va_list values)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_printf
      Src: /src/lwan/src/lib/lwan-strbuf.c:306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - s
    - fmt
    - ap
    argTypes:
    - struct lwan_strbuf*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 304
    functionDepth: 1
    functionLinenumber: 304
    functionLinenumberEnd: 307
    functionName: lwan_strbuf_vprintf
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 0
    functionsReached:
    - internal_printf
    linkageType: ''
    returnType: bool
    signature: bool lwan_strbuf_vprintf(struct lwan_strbuf *s, const char *fmt, va_list
      ap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/lwan/src/lib/lwan-strbuf.c:314,1
    - Dst: lwan_strbuf_vprintf
      Src: /src/lwan/src/lib/lwan-strbuf.c:315,1
    - Dst: va_end
      Src: /src/lwan/src/lib/lwan-strbuf.c:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - s
    - fmt
    argTypes:
    - struct lwan_strbuf*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 309
    functionDepth: 2
    functionLinenumber: 309
    functionLinenumberEnd: 319
    functionName: lwan_strbuf_printf
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 9
    functionsReached:
    - va_end
    - lwan_strbuf_vprintf
    - va_start
    linkageType: ''
    returnType: bool
    signature: bool lwan_strbuf_printf(struct lwan_strbuf *s, const char *fmt, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: internal_printf
      Src: /src/lwan/src/lib/lwan-strbuf.c:323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - s
    - fmt
    - ap
    argTypes:
    - struct lwan_strbuf*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 321
    functionDepth: 1
    functionLinenumber: 321
    functionLinenumberEnd: 324
    functionName: lwan_strbuf_append_vprintf
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 0
    functionsReached:
    - internal_printf
    linkageType: ''
    returnType: bool
    signature: bool lwan_strbuf_append_vprintf(struct lwan_strbuf *s, const char *fmt,
      va_list ap)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/lwan/src/lib/lwan-strbuf.c:331,1
    - Dst: lwan_strbuf_append_vprintf
      Src: /src/lwan/src/lib/lwan-strbuf.c:332,1
    - Dst: va_end
      Src: /src/lwan/src/lib/lwan-strbuf.c:333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - s
    - fmt
    argTypes:
    - struct lwan_strbuf*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 326
    functionDepth: 2
    functionLinenumber: 326
    functionLinenumberEnd: 336
    functionName: lwan_strbuf_append_printf
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 7
    functionsReached:
    - va_end
    - va_start
    - lwan_strbuf_append_vprintf
    linkageType: ''
    returnType: bool
    signature: bool lwan_strbuf_append_printf(struct lwan_strbuf *s, const char *fmt,
      ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: grow_buffer_if_needed
      Src: /src/lwan/src/lib/lwan-strbuf.c:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s
    - new_size
    argTypes:
    - struct lwan_strbuf*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 338
    functionDepth: 4
    functionLinenumber: 338
    functionLinenumberEnd: 341
    functionName: lwan_strbuf_grow_to
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 4
    functionsReached:
    - grow_buffer_if_needed
    linkageType: ''
    returnType: bool
    signature: bool lwan_strbuf_grow_to(struct lwan_strbuf *s, size_t new_size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-strbuf.c:347,1
    - Dst: __builtin_add_overflow
      Src: /src/lwan/src/lib/lwan-strbuf.c:347,1
    - Dst: lwan_strbuf_grow_to
      Src: /src/lwan/src/lib/lwan-strbuf.c:350,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - s
    - offset
    argTypes:
    - struct lwan_strbuf*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 343
    functionDepth: 5
    functionLinenumber: 343
    functionLinenumberEnd: 351
    functionName: lwan_strbuf_grow_by
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 1
    functionsReached:
    - lwan_strbuf_grow_to
    - UNLIKELY
    - __builtin_add_overflow
    linkageType: ''
    returnType: bool
    signature: bool lwan_strbuf_grow_by(struct lwan_strbuf *s, size_t offset)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct lwan_strbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 353
    functionDepth: 0
    functionLinenumber: 353
    functionLinenumberEnd: 363
    functionName: lwan_strbuf_reset
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void lwan_strbuf_reset(struct lwan_strbuf *s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/lwan/src/lib/lwan-strbuf.c:368,1
    - Dst: lwan_strbuf_reset
      Src: /src/lwan/src/lib/lwan-strbuf.c:372,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - s
    - trim_thresh
    argTypes:
    - struct lwan_strbuf*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 365
    functionDepth: 1
    functionLinenumber: 365
    functionLinenumberEnd: 373
    functionName: lwan_strbuf_reset_trim
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 2
    functionsReached:
    - free
    - lwan_strbuf_reset
    linkageType: ''
    returnType: void
    signature: void lwan_strbuf_reset_trim(struct lwan_strbuf *s, size_t trim_thresh)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_grow_by
      Src: /src/lwan/src/lib/lwan-strbuf.c:378,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - s
    - by
    argTypes:
    - struct lwan_strbuf*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 376
    functionDepth: 6
    functionLinenumber: 376
    functionLinenumberEnd: 385
    functionName: lwan_strbuf_extend_unsafe
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 2
    functionsReached:
    - lwan_strbuf_grow_by
    linkageType: ''
    returnType: char
    signature: char *lwan_strbuf_extend_unsafe(struct lwan_strbuf *s, size_t by)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/lwan/src/lib/lwan-strbuf.c:389,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-strbuf.c:392,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-strbuf.c:395,1
    - Dst: fstat
      Src: /src/lwan/src/lib/lwan-strbuf.c:395,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-strbuf.c:398,1
    - Dst: lwan_strbuf_init_with_size
      Src: /src/lwan/src/lib/lwan-strbuf.c:398,1
    - Dst: read
      Src: /src/lwan/src/lib/lwan-strbuf.c:404,1
    - Dst: UNLIKELY
      Src: /src/lwan/src/lib/lwan-strbuf.c:406,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-strbuf.c:417,1
    - Dst: lwan_strbuf_free
      Src: /src/lwan/src/lib/lwan-strbuf.c:421,1
    - Dst: close
      Src: /src/lwan/src/lib/lwan-strbuf.c:423,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 2
    argNames:
    - s
    - path
    argTypes:
    - struct lwan_strbuf*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 387
    functionDepth: 5
    functionLinenumber: 387
    functionLinenumberEnd: 425
    functionName: lwan_strbuf_init_from_file
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 1
    functionsReached:
    - read
    - lwan_strbuf_free
    - lwan_strbuf_init_with_size
    - fstat
    - open
    - close
    - UNLIKELY
    linkageType: ''
    returnType: bool
    signature: bool lwan_strbuf_init_from_file(struct lwan_strbuf *s, const char *path)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/lwan/src/lib/lwan-strbuf.c:429,1
    - Dst: lwan_strbuf_init_from_file
      Src: /src/lwan/src/lib/lwan-strbuf.c:434,1
    - Dst: free
      Src: /src/lwan/src/lib/lwan-strbuf.c:439,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 427
    functionDepth: 6
    functionLinenumber: 427
    functionLinenumberEnd: 441
    functionName: lwan_strbuf_new_from_file
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 0
    functionsReached:
    - malloc
    - free
    - lwan_strbuf_init_from_file
    linkageType: ''
    returnType: struct lwan_strbuf
    signature: struct lwan_strbuf *lwan_strbuf_new_from_file(const char *path)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_get_buffer
      Src: /src/lwan/src/lib/lwan-strbuf.c:445,1
    - Dst: lwan_strbuf_get_length
      Src: /src/lwan/src/lib/lwan-strbuf.c:446,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct lwan_strbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 443
    functionDepth: 1
    functionLinenumber: 443
    functionLinenumberEnd: 447
    functionName: lwan_strbuf_to_value
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 3
    functionsReached:
    - lwan_strbuf_get_length
    - lwan_strbuf_get_buffer
    linkageType: ''
    returnType: struct lwan_value
    signature: struct lwan_value lwan_strbuf_to_value(const struct lwan_strbuf *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_get_buffer
      Src: /src/lwan/src/lib/lwan-strbuf.c:451,1
    - Dst: lwan_strbuf_get_length
      Src: /src/lwan/src/lib/lwan-strbuf.c:452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct lwan_strbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 449
    functionDepth: 1
    functionLinenumber: 449
    functionLinenumberEnd: 453
    functionName: lwan_strbuf_to_iovec
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 1
    functionsReached:
    - lwan_strbuf_get_length
    - lwan_strbuf_get_buffer
    linkageType: ''
    returnType: struct iovec
    signature: struct iovec lwan_strbuf_to_iovec(const struct lwan_strbuf *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_append_str
      Src: /src/lwan/src/lib/lwan-strbuf.c:458,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - struct lwan_strbuf*
    - struct lwan_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 455
    functionDepth: 5
    functionLinenumber: 455
    functionLinenumberEnd: 459
    functionName: lwan_strbuf_append_value
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 2
    functionsReached:
    - lwan_strbuf_append_str
    linkageType: ''
    returnType: bool
    signature: "bool lwan_strbuf_append_value(struct lwan_strbuf *s1,\n                              const
      struct lwan_value *s2)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lwan_strbuf_set
      Src: /src/lwan/src/lib/lwan-strbuf.c:463,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - s1
    - s2
    argTypes:
    - struct lwan_strbuf*
    - struct lwan_value*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 461
    functionDepth: 5
    functionLinenumber: 461
    functionLinenumberEnd: 464
    functionName: lwan_strbuf_set_value
    functionSourceFile: /src/lwan/src/lib/lwan-strbuf.c
    functionUses: 1
    functionsReached:
    - lwan_strbuf_set
    linkageType: ''
    returnType: bool
    signature: bool lwan_strbuf_set_value(struct lwan_strbuf *s1, const struct lwan_value
      *s2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: TIMEOUT_C
    functionSourceFile: /src/lwan/src/lib/timeout.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TIMEOUT_C(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - flags
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 61
    functionName: TIMEOUT_INITIALIZER
    functionSourceFile: /src/lwan/src/lib/timeout.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TIMEOUT_INITIALIZER(flags)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 34
    functionName: strndupa_impl
    functionSourceFile: /src/lwan/src/lib/missing/string.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: strndupa_impl(s, l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - s
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: strndupa
    functionSourceFile: /src/lwan/src/lib/missing/string.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: strndupa(s, l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: strdupa
    functionSourceFile: /src/lwan/src/lib/missing/string.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: strdupa(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/lwan/src/lib/missing/string.h:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 72
    functionName: streq
    functionSourceFile: /src/lwan/src/lib/missing/string.h
    functionUses: 34
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int streq(const char *a, const char *b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/lwan/src/lib/missing/string.h:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - dest
    - src
    - len
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 77
    functionName: mempmove
    functionSourceFile: /src/lwan/src/lib/missing/string.h
    functionUses: 2
    functionsReached:
    - memmove
    linkageType: ''
    returnType: void
    signature: void *mempmove(void *dest, const void *src, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - class
    - ','
    - data
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 31
    functionName: IOPRIO_PRIO_VALUE
    functionSourceFile: /src/lwan/src/lib/missing/ioprio.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IOPRIO_PRIO_VALUE(class, data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/lwan/src/lib/missing/ioprio.h:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - which
    - who
    - ioprio
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: ioprio_set
    functionSourceFile: /src/lwan/src/lib/missing/ioprio.h
    functionUses: 2
    functionsReached:
    - syscall
    linkageType: ''
    returnType: int
    signature: int ioprio_set(int which, int who, int ioprio)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - arg1
    - ','
    - arg2
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    functionName: IOPRIO_PRIO_VALUE
    functionSourceFile: /src/lwan/src/lib/missing/ioprio.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IOPRIO_PRIO_VALUE(arg1, arg2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - which
    - who
    - ioprio
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 48
    functionName: ioprio_set
    functionSourceFile: /src/lwan/src/lib/missing/ioprio.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int ioprio_set(int which __attribute__((unused)),\n                             int
      who __attribute__((unused)),\n                             int ioprio __attribute__((unused)))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 32
    functionName: htobe16
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htobe16(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: htole16
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htole16(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    functionName: be16toh
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be16toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 35
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 35
    functionName: le16toh
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le16toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 37
    functionName: htobe32
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htobe32(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 38
    functionName: htole32
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htole32(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 39
    functionName: be32toh
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be32toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: le32toh
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le32toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: htobe64
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htobe64(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: htole64
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htole64(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: be64toh
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be64toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: le64toh
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le64toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 61
    functionName: be16toh
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be16toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 62
    functionName: le16toh
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le16toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 66
    functionName: be32toh
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be32toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 67
    functionName: le32toh
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le32toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 71
    functionName: be64toh
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be64toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 72
    functionName: le64toh
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le64toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 82
    functionName: htobe16
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htobe16(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 83
    functionName: htole16
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htole16(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 84
    functionName: be16toh
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be16toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 85
    functionName: le16toh
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le16toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 87
    functionName: htobe32
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htobe32(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 88
    functionName: htole32
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htole32(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 89
    functionName: be32toh
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be32toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 90
    functionName: le32toh
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le32toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 92
    functionName: htobe64
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htobe64(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 93
    functionName: htole64
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htole64(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 94
    functionName: be64toh
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be64toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 95
    functionName: le64toh
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le64toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 100
    functionName: htobe16
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htobe16(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 101
    functionName: htole16
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htole16(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 102
    functionName: be16toh
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be16toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 103
    functionName: le16toh
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le16toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 105
    functionName: htobe32
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htobe32(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 106
    functionName: htole32
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htole32(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 107
    functionName: be32toh
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be32toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 108
    functionName: le32toh
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le32toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 110
    functionName: htobe64
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htobe64(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 111
    functionName: htole64
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htole64(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 112
    functionName: be64toh
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be64toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 113
    functionName: le64toh
    functionSourceFile: /src/lwan/src/lib/missing/endian.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: le64toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - expr
    - ','
    - msg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 28
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 28
    functionName: static_assert
    functionSourceFile: /src/lwan/src/lib/missing/assert.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: static_assert(expr, msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 37
    functionName: LWAN_SELF_TEST
    functionSourceFile: /src/lwan/src/lib/missing/assert.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LWAN_SELF_TEST(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: LWAN_SELF_TEST
    functionSourceFile: /src/lwan/src/lib/missing/assert.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LWAN_SELF_TEST(name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getenv
      Src: /src/lwan/src/lib/missing/stdlib.h:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 40
    functionName: secure_getenv
    functionSourceFile: /src/lwan/src/lib/missing/stdlib.h
    functionUses: 5
    functionsReached:
    - getenv
    linkageType: ''
    returnType: char
    signature: char *secure_getenv(const char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - mask_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 53
    functionName: umask_for_tmpfile
    functionSourceFile: /src/lwan/src/lib/missing/stdlib.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: umask_for_tmpfile(mask_)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - mask_
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 55
    functionName: umask_for_tmpfile
    functionSourceFile: /src/lwan/src/lib/missing/stdlib.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: umask_for_tmpfile(mask_)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/lwan/src/lib/missing/linux/capability.h:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - header
    - data
    argTypes:
    - struct __user_cap_header_struct*
    - struct __user_cap_data_struct*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 39
    functionName: capset
    functionSourceFile: /src/lwan/src/lib/missing/linux/capability.h
    functionUses: 1
    functionsReached:
    - syscall
    linkageType: ''
    returnType: int
    signature: "int capset(struct __user_cap_header_struct *header,\n                         struct
      __user_cap_data_struct *data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 24
    functionName: TRACE
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/libucontext_posix.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TRACE(...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TRACE
      Src: /src/lwan/src/3rdparty/libucontext/libucontext_posix.c:31,1
    - Dst: sigprocmask
      Src: /src/lwan/src/3rdparty/libucontext/libucontext_posix.c:33,1
    - Dst: libucontext_getcontext
      Src: /src/lwan/src/3rdparty/libucontext/libucontext_posix.c:36,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ucp
    argTypes:
    - libucontext_ucontext_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 37
      start: 28
    functionDepth: 1
    functionLinenumber: 28
    functionLinenumberEnd: 37
    functionName: getcontext
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/libucontext_posix.c
    functionUses: 2
    functionsReached:
    - libucontext_getcontext
    - sigprocmask
    - TRACE
    linkageType: ''
    returnType: int
    signature: int getcontext(libucontext_ucontext_t *ucp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TRACE
      Src: /src/lwan/src/3rdparty/libucontext/libucontext_posix.c:42,1
    - Dst: sigprocmask
      Src: /src/lwan/src/3rdparty/libucontext/libucontext_posix.c:44,1
    - Dst: libucontext_setcontext
      Src: /src/lwan/src/3rdparty/libucontext/libucontext_posix.c:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ucp
    argTypes:
    - libucontext_ucontext_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 48
      start: 39
    functionDepth: 1
    functionLinenumber: 39
    functionLinenumberEnd: 48
    functionName: setcontext
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/libucontext_posix.c
    functionUses: 1
    functionsReached:
    - libucontext_setcontext
    - sigprocmask
    - TRACE
    linkageType: ''
    returnType: int
    signature: int setcontext(const libucontext_ucontext_t *ucp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TRACE
      Src: /src/lwan/src/3rdparty/libucontext/libucontext_posix.c:53,1
    - Dst: sigprocmask
      Src: /src/lwan/src/3rdparty/libucontext/libucontext_posix.c:55,1
    - Dst: libucontext_swapcontext
      Src: /src/lwan/src/3rdparty/libucontext/libucontext_posix.c:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - oucp
    - ucp
    argTypes:
    - libucontext_ucontext_t*
    - libucontext_ucontext_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 59
    functionName: swapcontext
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/libucontext_posix.c
    functionUses: 3
    functionsReached:
    - sigprocmask
    - libucontext_swapcontext
    - TRACE
    linkageType: ''
    returnType: int
    signature: int swapcontext(libucontext_ucontext_t *oucp, const libucontext_ucontext_t
      *ucp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:17,1
    - Dst: abort
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:18,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - actual
    - expected
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 19
    functionName: check_arg
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/test_libucontext.c
    functionUses: 0
    functionsReached:
    - fprintf
    - abort
    linkageType: ''
    returnType: void
    signature: void check_arg(int actual, int expected)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:23,1
    - Dst: printf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:25,1
    - Dst: check_arg
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:26,1
    - Dst: check_arg
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:27,1
    - Dst: check_arg
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:28,1
    - Dst: check_arg
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:29,1
    - Dst: check_arg
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:30,1
    - Dst: check_arg
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:31,1
    - Dst: check_arg
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:32,1
    - Dst: check_arg
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:33,1
    - Dst: check_arg
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:34,1
    - Dst: check_arg
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:35,1
    - Dst: printf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:36,1
    - Dst: printf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:38,1
    - Dst: libucontext_swapcontext
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:39,1
    - Dst: printf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 10
    argNames:
    - a
    - b
    - c
    - d
    - e
    - f
    - g
    - h
    - i
    - j
    argTypes:
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 41
    functionName: f1
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/test_libucontext.c
    functionUses: 0
    functionsReached:
    - libucontext_swapcontext
    - check_arg
    - printf
    linkageType: ''
    returnType: void
    signature: void f1 (int a, int b, int c, int d, int e, int f, int g, int h, int
      i, int j)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:45,1
    - Dst: printf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:46,1
    - Dst: libucontext_swapcontext
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:47,1
    - Dst: printf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 49
    functionName: f2
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/test_libucontext.c
    functionUses: 0
    functionsReached:
    - libucontext_swapcontext
    - printf
    linkageType: ''
    returnType: void
    signature: void f2 (void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:59,1
    - Dst: memset
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:60,1
    - Dst: printf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:63,1
    - Dst: libucontext_getcontext
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:66,1
    - Dst: libucontext_makecontext
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:70,1
    - Dst: printf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:73,1
    - Dst: libucontext_getcontext
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:76,1
    - Dst: libucontext_makecontext
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:80,1
    - Dst: printf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:83,1
    - Dst: libucontext_swapcontext
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:86,1
    - Dst: printf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:89,1
    - Dst: libucontext_getcontext
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:93,1
    - Dst: printf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:94,1
    - Dst: libucontext_setcontext
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:95,1
    - Dst: fprintf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:97,1
    - Dst: abort
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext.c:98,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 102
    functionName: main
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/test_libucontext.c
    functionUses: 5
    functionsReached:
    - fprintf
    - libucontext_setcontext
    - printf
    - memset
    - libucontext_makecontext
    - abort
    - libucontext_swapcontext
    - libucontext_getcontext
    linkageType: ''
    returnType: int
    signature: int main (int argc, const char *argv[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:17,1
    - Dst: abort
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:18,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - actual
    - expected
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 19
    functionName: check_arg
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c
    functionUses: 1
    functionsReached:
    - fprintf
    - abort
    linkageType: ''
    returnType: void
    signature: void check_arg(int actual, int expected)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:23,1
    - Dst: printf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:25,1
    - Dst: check_arg
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:26,1
    - Dst: check_arg
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:27,1
    - Dst: check_arg
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:28,1
    - Dst: check_arg
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:29,1
    - Dst: check_arg
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:30,1
    - Dst: check_arg
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:31,1
    - Dst: check_arg
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:32,1
    - Dst: check_arg
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:33,1
    - Dst: check_arg
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:34,1
    - Dst: check_arg
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:35,1
    - Dst: printf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:36,1
    - Dst: printf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:38,1
    - Dst: swapcontext
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:39,1
    - Dst: printf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 10
    argNames:
    - a
    - b
    - c
    - d
    - e
    - f
    - g
    - h
    - i
    - j
    argTypes:
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 22
    functionDepth: 2
    functionLinenumber: 22
    functionLinenumberEnd: 41
    functionName: f1
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c
    functionUses: 0
    functionsReached:
    - check_arg
    - printf
    - swapcontext
    linkageType: ''
    returnType: void
    signature: void f1 (int a, int b, int c, int d, int e, int f, int g, int h, int
      i, int j)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:45,1
    - Dst: printf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:46,1
    - Dst: swapcontext
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:47,1
    - Dst: printf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 44
    functionDepth: 2
    functionLinenumber: 44
    functionLinenumberEnd: 49
    functionName: f2
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c
    functionUses: 0
    functionsReached:
    - printf
    - swapcontext
    linkageType: ''
    returnType: void
    signature: void f2 (void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:59,1
    - Dst: memset
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:60,1
    - Dst: printf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:63,1
    - Dst: getcontext
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:66,1
    - Dst: makecontext
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:70,1
    - Dst: printf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:73,1
    - Dst: getcontext
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:76,1
    - Dst: makecontext
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:80,1
    - Dst: printf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:83,1
    - Dst: swapcontext
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:86,1
    - Dst: printf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:89,1
    - Dst: getcontext
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:93,1
    - Dst: printf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:94,1
    - Dst: setcontext
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:95,1
    - Dst: fprintf
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:97,1
    - Dst: abort
      Src: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c:98,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 52
    functionDepth: 2
    functionLinenumber: 52
    functionLinenumberEnd: 102
    functionName: main
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c
    functionUses: 5
    functionsReached:
    - fprintf
    - setcontext
    - makecontext
    - printf
    - memset
    - abort
    - getcontext
    - swapcontext
    linkageType: ''
    returnType: int
    signature: int main (int argc, const char *argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - __reg
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 11
    functionDepth: 0
    functionLinenumber: 11
    functionLinenumberEnd: 12
    functionName: AREG_OFFSET
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/s390x/defs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AREG_OFFSET(__reg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/lwan/src/3rdparty/libucontext/arch/s390x/makecontext.c:42,1
    - Dst: va_arg
      Src: /src/lwan/src/3rdparty/libucontext/arch/s390x/makecontext.c:45,1
    - Dst: va_arg
      Src: /src/lwan/src/3rdparty/libucontext/arch/s390x/makecontext.c:52,1
    - Dst: va_end
      Src: /src/lwan/src/3rdparty/libucontext/arch/s390x/makecontext.c:55,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - ucp
    - argc
    argTypes:
    - libucontext_ucontext_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 63
    functionName: libucontext_makecontext
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/s390x/makecontext.c
    functionUses: 2
    functionsReached:
    - va_end
    - va_start
    - va_arg
    linkageType: ''
    returnType: void
    signature: void libucontext_makecontext(libucontext_ucontext_t *ucp, void (*func)(void),
      int argc, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - dest
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 52
    functionName: FETCH_LINKPTR
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/riscv64/defs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FETCH_LINKPTR(dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/lwan/src/3rdparty/libucontext/arch/riscv64/makecontext.c:44,1
    - Dst: va_arg
      Src: /src/lwan/src/3rdparty/libucontext/arch/riscv64/makecontext.c:50,1
    - Dst: va_arg
      Src: /src/lwan/src/3rdparty/libucontext/arch/riscv64/makecontext.c:54,1
    - Dst: va_end
      Src: /src/lwan/src/3rdparty/libucontext/arch/riscv64/makecontext.c:56,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - ucp
    - argc
    argTypes:
    - libucontext_ucontext_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 57
    functionName: libucontext_makecontext
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/riscv64/makecontext.c
    functionUses: 2
    functionsReached:
    - va_end
    - va_start
    - va_arg
    linkageType: ''
    returnType: void
    signature: void libucontext_makecontext(libucontext_ucontext_t *ucp, void (*func)(void),
      int argc, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - dest
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 31
    functionName: FETCH_LINKPTR
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/m68k/defs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FETCH_LINKPTR(dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/lwan/src/3rdparty/libucontext/arch/m68k/makecontext.c:46,1
    - Dst: va_arg
      Src: /src/lwan/src/3rdparty/libucontext/arch/m68k/makecontext.c:50,1
    - Dst: va_end
      Src: /src/lwan/src/3rdparty/libucontext/arch/m68k/makecontext.c:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - ucp
    - argc
    argTypes:
    - libucontext_ucontext_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 56
    functionName: libucontext_makecontext
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/m68k/makecontext.c
    functionUses: 2
    functionsReached:
    - va_end
    - va_start
    - va_arg
    linkageType: ''
    returnType: void
    signature: void libucontext_makecontext(libucontext_ucontext_t *ucp, void (*func)(void),
      int argc, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - dest
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 19
    functionName: FETCH_LINKPTR
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/or1k/defs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FETCH_LINKPTR(dest)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/lwan/src/3rdparty/libucontext/arch/or1k/makecontext.c:44,1
    - Dst: va_arg
      Src: /src/lwan/src/3rdparty/libucontext/arch/or1k/makecontext.c:50,1
    - Dst: va_arg
      Src: /src/lwan/src/3rdparty/libucontext/arch/or1k/makecontext.c:52,1
    - Dst: va_end
      Src: /src/lwan/src/3rdparty/libucontext/arch/or1k/makecontext.c:55,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - ucp
    - argc
    argTypes:
    - libucontext_ucontext_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 56
    functionName: libucontext_makecontext
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/or1k/makecontext.c
    functionUses: 2
    functionsReached:
    - va_end
    - va_start
    - va_arg
    linkageType: ''
    returnType: void
    signature: void libucontext_makecontext(libucontext_ucontext_t *ucp, void (*func)(void),
      int argc, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - dest
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 62
    functionName: FETCH_LINKPTR
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/x86/defs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FETCH_LINKPTR(dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/lwan/src/3rdparty/libucontext/arch/x86/makecontext.c:46,1
    - Dst: va_arg
      Src: /src/lwan/src/3rdparty/libucontext/arch/x86/makecontext.c:49,1
    - Dst: va_end
      Src: /src/lwan/src/3rdparty/libucontext/arch/x86/makecontext.c:51,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - ucp
    - argc
    argTypes:
    - libucontext_ucontext_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 54
    functionName: libucontext_makecontext
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/x86/makecontext.c
    functionUses: 2
    functionsReached:
    - va_end
    - va_start
    - va_arg
    linkageType: ''
    returnType: void
    signature: void libucontext_makecontext(libucontext_ucontext_t *ucp, void (*func)(void),
      int argc, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - dest
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 17
      start: 15
    functionDepth: 0
    functionLinenumber: 15
    functionLinenumberEnd: 17
    functionName: FETCH_LINKPTR
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/sh/defs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FETCH_LINKPTR(dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/lwan/src/3rdparty/libucontext/arch/sh/makecontext.c:43,1
    - Dst: va_arg
      Src: /src/lwan/src/3rdparty/libucontext/arch/sh/makecontext.c:48,1
    - Dst: va_arg
      Src: /src/lwan/src/3rdparty/libucontext/arch/sh/makecontext.c:51,1
    - Dst: va_end
      Src: /src/lwan/src/3rdparty/libucontext/arch/sh/makecontext.c:53,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - ucp
    - argc
    argTypes:
    - libucontext_ucontext_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 54
    functionName: libucontext_makecontext
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/sh/makecontext.c
    functionUses: 2
    functionsReached:
    - va_end
    - va_start
    - va_arg
    linkageType: ''
    returnType: void
    signature: void libucontext_makecontext(libucontext_ucontext_t *ucp, void (*func)(void),
      int argc, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - __proc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 82
    functionName: SETUP_FRAME
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETUP_FRAME(__proc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - __proc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 86
    functionName: PUSH_FRAME
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PUSH_FRAME(__proc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - __proc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 89
    functionName: POP_FRAME
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: POP_FRAME(__proc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - __proc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 91
    functionName: ENT
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ENT(__proc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: visibility
      Src: /src/lwan/src/3rdparty/libucontext/arch/common/common-trampoline.c:17,1
    - Dst: FETCH_LINKPTR
      Src: /src/lwan/src/3rdparty/libucontext/arch/common/common-trampoline.c:23,1
    - Dst: exit
      Src: /src/lwan/src/3rdparty/libucontext/arch/common/common-trampoline.c:26,1
    - Dst: libucontext_setcontext
      Src: /src/lwan/src/3rdparty/libucontext/arch/common/common-trampoline.c:28,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 29
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 29
    functionName: libucontext_trampoline
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/common/common-trampoline.c
    functionUses: 0
    functionsReached:
    - libucontext_setcontext
    - visibility
    - FETCH_LINKPTR
    - exit
    linkageType: ''
    returnType: void
    signature: void libucontext_trampoline(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - __proc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 25
    functionName: TYPE
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/common/common-defs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TYPE(__proc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - __proc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 31
    functionName: PROC_NAME
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/common/common-defs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PROC_NAME(__proc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - __proc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: PROC_NAME
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/common/common-defs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PROC_NAME(__proc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - __proc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 43
    functionName: FUNC
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/common/common-defs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FUNC(__proc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - __proc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 49
    functionName: END
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/common/common-defs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: END(__proc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - __alias
    - ','
    - __real
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 55
    functionName: ALIAS
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/common/common-defs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALIAS(__alias, __real)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - __reg
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 60
    functionName: REG_OFFSET
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/common/common-defs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REG_OFFSET(__reg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - dest
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: FETCH_LINKPTR
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/aarch64/defs.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FETCH_LINKPTR(dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/lwan/src/3rdparty/libucontext/arch/aarch64/makecontext.c:46,1
    - Dst: va_arg
      Src: /src/lwan/src/3rdparty/libucontext/arch/aarch64/makecontext.c:51,1
    - Dst: va_arg
      Src: /src/lwan/src/3rdparty/libucontext/arch/aarch64/makecontext.c:54,1
    - Dst: va_end
      Src: /src/lwan/src/3rdparty/libucontext/arch/aarch64/makecontext.c:56,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - ucp
    - argc
    argTypes:
    - libucontext_ucontext_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 57
    functionName: libucontext_makecontext
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/aarch64/makecontext.c
    functionUses: 2
    functionsReached:
    - va_end
    - va_start
    - va_arg
    linkageType: ''
    returnType: void
    signature: void libucontext_makecontext(libucontext_ucontext_t *ucp, void (*func)(void),
      int argc, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/lwan/src/3rdparty/libucontext/arch/ppc/makecontext.c:46,1
    - Dst: va_arg
      Src: /src/lwan/src/3rdparty/libucontext/arch/ppc/makecontext.c:50,1
    - Dst: va_arg
      Src: /src/lwan/src/3rdparty/libucontext/arch/ppc/makecontext.c:52,1
    - Dst: va_end
      Src: /src/lwan/src/3rdparty/libucontext/arch/ppc/makecontext.c:55,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - ucp
    - argc
    argTypes:
    - libucontext_ucontext_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 56
    functionName: libucontext_makecontext
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/ppc/makecontext.c
    functionUses: 2
    functionsReached:
    - va_end
    - va_start
    - va_arg
    linkageType: ''
    returnType: void
    signature: void libucontext_makecontext(libucontext_ucontext_t *ucp, void (*func)(),
      int argc, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: visibility
      Src: /src/lwan/src/3rdparty/libucontext/arch/ppc/retfromsyscall.c:16,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - retval
    argTypes:
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 24
    functionName: __retfromsyscall
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/ppc/retfromsyscall.c
    functionUses: 0
    functionsReached:
    - visibility
    linkageType: ''
    returnType: int
    signature: int __retfromsyscall(long retval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - __proc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9
      start: 8
    functionDepth: 0
    functionLinenumber: 8
    functionLinenumberEnd: 9
    functionName: TYPE
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/arm/defs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TYPE(__proc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - dest
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 12
      start: 10
    functionDepth: 0
    functionLinenumber: 10
    functionLinenumberEnd: 12
    functionName: FETCH_LINKPTR
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/arm/defs.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FETCH_LINKPTR(dest)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/lwan/src/3rdparty/libucontext/arch/arm/makecontext.c:46,1
    - Dst: va_arg
      Src: /src/lwan/src/3rdparty/libucontext/arch/arm/makecontext.c:51,1
    - Dst: va_arg
      Src: /src/lwan/src/3rdparty/libucontext/arch/arm/makecontext.c:54,1
    - Dst: va_end
      Src: /src/lwan/src/3rdparty/libucontext/arch/arm/makecontext.c:56,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - ucp
    - argc
    argTypes:
    - libucontext_ucontext_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 57
    functionName: libucontext_makecontext
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/arm/makecontext.c
    functionUses: 2
    functionsReached:
    - va_end
    - va_start
    - va_arg
    linkageType: ''
    returnType: void
    signature: void libucontext_makecontext(libucontext_ucontext_t *ucp, void (*func)(void),
      int argc, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - __proc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 70
    functionName: PUSH_FRAME
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PUSH_FRAME(__proc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - __proc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: POP_FRAME
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: POP_FRAME(__proc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/lwan/src/3rdparty/libucontext/arch/ppc64/makecontext.c:47,1
    - Dst: va_arg
      Src: /src/lwan/src/3rdparty/libucontext/arch/ppc64/makecontext.c:51,1
    - Dst: va_arg
      Src: /src/lwan/src/3rdparty/libucontext/arch/ppc64/makecontext.c:53,1
    - Dst: va_end
      Src: /src/lwan/src/3rdparty/libucontext/arch/ppc64/makecontext.c:56,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - ucp
    - argc
    argTypes:
    - libucontext_ucontext_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 57
    functionName: libucontext_makecontext
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/ppc64/makecontext.c
    functionUses: 2
    functionsReached:
    - va_end
    - va_start
    - va_arg
    linkageType: ''
    returnType: void
    signature: void libucontext_makecontext(libucontext_ucontext_t *ucp, void (*func)(),
      int argc, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: visibility
      Src: /src/lwan/src/3rdparty/libucontext/arch/ppc64/retfromsyscall.c:16,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - retval
    argTypes:
    - long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 24
      start: 16
    functionDepth: 0
    functionLinenumber: 16
    functionLinenumberEnd: 24
    functionName: __retfromsyscall
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/ppc64/retfromsyscall.c
    functionUses: 0
    functionsReached:
    - visibility
    linkageType: ''
    returnType: int
    signature: int __retfromsyscall(long retval)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - dest
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 52
    functionName: FETCH_LINKPTR
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/riscv32/defs.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FETCH_LINKPTR(dest)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/lwan/src/3rdparty/libucontext/arch/riscv32/makecontext.c:44,1
    - Dst: va_arg
      Src: /src/lwan/src/3rdparty/libucontext/arch/riscv32/makecontext.c:50,1
    - Dst: va_arg
      Src: /src/lwan/src/3rdparty/libucontext/arch/riscv32/makecontext.c:54,1
    - Dst: va_end
      Src: /src/lwan/src/3rdparty/libucontext/arch/riscv32/makecontext.c:56,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - ucp
    - argc
    argTypes:
    - libucontext_ucontext_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 57
    functionName: libucontext_makecontext
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/riscv32/makecontext.c
    functionUses: 2
    functionsReached:
    - va_end
    - va_start
    - va_arg
    linkageType: ''
    returnType: void
    signature: void libucontext_makecontext(libucontext_ucontext_t *ucp, void (*func)(void),
      int argc, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - __proc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 79
    functionName: SETUP_FRAME
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SETUP_FRAME(__proc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - __proc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 83
    functionName: PUSH_FRAME
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PUSH_FRAME(__proc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - __proc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 87
    functionName: POP_FRAME
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: POP_FRAME(__proc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - __proc
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 89
    functionName: ENT
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ENT(__proc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - dest
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 102
    functionName: FETCH_LINKPTR
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/x86_64/defs.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FETCH_LINKPTR(dest)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/lwan/src/3rdparty/libucontext/arch/x86_64/makecontext.c:46,1
    - Dst: va_arg
      Src: /src/lwan/src/3rdparty/libucontext/arch/x86_64/makecontext.c:52,1
    - Dst: va_arg
      Src: /src/lwan/src/3rdparty/libucontext/arch/x86_64/makecontext.c:55,1
    - Dst: va_arg
      Src: /src/lwan/src/3rdparty/libucontext/arch/x86_64/makecontext.c:58,1
    - Dst: va_arg
      Src: /src/lwan/src/3rdparty/libucontext/arch/x86_64/makecontext.c:61,1
    - Dst: va_arg
      Src: /src/lwan/src/3rdparty/libucontext/arch/x86_64/makecontext.c:64,1
    - Dst: va_arg
      Src: /src/lwan/src/3rdparty/libucontext/arch/x86_64/makecontext.c:67,1
    - Dst: va_arg
      Src: /src/lwan/src/3rdparty/libucontext/arch/x86_64/makecontext.c:70,1
    - Dst: va_end
      Src: /src/lwan/src/3rdparty/libucontext/arch/x86_64/makecontext.c:74,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 2
    argNames:
    - ucp
    - argc
    argTypes:
    - libucontext_ucontext_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 75
    functionName: libucontext_makecontext
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/arch/x86_64/makecontext.c
    functionUses: 2
    functionsReached:
    - va_end
    - va_start
    - va_arg
    linkageType: ''
    returnType: void
    signature: void libucontext_makecontext(libucontext_ucontext_t *ucp, void (*func)(void),
      int argc, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: libucontext_swapcontext
      Src: /src/lwan/src/3rdparty/libucontext/examples/cooperative_threading.c:20,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - target
    argTypes:
    - libucontext_ucontext_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 21
    functionName: yieldto
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/examples/cooperative_threading.c
    functionUses: 0
    functionsReached:
    - libucontext_swapcontext
    linkageType: ''
    returnType: void
    signature: void yieldto(libucontext_ucontext_t *target)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: random
      Src: /src/lwan/src/3rdparty/libucontext/examples/cooperative_threading.c:30,1
    - Dst: srandom
      Src: /src/lwan/src/3rdparty/libucontext/examples/cooperative_threading.c:33,1
    - Dst: time
      Src: /src/lwan/src/3rdparty/libucontext/examples/cooperative_threading.c:33,1
    - Dst: yieldto
      Src: /src/lwan/src/3rdparty/libucontext/examples/cooperative_threading.c:35,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 23
    functionDepth: 1
    functionLinenumber: 23
    functionLinenumberEnd: 36
    functionName: yield
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/examples/cooperative_threading.c
    functionUses: 25
    functionsReached:
    - yieldto
    - time
    - random
    - srandom
    linkageType: ''
    returnType: void
    signature: void yield(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/lwan/src/3rdparty/libucontext/examples/cooperative_threading.c:47,1
    - Dst: yield
      Src: /src/lwan/src/3rdparty/libucontext/examples/cooperative_threading.c:48,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - multiple
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 38
    functionDepth: 2
    functionLinenumber: 38
    functionLinenumberEnd: 53
    functionName: worker
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/examples/cooperative_threading.c
    functionUses: 0
    functionsReached:
    - yield
    - printf
    linkageType: ''
    returnType: void
    signature: void worker(size_t multiple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: realloc
      Src: /src/lwan/src/3rdparty/libucontext/examples/cooperative_threading.c:61,1
    - Dst: memset
      Src: /src/lwan/src/3rdparty/libucontext/examples/cooperative_threading.c:64,1
    - Dst: libucontext_getcontext
      Src: /src/lwan/src/3rdparty/libucontext/examples/cooperative_threading.c:67,1
    - Dst: calloc
      Src: /src/lwan/src/3rdparty/libucontext/examples/cooperative_threading.c:74,1
    - Dst: libucontext_makecontext
      Src: /src/lwan/src/3rdparty/libucontext/examples/cooperative_threading.c:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - multiple
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 78
    functionName: create
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/examples/cooperative_threading.c
    functionUses: 15
    functionsReached:
    - realloc
    - calloc
    - memset
    - libucontext_makecontext
    - libucontext_getcontext
    linkageType: ''
    returnType: void
    signature: void create(size_t multiple)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: srandom
      Src: /src/lwan/src/3rdparty/libucontext/examples/cooperative_threading.c:83,1
    - Dst: time
      Src: /src/lwan/src/3rdparty/libucontext/examples/cooperative_threading.c:83,1
    - Dst: libucontext_getcontext
      Src: /src/lwan/src/3rdparty/libucontext/examples/cooperative_threading.c:85,1
    - Dst: create
      Src: /src/lwan/src/3rdparty/libucontext/examples/cooperative_threading.c:88,1
    - Dst: yieldto
      Src: /src/lwan/src/3rdparty/libucontext/examples/cooperative_threading.c:91,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 94
    functionName: main
    functionSourceFile: /src/lwan/src/3rdparty/libucontext/examples/cooperative_threading.c
    functionUses: 5
    functionsReached:
    - create
    - yieldto
    - srandom
    - libucontext_getcontext
    - time
    linkageType: ''
    returnType: int
    signature: int main(int argc, const char *argv[])
Fuzzer filename: /src/lwan/src/bin/fuzz/pattern_fuzzer.cc
Fuzzing method: LLVMFuzzerTestOneInput
included-header-files:
- libproc.h
- database.h
- locale.h
- int-to-str.h
- zstd.h
- font/sevenE.xbm
- common-trampoline.c
- libucontext/bits.h
- lwan-array.h
- sys/random.h
- sys/syscall.h
- sys/prctl.h
- mbedtls/ctr_drbg.h
- ../../lib/hash.h
- lwan-strbuf.h
- sys/types.h
- mbedtls/ssl_internal.h
- linux/capability.h
- linux/prctl.h
- dirent.h
- hash.h
- font/slashE.xbm
- font/eightE.xbm
- linux/filter.h
- lwan-tq.h
- libgen.h
- common-defs.h
- ../../lib/lwan-array.h
- realpathat.h
- zlib-ng.h
- qrcodegen.h
- lwan-http-status.h
- timeout.h
- immintrin.h
- features.h
- ctype.h
- ucontext.h
- mbedtls/error.h
- lwan-io-wrappers.h
- base64.h
- netdb.h
- sched.h
- numbers.h
- sys/thr.h
- font/twoE.xbm
- sys/epoll.h
- pong.h
- font/zeroE.xbm
- unistd.h
- linux/magic.h
- lwan-log.h
- font/colonE.xbm
- signal.h
- zopfli/zopfli.h
- blocks.h
- sys/param.h
- lwan-mod-rewrite.h
- lwan-http-authorize.h
- stdint.h
- lwan-mod-redirect.h
- font/fourE.xbm
- libkern/OSByteOrder.h
- libdeflate.h
- mbedtls/entropy.h
- lwan-trie.h
- netinet/in.h
- linux/landlock.h
- sys/time.h
- sha1.h
- pthread.h
- string.h
- lwan-mod-response.h
- lwan-arena.h
- inttypes.h
- getopt.h
- poll.h
- errno.h
- lwan-cache.h
- forth.h
- brotli/encode.h
- sys/eventfd.h
- puff.h
- stddef.h
- limits.h
- mbedtls/net_sockets.h
- lwan-mod-lua.h
- lwan-mod-fastcgi.h
- stdbool.h
- config.h
- stdarg.h
- lwan.h
- assert.h
- font/oneE.xbm
- memcheck.h
- mbedtls/ssl.h
- endian.h
- stdio.h
- mbedtls/gcm.h
- gifenc.h
- sys/ioctl.h
- lwan-config.h
- ../../lib/lwan-http-status.h
- lualib.h
- libucontext/libucontext.h
- lua.h
- syslog.h
- sys/vfs.h
- lwan-lua.h
- response-data.h
- winsock2.h
- linux/tls.h
- patterns.h
- lwan-template.h
- dlfcn.h
- fcntl.h
- math.h
- arpa/inet.h
- sys/sysctl.h
- font/fiveE.xbm
- pthread_np.h
- font/nineE.xbm
- sys/socket.h
- sys/event.h
- mysql.h
- servefile-data.h
- grp.h
- pwd.h
- lookup-http-status.h
- zlib.h
- brotli/decode.h
- stdlib.h
- sd-daemon.h
- sys/endian.h
- sys/uio.h
- ioprio.h
- lwan-coro.h
- valgrind.h
- strings.h
- lwan-mod-serve-files.h
- mime-types.h
- ../techempower/json.h
- emmintrin.h
- ringbuffer.h
- ../clock/gifenc.h
- lauxlib.h
- alloca.h
- time.h
- sys/auxv.h
- defs.h
- sys/mount.h
- gif.h
- netinet/tcp.h
- websocket-sample.h
- sys/resource.h
- xdaliclock.h
- sys/mman.h
- json.h
- font/sixE.xbm
- lwan-pubsub.h
- sqlite3.h
- sys/stat.h
- sys/un.h
- junzip.h
- list.h
- sys/sendfile.h
- font/threeE.xbm
- lwan-private.h
- smolsite.h
report: name
sources:
- function_names:
  - indent
  - dump
  - main
  source_file: /src/lwan/src/bin/tools/configdump.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - Z
  - Z
  - output_append_full
  - output_append_u64
  - output_append
  - compare_ext
  - strend
  - compress_output
  - parse_shared_mime_info
  - main
  source_file: /src/lwan/src/bin/tools/mimegen.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*ptr'
        type: char
      - name: used
        type: size_t
      item_type: struct
      name: output
      pos:
        line_end: 54
        line_start: 51
        source_file: /src/lwan/src/bin/tools/mimegen.c
    typedefs: []
    union: []
- function_names:
  - rotate
  - map_0_to_n
  - main
  - COMPARE_MAX
  - SELECT_KEY
  - PRINT_V
  source_file: /src/lwan/src/bin/tools/statuslookupgen.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: N_KEYS
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/lwan/src/bin/tools/statuslookupgen.c
      type_or_value: ((int)(sizeof(keys) / sizeof(keys[0])))
    structs: []
    typedefs: []
    union: []
- function_names:
  - bin2hex_mmap
  - bin2hex_incbin
  - bin2hex
  - main
  source_file: /src/lwan/src/bin/tools/bin2hex.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - __attribute_format__
  - __builtin_expect
  - __attribute_noinline__
  - __attribute_noinline__
  - client_init
  - client_delete
  - __attribute_noinline__
  - __attribute_noinline__
  - __attribute_noinline__
  - __attribute_noinline__
  - client_reset
  - __attribute_noinline__
  - __attribute_noinline__
  - client_connected
  - client_connect
  - client_parse_chunks
  - client_parse_uint64
  - __attribute_noinline__
  - client_revents
  - worker_thread
  - config_error_diagnostic
  - __attribute_noreturn__
  - __attribute_noreturn__
  - config_laddr
  - config_laddrs
  - config_raddr
  - config_base64_encode_pad
  - config_request
  - __attribute_noinline__
  - __attribute_noinline__
  - main
  source_file: /src/lwan/src/bin/tools/weighttp.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: _GNU_SOURCE
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/lwan/src/bin/tools/weighttp.c
      type_or_value: '1'
    - item_type: preproc_def
      name: MSG_FASTOPEN
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/lwan/src/bin/tools/weighttp.c
      type_or_value: '0'
    - item_type: preproc_def
      name: MSG_DONTWAIT
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/lwan/src/bin/tools/weighttp.c
      type_or_value: '0'
    - item_type: preproc_def
      name: MSG_NOSIGNAL
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/lwan/src/bin/tools/weighttp.c
      type_or_value: '0'
    - item_type: preproc_def
      name: SOCK_NONBLOCK
      pos:
        line_end: 59
        line_start: 58
        source_file: /src/lwan/src/bin/tools/weighttp.c
      type_or_value: '0'
    - item_type: preproc_def
      name: PACKAGE_VERSION
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/lwan/src/bin/tools/weighttp.c
      type_or_value: '""'
    - item_type: preproc_def
      name: __attribute_cold__
      pos:
        line_end: 70
        line_start: 69
        source_file: /src/lwan/src/bin/tools/weighttp.c
      type_or_value: __attribute__((__cold__))
    - item_type: preproc_def
      name: __attribute_hot__
      pos:
        line_end: 73
        line_start: 72
        source_file: /src/lwan/src/bin/tools/weighttp.c
      type_or_value: __attribute__((__hot__))
    - item_type: preproc_def
      name: __attribute_noinline__
      pos:
        line_end: 76
        line_start: 75
        source_file: /src/lwan/src/bin/tools/weighttp.c
      type_or_value: __attribute__((__noinline__))
    - item_type: preproc_def
      name: __attribute_noreturn__
      pos:
        line_end: 79
        line_start: 78
        source_file: /src/lwan/src/bin/tools/weighttp.c
      type_or_value: __attribute__((__noreturn__))
    - item_type: preproc_def
      name: __attribute_pure__
      pos:
        line_end: 82
        line_start: 81
        source_file: /src/lwan/src/bin/tools/weighttp.c
      type_or_value: __attribute__((__pure__))
    - item_type: preproc_def
      name: CLIENT_BUFFER_SIZE
      pos:
        line_end: 173
        line_start: 172
        source_file: /src/lwan/src/bin/tools/weighttp.c
      type_or_value: 32 * 1024
    - item_type: preproc_def
      name: UNIX_PATH_MAX
      pos:
        line_end: 1284
        line_start: 1283
        source_file: /src/lwan/src/bin/tools/weighttp.c
      type_or_value: '108'
    - item_type: preproc_def
      name: O_BINARY
      pos:
        line_end: 1530
        line_start: 1529
        source_file: /src/lwan/src/bin/tools/weighttp.c
      type_or_value: '0'
    - item_type: preproc_def
      name: O_LARGEFILE
      pos:
        line_end: 1533
        line_start: 1532
        source_file: /src/lwan/src/bin/tools/weighttp.c
      type_or_value: '0'
    - item_type: preproc_def
      name: O_NOATIME
      pos:
        line_end: 1536
        line_start: 1535
        source_file: /src/lwan/src/bin/tools/weighttp.c
      type_or_value: '0'
    structs:
    - fields:
      - name: req_todo
        type: uint64_t
      - name: req_started
        type: uint64_t
      - name: req_done
        type: uint64_t
      - name: req_success
        type: uint64_t
      - name: req_failed
        type: uint64_t
      - name: req_error
        type: uint64_t
      - name: bytes_total
        type: uint64_t
      - name: bytes_headers
        type: uint64_t
      - name: req_2xx
        type: uint64_t
      - name: req_3xx
        type: uint64_t
      - name: req_4xx
        type: uint64_t
      - name: req_5xx
        type: uint64_t
      item_type: struct
      name: Stats
      pos:
        line_end: 200
        line_start: 187
        source_file: /src/lwan/src/bin/tools/weighttp.c
    - fields:
      - name: revents
        type: int
      - name: parser_state
        type: "enum {\n        PARSER_CONNECT,\n        PARSER_START,\n        PARSER_HEADER,\n
          \       PARSER_BODY\n    }"
      - name: buffer_offset
        type: uint32_t
      - name: parser_offset
        type: uint32_t
      - name: request_offset
        type: uint32_t
      - name: chunked
        type: int
      - name: content_length
        type: int64_t
      - name: chunk_size
        type: int64_t
      - name: chunk_received
        type: int64_t
      - name: http_status_success
        type: int
      - name: config_keepalive
        type: int
      - name: keepalive
        type: int
      - name: keptalive
        type: int
      - name: pipelined
        type: int
      - name: pipeline_max
        type: int
      - name: tcp_fastopen
        type: int
      - name: http_head
        type: int
      - name: so_bufsz
        type: int
      - name: request_size
        type: uint32_t
      - name: '*request'
        type: char
      - name: '*pfd'
        type: struct pollfd
      - name: '*stats'
        type: Stats
      - name: '*raddr'
        type: struct addrinfo
      - name: '*laddr'
        type: struct addrinfo
      - name: buffer[CLIENT_BUFFER_SIZE]
        type: char
      item_type: struct
      name: Client
      pos:
        line_end: 235
        line_start: 202
        source_file: /src/lwan/src/bin/tools/weighttp.c
    - fields:
      - name: '*pfds'
        type: struct pollfd
      - name: '*clients'
        type: Client
      - name: stats
        type: Stats
      - name: raddr
        type: struct addrinfo
      - name: laddr
        type: struct addrinfo
      - name: raddr_storage
        type: struct sockaddr_storage
      - name: laddr_storage
        type: struct sockaddr_storage
      item_type: struct
      name: Worker
      pos:
        line_end: 245
        line_start: 237
        source_file: /src/lwan/src/bin/tools/weighttp.c
    - fields:
      - name: '*config'
        type: Config
      - name: id
        type: int
      - name: num_clients
        type: int
      - name: num_requests
        type: uint64_t
      - name: stats
        type: Stats
      - name: "padding[(256 - (1*sizeof(void *))\n                          - (2*sizeof(int))\n
          \                         - (1*sizeof(uint64_t))\n                          -
          sizeof(Stats))\n                      / sizeof(uint64_t)]"
        type: uint64_t
      item_type: struct
      name: Worker_Config
      pos:
        line_end: 262
        line_start: 247
        source_file: /src/lwan/src/bin/tools/weighttp.c
    - fields:
      - name: '*wconfs'
        type: Worker_Config
      - name: '*proxy'
        type: char
      - name: ts_start
        type: struct timeval
      - name: ts_end
        type: struct timeval
      - name: req_count
        type: uint64_t
      - name: thread_count
        type: int
      - name: keep_alive
        type: int
      - name: concur_count
        type: int
      - name: pipeline_max
        type: int
      - name: tcp_fastopen
        type: int
      - name: http_head
        type: int
      - name: so_bufsz
        type: int
      - name: quiet
        type: int
      - name: request_size
        type: uint32_t
      - name: '*request'
        type: char
      - name: buf[16384]
        type: char
      - name: raddr
        type: struct addrinfo
      - name: laddr
        type: struct addrinfo
      - name: raddr_storage
        type: struct sockaddr_storage
      - name: laddr_storage
        type: struct sockaddr_storage
      - name: laddrs
        type: "struct laddrs {\n        struct addrinfo **addrs;\n        int num;\n
          \   }"
      item_type: struct
      name: Config
      pos:
        line_end: 291
        line_start: 264
        source_file: /src/lwan/src/bin/tools/weighttp.c
    - fields:
      - name: '**addrs'
        type: struct addrinfo
      - name: num
        type: int
      item_type: struct
      name: laddrs
      pos:
        line_end: 290
        line_start: 287
        source_file: /src/lwan/src/bin/tools/weighttp.c
    - fields:
      - name: '*method'
        type: char
      - name: '*uri'
        type: char
      - name: '*laddrstr'
        type: char
      - name: use_ipv6
        type: int
      - name: headers_num
        type: int
      - name: cookies_num
        type: int
      - name: '*headers[64]'
        type: char
      - name: '*cookies[64]'
        type: char
      - name: '*body_content_type'
        type: char
      - name: '*body_filename'
        type: char
      - name: '*authorization'
        type: char
      - name: '*proxy_authorization'
        type: char
      item_type: struct
      name: config_params
      pos:
        line_end: 1209
        line_start: 1196
        source_file: /src/lwan/src/bin/tools/weighttp.c
    typedefs:
    - item_type: typedef
      name: Stats
      pos:
        line_end: 176
        line_start: 176
        source_file: /src/lwan/src/bin/tools/weighttp.c
      type: Stats
    - item_type: typedef
      name: Client
      pos:
        line_end: 178
        line_start: 178
        source_file: /src/lwan/src/bin/tools/weighttp.c
      type: Client
    - item_type: typedef
      name: Worker
      pos:
        line_end: 180
        line_start: 180
        source_file: /src/lwan/src/bin/tools/weighttp.c
      type: Worker
    - item_type: typedef
      name: Config
      pos:
        line_end: 182
        line_start: 182
        source_file: /src/lwan/src/bin/tools/weighttp.c
      type: Config
    - item_type: typedef
      name: Worker_Config
      pos:
        line_end: 184
        line_start: 184
        source_file: /src/lwan/src/bin/tools/weighttp.c
      type: Worker_Config
    union: []
- function_names:
  - print_module_info
  - LWAN_SECTION_FOREACH
  - print_handler_info
  - LWAN_SECTION_FOREACH
  - print_build_time_configuration
  - print_help
  - print_version
  - parse_args
  - main
  source_file: /src/lwan/src/bin/lwan/main.c
  types:
    enum:
    - enumerators:
      - name: ARGS_FAILED
      - name: ARGS_SERVE_FILES
      - name: ARGS_USE_CONFIG
      item_type: enum
      name: args
      pos:
        line_end: 33
        line_start: 29
        source_file: /src/lwan/src/bin/lwan/main.c
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - LLVMFuzzerTestOneInput
  source_file: /src/lwan/src/bin/fuzz/request_fuzzer.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - LLVMFuzzerTestOneInput
  source_file: /src/lwan/src/bin/fuzz/pattern_fuzzer.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - LLVMFuzzerTestOneInput
  source_file: /src/lwan/src/bin/fuzz/h2_huffman_fuzzer.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - directory_list_generator
  - LLVMFuzzerTestOneInput
  source_file: /src/lwan/src/bin/fuzz/template_fuzzer.cc
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TPL_STRUCT
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/lwan/src/bin/fuzz/template_fuzzer.cc
      type_or_value: struct file_list
    structs:
    - fields:
      - name: '*full_path'
        type: char
      - name: '*rel_path'
        type: char
      - name: '*readme'
        type: char
      - name: file_list
        type: "struct {\n        coro_function_t generator;\n\n        const char
          *icon;\n        const char *icon_alt;\n        const char *name;\n        const
          char *type;\n\n        int size;\n        const char *unit;\n\n        const
          char *zebra_class;\n    }"
      item_type: struct
      name: file_list
      pos:
        line_end: 26
        line_start: 9
        source_file: /src/lwan/src/bin/fuzz/template_fuzzer.cc
    typedefs: []
    union: []
- function_names:
  - LWAN_NO_DISCARD
  - dump
  - LLVMFuzzerTestOneInput
  source_file: /src/lwan/src/bin/fuzz/config_fuzzer.cc
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - LWAN_HANDLER
  - LWAN_HANDLER
  - LWAN_HANDLER
  - LWAN_HANDLER
  - LWAN_HANDLER
  - LWAN_HANDLER
  - LWAN_HANDLER
  - LWAN_HANDLER
  - LWAN_HANDLER
  - LWAN_ARRAY_FOREACH
  - LWAN_ARRAY_FOREACH
  - LWAN_ARRAY_FOREACH
  - LWAN_HANDLER
  - LWAN_HANDLER
  - main
  source_file: /src/lwan/src/bin/testrunner/main.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - append_to_strbuf
  - localtime_now
  - main
  source_file: /src/lwan/src/samples/send-money-json-api/main.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: ARRAY_SIZE
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/lwan/src/samples/send-money-json-api/main.c
      type_or_value: N_ELEMENTS
    structs:
    - fields:
      - name: '*street'
        type: char
      - name: '*city'
        type: char
      - name: '*state'
        type: char
      - name: '*zip'
        type: char
      item_type: struct
      name: address
      pos:
        line_end: 39
        line_start: 34
        source_file: /src/lwan/src/samples/send-money-json-api/main.c
    - fields:
      - name: '*id'
        type: char
      - name: '*firstName'
        type: char
      - name: '*lastName'
        type: char
      - name: address
        type: struct address
      - name: '*email'
        type: char
      item_type: struct
      name: account_holder
      pos:
        line_end: 47
        line_start: 41
        source_file: /src/lwan/src/samples/send-money-json-api/main.c
    - fields:
      - name: from
        type: struct account_holder
      - name: amount
        type: int
      - name: '*sendOn'
        type: char
      item_type: struct
      name: send_money_request
      pos:
        line_end: 53
        line_start: 49
        source_file: /src/lwan/src/samples/send-money-json-api/main.c
    - fields:
      - name: '*from_account'
        type: char
      - name: '*to_account'
        type: char
      - name: '*created_on'
        type: char
      - name: '*to_address'
        type: char
      - name: amount
        type: int
      item_type: struct
      name: receipt
      pos:
        line_end: 61
        line_start: 55
        source_file: /src/lwan/src/samples/send-money-json-api/main.c
    typedefs: []
    union: []
- function_names:
  - ROUND_UP
  - JSON_FIELD_NAME
  - JSON_OBJ_DESCR_PRIM
  - JSON_OBJ_DESCR_OBJECT
  - JSON_OBJ_DESCR_ARRAY
  - JSON_OBJ_DESCR_OBJ_ARRAY
  - JSON_OBJ_DESCR_ARRAY_ARRAY
  - JSON_OBJ_DESCR_PRIM_NAMED
  - JSON_OBJ_DESCR_OBJECT_NAMED
  - JSON_OBJ_DESCR_ARRAY_NAMED
  - JSON_OBJ_DESCR_OBJ_ARRAY_NAMED
  - json_obj_encode
  - json_arr_encode
  source_file: /src/lwan/src/samples/techempower/json.h
  types:
    enum:
    - enumerators:
      - name: JSON_TOK_NONE
        value: '''_'''
      - name: JSON_TOK_LIST_START
        value: '''['''
      - name: JSON_TOK_OBJECT_START
        value: '''{'''
      - name: JSON_TOK_OBJECT_END
        value: '''}'''
      - name: JSON_TOK_LIST_END
        value: ''']'''
      - name: JSON_TOK_STRING
        value: '''"'''
      - name: JSON_TOK_COLON
        value: ''':'''
      - name: JSON_TOK_COMMA
        value: ''','''
      - name: JSON_TOK_NUMBER
        value: '''0'''
      - name: JSON_TOK_TRUE
        value: '''t'''
      - name: JSON_TOK_ERROR
        value: '''!'''
      - name: JSON_TOK_EOF
        value: '''\0'''
      - name: JSON_TOK_FALSE
        value: '''f'''
      - name: JSON_TOK_NULL
        value: '''n'''
      item_type: enum
      name: json_tokens
      pos:
        line_end: 52
        line_start: 32
        source_file: /src/lwan/src/samples/techempower/json.h
    preproc_defs: []
    structs:
    - fields:
      - name: '*field_name'
        type: char
      - name: align
        type: uint32_t
      - name: field_name_len
        type: uint32_t
      - name: type
        type: uint32_t
      - name: offset
        type: uint32_t
      item_type: struct
      name: json_obj_descr
      pos:
        line_end: 72
        line_start: 54
        source_file: /src/lwan/src/samples/techempower/json.h
    typedefs:
    - item_type: typedef
      name: (*json_append_bytes_t)(const char *bytes, size_t len, void *data)
      pos:
        line_end: 86
        line_start: 86
        source_file: /src/lwan/src/samples/techempower/json.h
      type: int
    union: []
- function_names: []
  source_file: /src/lwan/src/samples/techempower/database.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: u
        type: "union {\n        char *s;\n        int i;\n    }"
      - name: buffer_length
        type: size_t
      item_type: struct
      name: db_row
      pos:
        line_end: 33
        line_start: 27
        source_file: /src/lwan/src/samples/techempower/database.h
    typedefs: []
    union: []
- function_names:
  - LWAN_LAZY_THREAD_LOCAL
  - append_to_strbuf
  - json_response_obj
  - json_response_arr
  - LWAN_HANDLER
  - db_query_key
  - db_query
  - LWAN_HANDLER
  - get_number_of_queries
  - LWAN_HANDLER
  - cached_queries_new
  - cached_queries_free
  - LWAN_HANDLER
  - LWAN_HANDLER
  - fortune_compare
  - append_fortune
  - fortune_list_generator
  - LWAN_HANDLER
  - LWAN_HANDLER
  - main
  source_file: /src/lwan/src/samples/techempower/techempower.c
  types:
    enum:
    - enumerators:
      - name: DB_CONN_MYSQL
      - name: DB_CONN_SQLITE
      item_type: enum
      name: db_connect_type
      pos:
        line_end: 34
        line_start: 34
        source_file: /src/lwan/src/samples/techempower/techempower.c
    preproc_defs:
    - item_type: preproc_def
      name: TPL_STRUCT
      pos:
        line_end: 87
        line_start: 86
        source_file: /src/lwan/src/samples/techempower/techempower.c
      type_or_value: struct Fortune
    structs:
    - fields:
      - name: type
        type: enum db_connect_type
      item_type: struct
      name: db_connection_params
      pos:
        line_end: 50
        line_start: 36
        source_file: /src/lwan/src/samples/techempower/techempower.c
    - fields:
      - name: item
        type: "struct {\n        coro_function_t generator;\n\n        int id;\n        char
          *message;\n    }"
      item_type: struct
      name: Fortune
      pos:
        line_end: 65
        line_start: 58
        source_file: /src/lwan/src/samples/techempower/techempower.c
    - fields:
      - name: '*message'
        type: char
      item_type: struct
      name: hello_world_json
      pos:
        line_end: 102
        line_start: 100
        source_file: /src/lwan/src/samples/techempower/techempower.c
    - fields:
      - name: id
        type: int
      - name: randomNumber
        type: int
      item_type: struct
      name: db_json
      pos:
        line_end: 110
        line_start: 107
        source_file: /src/lwan/src/samples/techempower/techempower.c
    - fields:
      - name: queries[500]
        type: struct db_json
      - name: queries_len
        type: size_t
      item_type: struct
      name: queries_json
      pos:
        line_end: 119
        line_start: 116
        source_file: /src/lwan/src/samples/techempower/techempower.c
    - fields:
      - name: base
        type: struct cache_entry
      - name: db_json
        type: struct db_json
      item_type: struct
      name: db_json_cached
      pos:
        line_end: 287
        line_start: 284
        source_file: /src/lwan/src/samples/techempower/techempower.c
    typedefs: []
    union: []
- function_names:
  - lexer_consume
  - lexer_next
  - emit
  - emit_cont
  - emit_end
  - next
  - ignore
  - backup
  - peek
  - lexer_string
  - accept_run
  - lexer_boolean
  - lexer_null
  - lexer_number
  - lexer_json
  - lexer_init
  - obj_init
  - element_token
  - obj_next
  - arr_next
  - decode_num
  - equivalent_types
  - decode_value
  - get_elem_size
  - arr_parse
  - obj_parse
  - json_obj_parse
  - has_zero
  - has_value
  - escape_as
  - json_escape_internal
  - json_calc_escaped_len
  - json_escape
  - arr_encode
  - str_encode
  - num_encode
  - bool_encode
  - json_arr_encode_full
  - encode
  - encode_key
  - json_obj_encode_full
  - append_bytes_to_buf
  - json_obj_encode_buf
  - measure_bytes
  - json_calc_encoded_len
  source_file: /src/lwan/src/samples/techempower/json.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: type
        type: enum json_tokens
      - name: '*start'
        type: char
      - name: '*end'
        type: char
      item_type: struct
      name: token
      pos:
        line_end: 25
        line_start: 21
        source_file: /src/lwan/src/samples/techempower/json.c
    - fields:
      - name: '*(*state)(struct lexer *lexer)'
        type: void
      - name: '*start'
        type: char
      - name: '*pos'
        type: char
      - name: '*end'
        type: char
      - name: token
        type: struct token
      item_type: struct
      name: lexer
      pos:
        line_end: 33
        line_start: 27
        source_file: /src/lwan/src/samples/techempower/json.c
    - fields:
      - name: lexer
        type: struct lexer
      item_type: struct
      name: json_obj
      pos:
        line_end: 37
        line_start: 35
        source_file: /src/lwan/src/samples/techempower/json.c
    - fields:
      - name: '*key'
        type: char
      - name: key_len
        type: size_t
      - name: value
        type: struct token
      item_type: struct
      name: json_obj_key_value
      pos:
        line_end: 43
        line_start: 39
        source_file: /src/lwan/src/samples/techempower/json.c
    - fields:
      - name: '*buffer'
        type: char
      - name: used
        type: size_t
      - name: size
        type: size_t
      item_type: struct
      name: appender
      pos:
        line_end: 901
        line_start: 897
        source_file: /src/lwan/src/samples/techempower/json.c
    typedefs: []
    union: []
- function_names:
  - db_stmt_bind_mysql
  - db_stmt_step_mysql
  - db_stmt_finalize_mysql
  - db_prepare_mysql
  - db_disconnect_mysql
  - db_connect_mysql
  - db_stmt_bind_sqlite
  - db_stmt_step_sqlite
  - db_stmt_finalize_sqlite
  - db_prepare_sqlite
  - db_disconnect_sqlite
  - db_connect_sqlite
  - db_stmt_bind
  - db_stmt_step
  - db_stmt_finalize
  - db_disconnect
  - db_prepare_stmt
  source_file: /src/lwan/src/samples/techempower/database.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: "(*bind)(const struct db_stmt *stmt,\n                 struct db_row
          *rows)"
        type: bool
      - name: (*step)(const struct db_stmt *stmt, va_list ap)
        type: bool
      - name: (*finalize)(struct db_stmt *stmt)
        type: void
      - name: '*param_signature'
        type: char
      - name: '*result_signature'
        type: char
      item_type: struct
      name: db_stmt
      pos:
        line_end: 38
        line_start: 31
        source_file: /src/lwan/src/samples/techempower/database.c
    - fields:
      - name: (*disconnect)(struct db *db)
        type: void
      - name: "*(*prepare)(const struct db *db,\n                               const
          char *sql,\n                               const char *param_signature,\n
          \                              const char *result_signature)"
        type: struct db_stmt
      item_type: struct
      name: db
      pos:
        line_end: 46
        line_start: 40
        source_file: /src/lwan/src/samples/techempower/database.c
    - fields:
      - name: base
        type: struct db
      - name: '*con'
        type: MYSQL
      item_type: struct
      name: db_mysql
      pos:
        line_end: 53
        line_start: 50
        source_file: /src/lwan/src/samples/techempower/database.c
    - fields:
      - name: base
        type: struct db_stmt
      - name: '*stmt'
        type: MYSQL_STMT
      - name: '*param_bind'
        type: MYSQL_BIND
      - name: '*result_bind'
        type: MYSQL_BIND
      - name: must_execute_again
        type: bool
      - name: results_are_bound
        type: bool
      - name: param_result_bind[]
        type: MYSQL_BIND
      item_type: struct
      name: db_stmt_mysql
      pos:
        line_end: 63
        line_start: 55
        source_file: /src/lwan/src/samples/techempower/database.c
    - fields:
      - name: base
        type: struct db
      - name: '*sqlite'
        type: sqlite3
      item_type: struct
      name: db_sqlite
      pos:
        line_end: 249
        line_start: 246
        source_file: /src/lwan/src/samples/techempower/database.c
    - fields:
      - name: base
        type: struct db_stmt
      - name: '*sqlite'
        type: sqlite3_stmt
      item_type: struct
      name: db_stmt_sqlite
      pos:
        line_end: 254
        line_start: 251
        source_file: /src/lwan/src/samples/techempower/database.c
    typedefs: []
    union: []
- function_names:
  - destroy_forth_ctx
  - destroy_gif_writer
  - current_precise_monotonic_timespec
  - elapsed_time_ms
  - main
  source_file: /src/lwan/src/samples/forthsalon/main.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/samples/forthsalon/forth.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: x
        type: double
      - name: t
        type: double
      - name: memory[16]
        type: double
      - name: '*final_r_stack_ptr'
        type: double
      - name: '*final_d_stack_ptr'
        type: double
      - name: '*r_stack'
        type: double
      item_type: struct
      name: forth_vars
      pos:
        line_end: 33
        line_start: 24
        source_file: /src/lwan/src/samples/forthsalon/forth.h
    typedefs: []
    union: []
- function_names:
  - is_inside_word_def
  - is_word_builtin
  - is_word_compiler
  - find_builtin_by_callback
  - LWAN_SECTION_FOREACH
  - LWAN_SECTION_FOREACH
  - op_number
  - op_jump_if
  - op_jump
  - op_nop
  - op_halt
  - op_eval_code
  - check_stack_effects
  - PUSH
  - POP
  - JS_PUSH
  - JS_POP
  - dump_code
  - LWAN_ARRAY_FOREACH
  - forth_run
  - parse_number
  - new_builtin_word
  - new_user_word
  - EMIT
  - peephole_1
  - peephole_n
  - peephole
  - found_word
  - inline_calls_code
  - LWAN_ARRAY_FOREACH
  - inline_calls
  - forth_parse_string
  - BUILTIN_DETAIL
  - BUILTIN_COMPILER_DETAIL
  - BUILTIN
  - BUILTIN_R
  - BUILTIN_COMPILER
  - builtin_else_then
  - PUSH_D
  - PUSH_R
  - DROP_D
  - DROP_R
  - POP_D
  - POP_R
  - NEXT
  - register_builtins
  - LWAN_SECTION_FOREACH
  - LWAN_SECTION_FOREACH
  - word_free
  - forth_new
  - forth_free
  - forth_d_stack_len
  - forth_d_stack_pop
  - LLVMFuzzerTestOneInput
  - main
  source_file: /src/lwan/src/samples/forthsalon/forth.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TAIL_CALL
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/lwan/src/samples/forthsalon/forth.c
      type_or_value: return
    - item_type: preproc_def
      name: TAIL_CALL
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/lwan/src/samples/forthsalon/forth.c
      type_or_value: __attribute__((musttail)) return
    - item_type: preproc_def
      name: MAX_WORD_LEN
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/lwan/src/samples/forthsalon/forth.c
      type_or_value: '64'
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: d_pushes
        type: int
      - name: d_pops
        type: int
      - name: r_pushes
        type: int
      - name: r_pops
        type: int
      item_type: struct
      name: forth_builtin
      pos:
        line_end: 77
        line_start: 63
        source_file: /src/lwan/src/samples/forthsalon/forth.c
    - fields:
      - name: name[]
        type: char
      item_type: struct
      name: forth_word
      pos:
        line_end: 88
        line_start: 79
        source_file: /src/lwan/src/samples/forthsalon/forth.c
    - fields:
      - name: '*defining_word'
        type: struct forth_word
      - name: '*main'
        type: struct forth_word
      - name: '*words'
        type: struct hash
      item_type: struct
      name: forth_ctx
      pos:
        line_end: 105
        line_start: 90
        source_file: /src/lwan/src/samples/forthsalon/forth.c
    typedefs: []
    union:
    - fields:
      - name: "(*callback)(union forth_inst *,\n                     double *d_stack,\n
          \                    struct forth_vars *vars)"
        type: void
      - name: '*code'
        type: struct forth_code
      - name: number
        type: double
      - name: pc
        type: size_t
      item_type: union
      name: forth_inst
      pos:
        line_end: 59
        line_start: 52
        source_file: /src/lwan/src/samples/forthsalon/forth.c
- function_names:
  - GifIMax
  - GifIMin
  - GifIAbs
  - GifGetClosestPaletteColor
  - GifSwapPixels
  - GifPartition
  - GifPartitionByMedian
  - GifPartitionByMean
  - GifSplitPalette
  - GifPickChangedPixels
  - GifMakePalette
  - GifDitherImage
  - GifThresholdImage
  - GifWriteBit
  - GifWriteChunk
  - GifWriteCode
  - GifWritePalette
  - GifWriteLzwImage
  - GifBegin
  - GifWriteFrame
  - GifEnd
  source_file: /src/lwan/src/samples/forthsalon/gif.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: GIF_TEMP_MALLOC
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/lwan/src/samples/forthsalon/gif.h
      type_or_value: malloc
    - item_type: preproc_def
      name: GIF_TEMP_FREE
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/lwan/src/samples/forthsalon/gif.h
      type_or_value: free
    - item_type: preproc_def
      name: GIF_MALLOC
      pos:
        line_end: 59
        line_start: 58
        source_file: /src/lwan/src/samples/forthsalon/gif.h
      type_or_value: malloc
    - item_type: preproc_def
      name: GIF_FREE
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/lwan/src/samples/forthsalon/gif.h
      type_or_value: free
    structs:
    - fields:
      - name: bitDepth
        type: int
      - name: r[256]
        type: uint8_t
      - name: g[256]
        type: uint8_t
      - name: b[256]
        type: uint8_t
      - name: treeSplitElt[256]
        type: uint8_t
      - name: treeSplit[256]
        type: uint8_t
      item_type: struct
      name: GifPalette
      pos:
        line_end: 81
        line_start: 68
        source_file: /src/lwan/src/samples/forthsalon/gif.h
    - fields:
      - name: chunkIndex
        type: uint32_t
      - name: chunk[256]
        type: uint8_t
      - name: bitIndex
        type: uint8_t
      - name: byte
        type: uint8_t
      - name: padding[2]
        type: uint8_t
      item_type: struct
      name: GifBitStatus
      pos:
        line_end: 567
        line_start: 558
        source_file: /src/lwan/src/samples/forthsalon/gif.h
    - fields:
      - name: m_next[256]
        type: uint16_t
      item_type: struct
      name: GifLzwNode
      pos:
        line_end: 617
        line_start: 614
        source_file: /src/lwan/src/samples/forthsalon/gif.h
    - fields:
      - name: '* f'
        type: struct lwan_strbuf
      - name: '* oldImage'
        type: uint8_t
      - name: firstFrame
        type: bool
      - name: padding[7]
        type: uint8_t
      item_type: struct
      name: GifWriter
      pos:
        line_end: 764
        line_start: 757
        source_file: /src/lwan/src/samples/forthsalon/gif.h
    typedefs: []
    union: []
- function_names:
  - close_socket
  - main
  source_file: /src/lwan/src/samples/asyncawait/main.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - new_node
  - new_trie
  - del_trie
  - write_num
  - ge_new_gif
  - put_loop
  - put_key
  - end_key
  - put_image
  - get_bbox
  - set_delay
  - ge_add_frame
  - ge_close_gif
  source_file: /src/lwan/src/samples/clock/gifenc.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: key
        type: uint16_t
      - name: '*children[]'
        type: struct Node
      item_type: struct
      name: Node
      pos:
        line_end: 30
        line_start: 27
        source_file: /src/lwan/src/samples/clock/gifenc.c
    typedefs:
    - item_type: typedef
      name: Node
      pos:
        line_end: 31
        line_start: 31
        source_file: /src/lwan/src/samples/clock/gifenc.c
      type: Node
    union: []
- function_names:
  - PAIR
  - 'OFF'
  - draw_shape_full
  - draw_shape
  - blocks_init
  - blocks_draw
  source_file: /src/lwan/src/samples/clock/blocks.c
  types:
    enum:
    - enumerators:
      - name: SHAPE_SQUARE
        value: '0'
      - name: SHAPE_S
        value: '4'
      - name: SHAPE_I
        value: '3'
      - name: SHAPE_L_REV
        value: '2'
      - name: SHAPE_L
        value: '1'
      - name: SHAPE_S_REV
        value: '5'
      - name: SHAPE_T
        value: '6'
      - name: SHAPE_MAX
      item_type: enum
      name: shape
      pos:
        line_end: 26
        line_start: 17
        source_file: /src/lwan/src/samples/clock/blocks.c
    - enumerators:
      - name: COLOR_BLACK
        value: '0'
      - name: COLOR_ORANGE
        value: '3'
      - name: COLOR_GREEN
        value: '2'
      - name: COLOR_RED
        value: '1'
      - name: COLOR_BLUE
        value: '4'
      - name: COLOR_MAGENTA
        value: '5'
      - name: COLOR_CYAN
        value: '6'
      - name: COLOR_YELLOW
        value: '11'
      - name: COLOR_WHITE
        value: '15'
      - name: COLOR_MAX
      item_type: enum
      name: color
      pos:
        line_end: 39
        line_start: 28
        source_file: /src/lwan/src/samples/clock/blocks.c
    - enumerators:
      - name: ROT_0
      - name: ROT_90
      - name: ROT_MAX
      - name: ROT_270
      - name: ROT_180
      item_type: enum
      name: rotation
      pos:
        line_end: 47
        line_start: 41
        source_file: /src/lwan/src/samples/clock/blocks.c
    preproc_defs: []
    structs:
    - fields:
      - name: shape
        type: unsigned short
      - name: x_pos
        type: unsigned short int
      - name: y_stop
        type: unsigned short int
      - name: n_rot
        type: unsigned short int
      item_type: struct
      name: fall
      pos:
        line_end: 54
        line_start: 49
        source_file: /src/lwan/src/samples/clock/blocks.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/samples/clock/blocks.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: num_to_draw
        type: int
      - name: block_index
        type: int
      - name: fall_index
        type: int
      - name: x_shift
        type: int
      item_type: struct
      name: block_state
      pos:
        line_end: 12
        line_start: 7
        source_file: /src/lwan/src/samples/clock/blocks.h
    - fields:
      - name: states[4]
        type: struct block_state
      - name: last_digits[4]
        type: int
      - name: '*gif'
        type: ge_GIF
      item_type: struct
      name: blocks
      pos:
        line_end: 18
        line_start: 14
        source_file: /src/lwan/src/samples/clock/blocks.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/samples/clock/xdaliclock.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - destroy_gif
  - my_localtime
  - LWAN_HANDLER
  - destroy_xdaliclock
  - LWAN_HANDLER
  - LWAN_HANDLER
  - LWAN_HANDLER
  - LWAN_HANDLER
  - setup_timezone
  - main
  source_file: /src/lwan/src/samples/clock/main.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TPL_STRUCT
      pos:
        line_end: 238
        line_start: 237
        source_file: /src/lwan/src/samples/clock/main.c
      type_or_value: struct index
    structs:
    - fields:
      - name: '*title'
        type: char
      - name: '*variant'
        type: char
      - name: width
        type: int
      item_type: struct
      name: index
      pos:
        line_end: 234
        line_start: 230
        source_file: /src/lwan/src/samples/clock/main.c
    typedefs: []
    union: []
- function_names:
  - rand_double
  - pong_time_update
  - pong_init_internal
  - pong_init
  - draw_pixel
  - pong_draw_net
  - pong_draw_player
  - pong_draw_ball
  - pong_draw_time
  - pong_calculate_end_point
  - clamp
  - pong_draw
  source_file: /src/lwan/src/samples/clock/pong.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: y
        type: double
      item_type: struct
      name: left
      pos:
        line_end: 63
        line_start: 61
        source_file: /src/lwan/src/samples/clock/pong.c
    typedefs: []
    union: []
- function_names:
  - get_raw_numbers
  source_file: /src/lwan/src/samples/clock/numbers.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/samples/clock/gifenc.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*buf'
        type: struct lwan_strbuf
      - name: w
        type: uint16_t
      - name: depth
        type: int
      - name: offset
        type: int
      - name: nframes
        type: int
      - name: '*frame'
        type: uint8_t
      - name: partial
        type: uint32_t
      - name: buffer[0xFF]
        type: uint8_t
      item_type: struct
      name: ge_GIF
      pos:
        line_end: 22
        line_start: 13
        source_file: /src/lwan/src/samples/clock/gifenc.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/samples/clock/pong.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: last_time
        type: time_t
      - name: time[4]
        type: char
      - name: hour
        type: int
      item_type: struct
      name: pong_time
      pos:
        line_end: 34
        line_start: 30
        source_file: /src/lwan/src/samples/clock/pong.h
    - fields:
      - name: '*gif'
        type: ge_GIF
      - name: ball_x
        type: "struct {\n        double pos;\n        double vel;\n    }"
      - name: player_left
        type: "struct {\n        double y;\n        double target_y;\n    }"
      - name: player_loss
        type: int
      - name: game_stopped
        type: int
      - name: time
        type: struct pong_time
      item_type: struct
      name: pong
      pos:
        line_end: 49
        line_start: 36
        source_file: /src/lwan/src/samples/clock/pong.h
    typedefs: []
    union: []
- function_names:
  - frame_mk
  - get_bit
  - frame_from_pixmap
  - lerp
  - frame_lerp
  - draw_horizontal_line
  - frame_render
  - xdaliclock_update
  - xdaliclock_new
  - xdaliclock_free
  - xdaliclock_get_frame_time
  source_file: /src/lwan/src/samples/clock/xdaliclock.c
  types:
    enum:
    - enumerators:
      - name: BACKGROUND
        value: '0'
      - name: FOREGROUND
        value: '3'
      item_type: enum
      name: paint_color
      pos:
        line_end: 59
        line_start: 59
        source_file: /src/lwan/src/samples/clock/xdaliclock.c
    preproc_defs:
    - item_type: preproc_def
      name: FRAMES_PER_SECOND
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/lwan/src/samples/clock/xdaliclock.c
      type_or_value: '10'
    - item_type: preproc_def
      name: MAX_SEGS_PER_LINE
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/lwan/src/samples/clock/xdaliclock.c
      type_or_value: '2'
    structs:
    - fields:
      - name: left[MAX_SEGS_PER_LINE]
        type: POS
      item_type: struct
      name: scanline
      pos:
        line_end: 41
        line_start: 39
        source_file: /src/lwan/src/samples/clock/xdaliclock.c
    - fields:
      - name: scanlines[1]
        type: struct scanline
      item_type: struct
      name: frame
      pos:
        line_end: 45
        line_start: 43
        source_file: /src/lwan/src/samples/clock/xdaliclock.c
    - fields:
      - name: '*gif_enc'
        type: ge_GIF
      - name: current_digits[8]
        type: int
      - name: target_digits[8]
        type: int
      - name: '*temp_frame'
        type: struct frame
      - name: '*clear_frame'
        type: struct frame
      - name: frame
        type: uint32_t
      item_type: struct
      name: xdaliclock
      pos:
        line_end: 57
        line_start: 47
        source_file: /src/lwan/src/samples/clock/xdaliclock.c
    typedefs: []
    union: []
- function_names:
  - FONT
  source_file: /src/lwan/src/samples/clock/numbers.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*bits'
        type: unsigned char
      - name: width
        type: POS
      item_type: struct
      name: raw_number
      pos:
        line_end: 20
        line_start: 17
        source_file: /src/lwan/src/samples/clock/numbers.h
    typedefs:
    - item_type: typedef
      name: POS
      pos:
        line_end: 15
        line_start: 15
        source_file: /src/lwan/src/samples/clock/numbers.h
      type: unsigned char
    union: []
- function_names:
  - main
  source_file: /src/lwan/src/samples/hello/main.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ADDRESS
  - net_contains_ip
  - is_reserved_ip
  - destroy_ipinfo
  - text_column_helper
  - create_ipinfo
  - TEXT_COLUMN
  - create_query_limit
  - destroy_query_limit
  - internal_query
  - is_rate_limited
  - LWAN_HANDLER
  - compile_template
  - main
  source_file: /src/lwan/src/samples/freegeoip/freegeoip.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: QUERIES_PER_HOUR
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/lwan/src/samples/freegeoip/freegeoip.c
      type_or_value: '10000'
    - item_type: preproc_def
      name: TPL_STRUCT
      pos:
        line_end: 62
        line_start: 61
        source_file: /src/lwan/src/samples/freegeoip/freegeoip.c
      type_or_value: struct ip_info
    structs:
    - fields:
      - name: base
        type: struct cache_entry
      - name: country
        type: "struct {\n        char *code;\n        char *name;\n    }"
      - name: city
        type: "struct {\n        char *name;\n        char *zip_code;\n    }"
      - name: latitude
        type: double
      - name: metro
        type: "struct {\n        char *code, *area;\n    }"
      - name: '*ip'
        type: char
      - name: '*callback'
        type: char
      item_type: struct
      name: ip_info
      pos:
        line_end: 53
        line_start: 37
        source_file: /src/lwan/src/samples/freegeoip/freegeoip.c
    - fields:
      - name: '*tpl'
        type: struct lwan_tpl
      - name: '*mime_type'
        type: char
      item_type: struct
      name: template_mime
      pos:
        line_end: 58
        line_start: 55
        source_file: /src/lwan/src/samples/freegeoip/freegeoip.c
    - fields:
      - name: ip
        type: union ip_to_octet
      - name: mask
        type: union ip_to_octet
      item_type: struct
      name: ip_net
      pos:
        line_end: 143
        line_start: 140
        source_file: /src/lwan/src/samples/freegeoip/freegeoip.c
    - fields:
      - name: base
        type: struct cache_entry
      - name: queries
        type: unsigned
      item_type: struct
      name: query_limit
      pos:
        line_end: 176
        line_start: 173
        source_file: /src/lwan/src/samples/freegeoip/freegeoip.c
    typedefs: []
    union:
    - fields:
      - name: octet[sizeof(in_addr_t)]
        type: unsigned char
      - name: ip
        type: in_addr_t
      item_type: union
      name: ip_to_octet
      pos:
        line_end: 138
        line_start: 135
        source_file: /src/lwan/src/samples/freegeoip/freegeoip.c
- function_names:
  - create_paste
  - destroy_paste
  - post_paste
  - doc
  - parse_uint32
  - main
  source_file: /src/lwan/src/samples/pastebin/main.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CACHE_FOR_HOURS
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/lwan/src/samples/pastebin/main.c
      type_or_value: '2'
    structs:
    - fields:
      - name: entry
        type: struct cache_entry
      - name: len
        type: size_t
      - name: value[]
        type: char
      item_type: struct
      name: paste
      pos:
        line_end: 39
        line_start: 35
        source_file: /src/lwan/src/samples/pastebin/main.c
    typedefs: []
    union: []
- function_names:
  - hello_world
  - main
  source_file: /src/lwan/src/samples/hello-no-meta/main.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - free_strbuf
  - unsub_chat
  - pub_depart_message
  - LWAN_PUBSUB_FOREACH_MSG
  - main
  source_file: /src/lwan/src/samples/websocket/main.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - qrcodegen_encodeText
  - qrcodegen_encodeBinary
  - appendBitsToBuffer
  - qrcodegen_encodeSegments
  - qrcodegen_encodeSegmentsAdvanced
  - addEccAndInterleave
  - getNumDataCodewords
  - getNumRawDataModules
  - reedSolomonComputeDivisor
  - reedSolomonComputeRemainder
  - reedSolomonMultiply
  - initializeFunctionModules
  - drawLightFunctionModules
  - drawFormatBits
  - getAlignmentPatternPositions
  - fillRectangle
  - drawCodewords
  - applyMask
  - getPenaltyScore
  - finderPenaltyCountPatterns
  - finderPenaltyTerminateAndCount
  - finderPenaltyAddHistory
  - qrcodegen_getSize
  - qrcodegen_getModule
  - getModuleBounded
  - setModuleBounded
  - setModuleUnbounded
  - getBit
  - qrcodegen_isNumeric
  - qrcodegen_isAlphanumeric
  - qrcodegen_calcSegmentBufferSize
  - calcSegmentBitLength
  - qrcodegen_makeBytes
  - qrcodegen_makeNumeric
  - qrcodegen_makeAlphanumeric
  - qrcodegen_makeEci
  - getTotalBits
  - numCharCountBits
  source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: testable
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
      type_or_value: static  // Keep functions private
    - item_type: preproc_def
      name: LENGTH_OVERFLOW
      pos:
        line_end: 97
        line_start: 96
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
      type_or_value: '-1'
    - item_type: preproc_def
      name: qrcodegen_REED_SOLOMON_DEGREE_MAX
      pos:
        line_end: 109
        line_start: 108
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.c
      type_or_value: 30  // Based on the table above
    structs: []
    typedefs: []
    union: []
- function_names:
  - calc_hash
  - file_cb
  - generate_qr_code_gif
  - create_site
  - destroy_site
  - base64_encode_to_value
  - main
  source_file: /src/lwan/src/samples/smolsite/main.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CACHE_FOR_MINUTES
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/lwan/src/samples/smolsite/main.c
      type_or_value: '15'
    - item_type: preproc_def
      name: TPL_STRUCT
      pos:
        line_end: 68
        line_start: 67
        source_file: /src/lwan/src/samples/smolsite/main.c
      type_or_value: struct iframe_tpl_vars
    structs:
    - fields:
      - name: data_offset
        type: ptrdiff_t
      - name: size_compressed
        type: size_t
      - name: '*mime_type'
        type: char
      - name: deflated
        type: bool
      item_type: struct
      name: file
      pos:
        line_end: 51
        line_start: 46
        source_file: /src/lwan/src/samples/smolsite/main.c
    - fields:
      - name: entry
        type: struct cache_entry
      - name: zipped
        type: struct lwan_value
      - name: '*files'
        type: struct hash
      - name: qr_code
        type: struct lwan_strbuf
      - name: has_qr_code
        type: int
      item_type: struct
      name: site
      pos:
        line_end: 59
        line_start: 53
        source_file: /src/lwan/src/samples/smolsite/main.c
    - fields:
      - name: '*digest'
        type: char
      - name: has_qr_code
        type: int
      item_type: struct
      name: iframe_tpl_vars
      pos:
        line_end: 64
        line_start: 61
        source_file: /src/lwan/src/samples/smolsite/main.c
    typedefs: []
    union: []
- function_names:
  - JZHOUR
  - JZMINUTE
  - JZSECOND
  - JZTIME
  - JZYEAR
  - JZMONTH
  - JZDAY
  - JZDATE
  source_file: /src/lwan/src/samples/smolsite/junzip.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: Z_OK
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/lwan/src/samples/smolsite/junzip.h
      type_or_value: '0'
    - item_type: preproc_def
      name: Z_ERRNO
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/lwan/src/samples/smolsite/junzip.h
      type_or_value: '-1'
    - item_type: preproc_def
      name: JZ_BUFFER_SIZE
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/lwan/src/samples/smolsite/junzip.h
      type_or_value: '65536'
    structs:
    - fields:
      - name: (*read)(JZFile *file, void *buf, size_t size)
        type: size_t
      - name: (*tell)(JZFile *file)
        type: size_t
      - name: (*seek)(JZFile *file, size_t offset, int whence)
        type: int
      - name: (*error)(JZFile *file)
        type: int
      - name: (*close)(JZFile *file)
        type: void
      - name: buffer[JZ_BUFFER_SIZE]
        type: unsigned char
      item_type: struct
      name: JZFile
      pos:
        line_end: 52
        line_start: 45
        source_file: /src/lwan/src/samples/smolsite/junzip.h
    - fields:
      - name: signature
        type: uint32_t
      - name: versionNeededToExtract
        type: uint16_t
      - name: generalPurposeBitFlag
        type: uint16_t
      - name: compressionMethod
        type: uint16_t
      - name: lastModFileTime
        type: uint16_t
      - name: lastModFileDate
        type: uint16_t
      - name: crc32
        type: uint32_t
      - name: compressedSize
        type: uint32_t
      - name: uncompressedSize
        type: uint32_t
      - name: fileNameLength
        type: uint16_t
      - name: extraFieldLength
        type: uint16_t
      item_type: struct
      name: JZLocalFileHeader
      pos:
        line_end: 71
        line_start: 59
        source_file: /src/lwan/src/samples/smolsite/junzip.h
    - fields:
      - name: signature
        type: uint32_t
      - name: versionMadeBy
        type: uint16_t
      - name: versionNeededToExtract
        type: uint16_t
      - name: generalPurposeBitFlag
        type: uint16_t
      - name: compressionMethod
        type: uint16_t
      - name: lastModFileTime
        type: uint16_t
      - name: lastModFileDate
        type: uint16_t
      - name: crc32
        type: uint32_t
      - name: compressedSize
        type: uint32_t
      - name: uncompressedSize
        type: uint32_t
      - name: fileNameLength
        type: uint16_t
      - name: extraFieldLength
        type: uint16_t
      - name: fileCommentLength
        type: uint16_t
      - name: diskNumberStart
        type: uint16_t
      - name: internalFileAttributes
        type: uint16_t
      - name: externalFileAttributes
        type: uint32_t
      - name: relativeOffsetOflocalHeader
        type: uint32_t
      item_type: struct
      name: JZGlobalFileHeader
      pos:
        line_end: 91
        line_start: 73
        source_file: /src/lwan/src/samples/smolsite/junzip.h
    - fields:
      - name: compressionMethod
        type: uint16_t
      - name: lastModFileTime
        type: uint16_t
      - name: lastModFileDate
        type: uint16_t
      - name: crc32
        type: uint32_t
      - name: compressedSize
        type: uint32_t
      - name: uncompressedSize
        type: uint32_t
      - name: offset
        type: uint32_t
      item_type: struct
      name: JZFileHeader
      pos:
        line_end: 101
        line_start: 93
        source_file: /src/lwan/src/samples/smolsite/junzip.h
    - fields:
      - name: signature
        type: uint32_t
      - name: diskNumber
        type: uint16_t
      - name: centralDirectoryDiskNumber
        type: uint16_t
      - name: numEntriesThisDisk
        type: uint16_t
      - name: numEntries
        type: uint16_t
      - name: centralDirectorySize
        type: uint32_t
      - name: centralDirectoryOffset
        type: uint32_t
      - name: zipCommentLength
        type: uint16_t
      item_type: struct
      name: JZEndRecord
      pos:
        line_end: 113
        line_start: 103
        source_file: /src/lwan/src/samples/smolsite/junzip.h
    typedefs:
    - item_type: typedef
      name: JZFile
      pos:
        line_end: 41
        line_start: 41
        source_file: /src/lwan/src/samples/smolsite/junzip.h
      type: JZFile
    - item_type: typedef
      name: "(*JZRecordCallback)(JZFile *zip, int index, JZFileHeader *header,\n        char
        *filename, void *user_data)"
      pos:
        line_end: 117
        line_start: 116
        source_file: /src/lwan/src/samples/smolsite/junzip.h
      type: int
    union: []
- function_names:
  - qrcodegen_BUFFER_LEN_FOR_VERSION
  source_file: /src/lwan/src/samples/smolsite/qrcodegen.h
  types:
    enum:
    - enumerators:
      - name: qrcodegen_Ecc_LOW
        value: '0'
      - name: qrcodegen_Ecc_MEDIUM
      - name: qrcodegen_Ecc_HIGH
      - name: qrcodegen_Ecc_QUARTILE
      item_type: enum
      name: qrcodegen_Ecc
      pos:
        line_end: 63
        line_start: 56
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.h
    - enumerators:
      - name: qrcodegen_Mask_AUTO
        value: '-1'
      - name: qrcodegen_Mask_2
      - name: qrcodegen_Mask_0
        value: '0'
      - name: qrcodegen_Mask_3
      - name: qrcodegen_Mask_1
      - name: qrcodegen_Mask_4
      - name: qrcodegen_Mask_5
      - name: qrcodegen_Mask_6
      - name: qrcodegen_Mask_7
      item_type: enum
      name: qrcodegen_Mask
      pos:
        line_end: 82
        line_start: 69
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.h
    - enumerators:
      - name: qrcodegen_Mode_NUMERIC
        value: '0x1'
      - name: qrcodegen_Mode_KANJI
        value: '0x8'
      - name: qrcodegen_Mode_ECI
        value: '0x7'
      - name: qrcodegen_Mode_ALPHANUMERIC
        value: '0x2'
      - name: qrcodegen_Mode_BYTE
        value: '0x4'
      item_type: enum
      name: qrcodegen_Mode
      pos:
        line_end: 94
        line_start: 88
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.h
    preproc_defs:
    - item_type: preproc_def
      name: qrcodegen_VERSION_MIN
      pos:
        line_end: 132
        line_start: 131
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.h
      type_or_value: 1  // The minimum version number supported in the QR Code Model
        2 standard
    - item_type: preproc_def
      name: qrcodegen_VERSION_MAX
      pos:
        line_end: 133
        line_start: 132
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.h
      type_or_value: 40  // The maximum version number supported in the QR Code Model
        2 standard
    - item_type: preproc_def
      name: qrcodegen_BUFFER_LEN_MAX
      pos:
        line_end: 144
        line_start: 143
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.h
      type_or_value: qrcodegen_BUFFER_LEN_FOR_VERSION(qrcodegen_VERSION_MAX)
    structs:
    - fields:
      - name: mode
        type: enum qrcodegen_Mode
      - name: numChars
        type: int
      - name: '*data'
        type: uint8_t
      - name: bitLength
        type: int
      item_type: struct
      name: qrcodegen_Segment
      pos:
        line_end: 125
        line_start: 108
        source_file: /src/lwan/src/samples/smolsite/qrcodegen.h
    typedefs: []
    union: []
- function_names:
  - jzReadEndRecord
  - jzReadCentralDirectory
  - jzReadLocalFileHeaderRaw
  - jzReadLocalFileHeader
  - jzReadData
  - stdio_read_file_handle_read
  - stdio_read_file_handle_tell
  - stdio_read_file_handle_seek
  - stdio_read_file_handle_error
  - stdio_read_file_handle_close
  - jzfile_from_stdio_file
  - jzfile_free
  source_file: /src/lwan/src/samples/smolsite/junzip.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: handle
        type: JZFile
      - name: '*fp'
        type: FILE
      item_type: struct
      name: StdioJZFile
      pos:
        line_end: 271
        line_start: 268
        source_file: /src/lwan/src/samples/smolsite/junzip.c
    typedefs: []
    union: []
- function_names:
  - LEX_ERROR
  - PARSER_ERROR
  - INTERNAL_ERROR
  - FOR_EACH_LEXEME
  - GENERATE_ENUM
  - DEFINE_RING_BUFFER_TYPE
  - parse_bool
  - LWAN_SELF_TEST
  - config_error
  - emit_lexeme
  - current_len
  - emit
  - next
  - ignore
  - advance_n
  - backup
  - peek
  - remaining
  - is_string
  - lex_string
  - config_from_parser
  - config_from_lexer
  - lex_streq
  - lex_multiline_string
  - is_variable
  - lex_variable_default
  - lex_variable
  - is_comment
  - lex_comment
  - lex_config
  - lex_next
  - get_constant
  - parse_key_value
  - parse_section
  - parse_section_shorthand
  - parse_section_end
  - parse_config
  - parser_next_internal
  - parse_constants
  - parser_next
  - config_open_path
  - config_init_data
  - config_open
  - config_open_for_fuzzing
  - config_close
  - config_read_line
  - find_section_end
  - config_isolate_section
  - config_skip_section
  - config_last_error
  - config_cur_line
  source_file: /src/lwan/src/lib/lwan-config.c
  types:
    enum:
    - enumerators:
      - name: FOR_EACH_LEXEME
      item_type: enum
      name: lexeme_type
      pos:
        line_end: 69
        line_start: 68
        source_file: /src/lwan/src/lib/lwan-config.c
    preproc_defs:
    - item_type: preproc_def
      name: ENV_VAR_NAME_LEN_MAX
      pos:
        line_end: 695
        line_start: 694
        source_file: /src/lwan/src/lib/lwan-config.c
      type_or_value: '64'
    structs:
    - fields:
      - name: type
        type: enum lexeme_type
      - name: value
        type: struct lwan_value
      item_type: struct
      name: lexeme
      pos:
        line_end: 78
        line_start: 75
        source_file: /src/lwan/src/lib/lwan-config.c
    - fields:
      - name: '*(*state)(struct lexer *)'
        type: void
      - name: '*start'
        type: char
      - name: buffer
        type: struct lexeme_ring_buffer
      - name: cur_line
        type: int
      item_type: struct
      name: lexer
      pos:
        line_end: 88
        line_start: 83
        source_file: /src/lwan/src/lib/lwan-config.c
    - fields:
      - name: '*(*state)(struct parser *)'
        type: void
      - name: lexer
        type: struct lexer
      - name: buffer
        type: struct lexeme_ring_buffer
      - name: items
        type: struct config_ring_buffer
      - name: strbuf
        type: struct lwan_strbuf
      item_type: struct
      name: parser
      pos:
        line_end: 96
        line_start: 90
        source_file: /src/lwan/src/lib/lwan-config.c
    - fields:
      - name: parser
        type: struct parser
      - name: '*error_message'
        type: char
      - name: '*constants'
        type: struct hash
      - name: mapped
        type: "struct {\n        void *addr;\n        size_t sz;\n    }"
      - name: opened_brackets
        type: int
      item_type: struct
      name: config
      pos:
        line_end: 107
        line_start: 98
        source_file: /src/lwan/src/lib/lwan-config.c
    - fields:
      - name: '*test'
        type: char
      - name: value
        type: int32_t
      item_type: struct
      name: "valid[] = {\n        {\"0\", 0},\n        {\"-1\", -1},\n        {\"1\",
        1},\n        {\"250\", 250},\n        {\"999999\", 999999},\n        {\"2147483647\",
        INT32_MAX},\n        {\"-2147483648\", INT32_MIN},\n    }"
      pos:
        line_end: 302
        line_start: 299
        source_file: /src/lwan/src/lib/lwan-config.c
    typedefs: []
    union: []
- function_names:
  - FOR_EACH_LEXEME
  - GENERATE_ENUM
  - GENERATE_ARRAY_ITEM
  - symtab_lookup
  - symtab_lookup_lexeme
  - symtab_push
  - symtab_pop
  - emit_lexeme
  - emit
  - next
  - remaining
  - lex_streq
  - ignore
  - backup
  - error_vlexeme
  - error_lexeme
  - lex_error
  - is_ident
  - lex_identifier
  - lex_partial
  - lex_quoted_identifier
  - lex_comment
  - lex_inside_action
  - lex_left_meta
  - lex_right_meta
  - lex_text
  - lex_next_fsm_loop
  - lex_next
  - lex_init
  - unexpected_lexeme
  - parser_push_lexeme
  - emit_chunk
  - parser_stack_top_matches
  - parser_right_meta
  - parser_end_iter
  - parser_end_var_not_empty
  - parser_slash
  - parser_iter
  - parser_negate
  - parser_identifier
  - parser_partial
  - parser_meta
  - lwan_strbuf_from_lexeme
  - parser_text
  - lwan_append_int_to_strbuf
  - lwan_tpl_int_is_empty
  - lwan_append_double_to_strbuf
  - lwan_tpl_double_is_empty
  - lwan_append_str_to_strbuf
  - escaped_index
  - lwan_append_str_escaped_to_strbuf
  - lwan_tpl_str_is_empty
  - unbake_direct_addresses
  - free_chunk
  - free_chunk_array
  - lwan_tpl_free
  - post_process_template
  - parser_init
  - parser_shutdown
  - parse_value
  - instr
  - dump_program
  - lwan_tpl_compile_value_full
  - lwan_tpl_compile_string
  - lwan_tpl_compile_file
  - bake_direct_addresses
  - apply
  - RETURN_IF_NO_CHUNK
  - DISPATCH_ACTION
  - DISPATCH_NEXT_ACTION
  - DISPATCH_ACTION_FAST
  - DISPATCH_ACTION_CHECK
  - DISPATCH_NEXT_ACTION_FAST
  - DISPATCH_NEXT_ACTION_CHECK
  - lwan_tpl_apply_with_buffer
  - lwan_tpl_apply
  - hello_lambda
  - main
  source_file: /src/lwan/src/lib/lwan-template.c
  types:
    enum:
    - enumerators:
      - name: ACTION_APPEND
      - name: ACTION_VARIABLE_STR
      - name: ACTION_VARIABLE
      - name: ACTION_VARIABLE_STR_ESCAPE
      - name: ACTION_APPEND_SMALL
      - name: ACTION_START_ITER
      - name: ACTION_END_ITER
      - name: ACTION_IF_VARIABLE_NOT_EMPTY
      - name: ACTION_END_IF_VARIABLE_NOT_EMPTY
      - name: ACTION_APPLY_TPL
      - name: ACTION_LAMBDA
      - name: ACTION_LAST
      item_type: enum
      name: action
      pos:
        line_end: 70
        line_start: 57
        source_file: /src/lwan/src/lib/lwan-template.c
    - enumerators:
      - name: FLAGS_ALL
        value: '-1'
      - name: FLAGS_LAMBDA
        value: 1 << 3
      - name: FLAGS_QUOTE
        value: 1 << 1
      - name: FLAGS_NO_FREE
        value: 1 << 2
      - name: FLAGS_NEGATE
        value: 1 << 0
      item_type: enum
      name: flags
      pos:
        line_end: 78
        line_start: 72
        source_file: /src/lwan/src/lib/lwan-template.c
    - enumerators:
      - name: FOR_EACH_LEXEME
      item_type: enum
      name: lexeme_type
      pos:
        line_end: 89
        line_start: 88
        source_file: /src/lwan/src/lib/lwan-template.c
    preproc_defs:
    - item_type: preproc_def
      name: LEXEME_MAX_LEN
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/lwan/src/lib/lwan-template.c
      type_or_value: '64'
    - item_type: preproc_def
      name: TPL_STRUCT
      pos:
        line_end: 1766
        line_start: 1765
        source_file: /src/lwan/src/lib/lwan-template.c
      type_or_value: struct test_struct
    structs:
    - fields:
      - name: '*data'
        type: void
      - name: flags
        type: enum flags
      item_type: struct
      name: chunk
      pos:
        line_end: 110
        line_start: 100
        source_file: /src/lwan/src/lib/lwan-template.c
    - fields:
      - name: chunks
        type: struct chunk_array
      - name: minimum_size
        type: size_t
      - name: '*const *dispatch_table'
        type: void
      item_type: struct
      name: lwan_tpl
      pos:
        line_end: 118
        line_start: 114
        source_file: /src/lwan/src/lib/lwan-template.c
    - fields:
      - name: '*hash'
        type: struct hash
      - name: '*next'
        type: struct symtab
      item_type: struct
      name: symtab
      pos:
        line_end: 123
        line_start: 120
        source_file: /src/lwan/src/lib/lwan-template.c
    - fields:
      - name: type
        type: enum lexeme_type
      - name: value
        type: "struct {\n        const char *value;\n        size_t len;\n    }"
      item_type: struct
      name: lexeme
      pos:
        line_end: 131
        line_start: 125
        source_file: /src/lwan/src/lib/lwan-template.c
    - fields:
      - name: '*(*state)(struct lexer *)'
        type: void
      - name: '*start'
        type: char
      - name: ring_buffer
        type: struct lexeme_ring_buffer
      item_type: struct
      name: lexer
      pos:
        line_end: 140
        line_start: 135
        source_file: /src/lwan/src/lib/lwan-template.c
    - fields:
      - name: '*tpl'
        type: struct lwan_tpl
      - name: '*descriptor'
        type: struct lwan_var_descriptor
      - name: '*symtab'
        type: struct symtab
      - name: lexer
        type: struct lexer
      - name: flags
        type: enum flags
      - name: stack
        type: struct list_head
      - name: chunks
        type: struct chunk_array
      - name: template_flags
        type: enum lwan_tpl_flag
      item_type: struct
      name: parser
      pos:
        line_end: 151
        line_start: 142
        source_file: /src/lwan/src/lib/lwan-template.c
    - fields:
      - name: stack
        type: struct list_node
      - name: lexeme
        type: struct lexeme
      item_type: struct
      name: stacked_lexeme
      pos:
        line_end: 156
        line_start: 153
        source_file: /src/lwan/src/lib/lwan-template.c
    - fields:
      - name: '*chunk'
        type: struct chunk
      - name: '*descriptor'
        type: struct lwan_var_descriptor
      item_type: struct
      name: chunk_descriptor
      pos:
        line_end: 161
        line_start: 158
        source_file: /src/lwan/src/lib/lwan-template.c
    - fields:
      - name: some_int
        type: int
      - name: '*a_string'
        type: char
      item_type: struct
      name: test_struct
      pos:
        line_end: 1747
        line_start: 1744
        source_file: /src/lwan/src/lib/lwan-template.c
    typedefs: []
    union: []
- function_names:
  - check_type
  - check_types_match
  - container_of
  - container_of_var
  - container_of_var
  - container_off
  - container_off_var
  - list_poison
  - list_debug
  - list_debug_node
  - list_debug
  - list_debug_node
  - list_head_init
  - list_add
  - list_add_tail
  - list_empty
  - list_del
  - list_del_from
  - list_entry
  - list_top
  - list_top_
  - list_pop
  - list_pop_
  - list_tail
  - list_tail_
  - list_for_each
  - list_for_each_rev
  - list_for_each_safe
  - list_append_list
  - list_prepend_list
  - list_for_each_off
  - list_for_each_safe_off
  - list_entry_off
  - list_head_off
  - list_tail_off
  - list_add_off
  - list_del_off
  - list_del_from_off
  - list_node_to_off_
  - list_node_from_off_
  - list_off_
  - list_off_var_
  source_file: /src/lwan/src/lib/list.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*next'
        type: struct list_node
      item_type: struct
      name: list_node
      pos:
        line_end: 193
        line_start: 190
        source_file: /src/lwan/src/lib/list.h
    - fields:
      - name: n
        type: struct list_node
      item_type: struct
      name: list_head
      pos:
        line_end: 210
        line_start: 207
        source_file: /src/lwan/src/lib/list.h
    typedefs: []
    union: []
- function_names:
  - DECLARE_LOG_PROTO
  - lwan_log_debug
  - DECLARE_LOG_PROTO
  - lwan_log_info
  - lwan_log_warning
  - lwan_log_error
  - lwan_log_perror
  - lwan_log_critical
  - lwan_log_critical_perror
  - lwan_log_debug
  source_file: /src/lwan/src/lib/lwan-log.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - lwan_writev_fd
  - lwan_readv_fd
  - lwan_send_fd
  - lwan_recv_fd
  - lwan_sendfile_fd
  - lwan_sendfile_fd
  - try_pread_file
  - lwan_sendfile_fd
  source_file: /src/lwan/src/lib/lwan-io-wrappers.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - LWAN_LUA_METHOD
  source_file: /src/lwan/src/lib/lwan-lua.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: (*func)()
        type: int
      item_type: struct
      name: lwan_lua_method_info
      pos:
        line_end: 28
        line_start: 25
        source_file: /src/lwan/src/lib/lwan-lua.h
    typedefs: []
    union: []
- function_names:
  - LWAN_PUBSUB_FOREACH_MSG
  source_file: /src/lwan/src/lib/lwan-pubsub.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - redirect_handle_request
  - redirect_create
  - redirect_destroy
  - parse_http_code
  - redirect_create_from_hash
  source_file: /src/lwan/src/lib/lwan-mod-redirect.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*to'
        type: char
      - name: code
        type: enum lwan_http_status
      item_type: struct
      name: redirect_priv
      pos:
        line_end: 29
        line_start: 26
        source_file: /src/lwan/src/lib/lwan-mod-redirect.c
    typedefs: []
    union: []
- function_names:
  - LWAN_LAZY_GLOBAL
  - LWAN_LAZY_THREAD_LOCAL
  - LWAN_LAZY_THREAD_LOCAL
  - LWAN_CONSTRUCTOR
  - LWAN_CONCAT
  - LWAN_TMP_ID_DETAIL
  - LWAN_MIN_MAX_DETAIL
  - LWAN_MIN
  - LWAN_MAX
  - lwan_nextpow2
  - LWAN_NO_DISCARD
  - lwan_always_bzero
  - SECTION_START
  - SECTION_END
  - SECTION_START
  - SECTION_END
  - SECTION_START_SYMBOL
  - SECTION_STOP_SYMBOL
  - LWAN_SECTION_FOREACH
  - lwan_aligned_alloc
  - lwan_calculate_n_packets
  - lwan_connection_get_fd
  source_file: /src/lwan/src/lib/lwan-private.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: N_HEADER_START
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/lwan/src/lib/lwan-private.h
      type_or_value: '64'
    - item_type: preproc_def
      name: DEFAULT_BUFFER_SIZE
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/lwan/src/lib/lwan-private.h
      type_or_value: '4096'
    - item_type: preproc_def
      name: DEFAULT_HEADERS_SIZE
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/lwan/src/lib/lwan-private.h
      type_or_value: '4096'
    - item_type: preproc_def
      name: LWAN_TMP_ID
      pos:
        line_end: 140
        line_start: 139
        source_file: /src/lwan/src/lib/lwan-private.h
      type_or_value: LWAN_TMP_ID_DETAIL(__COUNTER__)
    structs:
    - fields:
      - name: (*func)(struct lwan *)
        type: void
      - name: prio
        type: int
      item_type: struct
      name: lwan_constructor_callback_info
      pos:
        line_end: 71
        line_start: 68
        source_file: /src/lwan/src/lib/lwan-private.h
    - fields:
      - name: '*buffer'
        type: struct lwan_value
      - name: '*next_request'
        type: char
      - name: accept_encoding
        type: struct lwan_value
      - name: query_string
        type: struct lwan_value
      - name: body_data
        type: struct lwan_value
      - name: content_type
        type: struct lwan_value
      - name: content_length
        type: struct lwan_value
      - name: connection
        type: struct lwan_value
      - name: host
        type: struct lwan_value
      - name: cookies
        type: struct lwan_key_value_array
      - name: '**header_start'
        type: char
      - name: n_header_start
        type: size_t
      - name: if_modified_since
        type: "struct { /* If-Modified-Since: */\n        struct lwan_value raw;\n
          \       time_t parsed;\n    }"
      - name: range
        type: "struct { /* Range: */\n        struct lwan_value raw;\n        off_t
          from, to;\n    }"
      - name: request_id
        type: uint64_t
      - name: error_when_time
        type: time_t
      - name: error_when_n_packets
        type: int
      - name: urls_rewritten
        type: int
      item_type: struct
      name: lwan_request_parser_helper
      pos:
        line_end: 121
        line_start: 85
        source_file: /src/lwan/src/lib/lwan-private.h
    - fields:
      - name: '*lwan'
        type: struct lwan
      - name: date
        type: "struct {\n        char date[30];\n        char expires[30];\n    }"
      - name: epoll_fd
        type: int
      - name: '*wheel'
        type: struct timeouts
      - name: listen_fd
        type: int
      - name: tls_listen_fd
        type: int
      - name: cpu
        type: unsigned int
      - name: self
        type: pthread_t
      item_type: struct
      name: lwan_thread
      pos:
        line_end: 135
        line_start: 123
        source_file: /src/lwan/src/lib/lwan-private.h
    - fields:
      - name: config
        type: mbedtls_ssl_config
      - name: server_cert
        type: mbedtls_x509_crt
      - name: server_key
        type: mbedtls_pk_context
      - name: entropy
        type: mbedtls_entropy_context
      - name: ctr_drbg
        type: mbedtls_ctr_drbg_context
      item_type: struct
      name: lwan_tls_context
      pos:
        line_end: 232
        line_start: 224
        source_file: /src/lwan/src/lib/lwan-private.h
    typedefs: []
    union: []
- function_names:
  - response_handle_request
  - response_create
  - response_create_from_hash
  source_file: /src/lwan/src/lib/lwan-mod-response.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - lwan_writev
  - lwan_send
  - lwan_sendfile
  - lwan_recv
  - lwan_readv
  source_file: /src/lwan/src/lib/lwan-io-wrappers.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/lib/lwan-cache.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: entries
        type: struct list_node
      - name: '*key'
        type: char
      - name: refs
        type: int
      - name: flags
        type: unsigned
      - name: time_to_expire
        type: time_t
      item_type: struct
      name: cache_entry
      pos:
        line_end: 32
        line_start: 26
        source_file: /src/lwan/src/lib/lwan-cache.h
    typedefs:
    - item_type: typedef
      name: "*(*cache_create_entry_cb)(const void *key,\n                                                     void
        *cache_ctx,\n                                                     void *create_ctx)"
      pos:
        line_end: 36
        line_start: 34
        source_file: /src/lwan/src/lib/lwan-cache.h
      type: cache_entry
    - item_type: typedef
      name: "(*cache_destroy_entry_cb)(struct cache_entry *entry,\n                                       void
        *cache_ctx)"
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/lwan/src/lib/lwan-cache.h
      type: void
    - item_type: typedef
      name: '*(*hash_create_func_cb)(void (*)(void *), void (*)(void *))'
      pos:
        line_end: 39
        line_start: 39
        source_file: /src/lwan/src/lib/lwan-cache.h
      type: hash
    union: []
- function_names:
  - FASTCGI
  source_file: /src/lwan/src/lib/lwan-mod-fastcgi.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*address'
        type: char
      - name: '*script_path'
        type: char
      - name: '*default_index'
        type: char
      item_type: struct
      name: lwan_fastcgi_settings
      pos:
        line_end: 32
        line_start: 28
        source_file: /src/lwan/src/lib/lwan-mod-fastcgi.h
    typedefs: []
    union: []
- function_names:
  - get_user_uid_gid
  - switch_to_user
  - lwan_landlock_create_ruleset
  - lwan_landlock_add_rule
  - lwan_landlock_restrict_self
  - LWAN_LAZY_GLOBAL
  - get_landlock
  - lwan_straitjacket_allow_path
  - lwan_straitjacket_allow_dirfd_ro
  - lwan_straitjacket_allow_dirfd_rw
  - lwan_straitjacket_allow_net
  - lwan_straitjacket_allow_bind
  - lwan_straitjacket_allow_connect
  - lwan_straitjacket_allow_dir_path_ro
  - lwan_straitjacket_allow_dir_path_rw
  - add_base_rules
  - lwan_landlock_enforce
  - lwan_landlock_available
  - lwan_landlock_available
  - lwan_landlock_enforce
  - lwan_straitjacket_allow_bind
  - lwan_straitjacket_allow_connect
  - lwan_straitjacket_allow_dirfd_ro
  - lwan_straitjacket_allow_dirfd_rw
  - lwan_straitjacket_allow_dir_path_ro
  - lwan_straitjacket_allow_dir_path_rw
  - abort_on_open_directories
  - abort_on_open_directories
  - lookup_user
  - enforce_chroot
  - lwan_straitjacket_enforce
  - lwan_straitjacket_enforce_from_config
  source_file: /src/lwan/src/lib/lwan-straitjacket.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: attr
        type: struct landlock_ruleset_attr
      - name: restrict_flags
        type: uint32_t
      - name: ruleset_fd
        type: int
      item_type: struct
      name: lwan_landlock
      pos:
        line_end: 121
        line_start: 117
        source_file: /src/lwan/src/lib/lwan-straitjacket.c
    typedefs: []
    union: []
- function_names:
  - Z
  - Z
  - MINCORE_VEC_LEN
  - is_world_readable
  - directory_list_generator
  - is_compression_worthy
  - LWAN_LAZY_THREAD_LOCAL
  - deflate_value
  - deflate_value
  - brotli_value
  - zstd_value
  - try_readahead
  - try_open_compressed
  - mmap_fd
  - mmap_init
  - sendfile_init
  - get_rel_path
  - dirlist_find_readme
  - dirlist_init
  - redir_init
  - get_funcs
  - create_cache_entry_from_funcs
  - destroy_cache_entry
  - create_cache_entry
  - mmap_free
  - sendfile_free
  - dirlist_free
  - redir_free
  - lwan_get_real_root_path
  - serve_files_create
  - serve_files_create_from_hash
  - serve_files_destroy
  - client_has_fresh_content
  - prepare_headers
  - compute_range
  - accepts_encoding
  - sendfile_serve
  - serve_buffer
  - serve_value
  - serve_value_ok
  - mmap_best_data
  - mmap_serve
  - dirlist_serve
  - STRING_SWITCH
  - redir_serve
  - serve_files_handle_request
  source_file: /src/lwan/src/lib/lwan-mod-serve-files.c
  types:
    enum:
    - enumerators:
      - name: SERVE_FILES_SERVE_PRECOMPRESSED
        value: 1 << 0
      - name: SERVE_FILES_AUTO_INDEX
        value: 1 << 1
      - name: SERVE_FILES_AUTO_INDEX_README
        value: 1 << 2
      item_type: enum
      name: serve_files_priv_flags
      pos:
        line_end: 90
        line_start: 86
        source_file: /src/lwan/src/lib/lwan-mod-serve-files.c
    preproc_defs:
    - item_type: preproc_def
      name: MMAP_SIZE_THRESHOLD
      pos:
        line_end: 62
        line_start: 61
        source_file: /src/lwan/src/lib/lwan-mod-serve-files.c
      type_or_value: '16384'
    - item_type: preproc_def
      name: MINCORE_CALL_THRESHOLD
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/lwan/src/lib/lwan-mod-serve-files.c
      type_or_value: '10'
    - item_type: preproc_def
      name: TPL_STRUCT
      pos:
        line_end: 249
        line_start: 248
        source_file: /src/lwan/src/lib/lwan-mod-serve-files.c
      type_or_value: struct file_list
    structs:
    - fields:
      - name: '*cache'
        type: struct cache
      - name: '*root_path'
        type: char
      - name: root_path_len
        type: size_t
      - name: root_fd
        type: int
      - name: flags
        type: enum serve_files_priv_flags
      - name: '*index_html'
        type: char
      - name: '*prefix'
        type: char
      - name: '*directory_list_tpl'
        type: struct lwan_tpl
      - name: read_ahead
        type: size_t
      item_type: struct
      name: serve_files_priv
      pos:
        line_end: 107
        line_start: 92
        source_file: /src/lwan/src/lib/lwan-mod-serve-files.c
    - fields:
      - name: (*serve)(struct lwan_request *request, void *data)
        type: enum lwan_http_status
      - name: "(*init)(struct file_cache_entry *ce,\n                 struct serve_files_priv
          *priv,\n                 const char *full_path,\n                 struct
          stat *st)"
        type: bool
      - name: (*free)(struct file_cache_entry *ce)
        type: void
      item_type: struct
      name: cache_funcs
      pos:
        line_end: 116
        line_start: 109
        source_file: /src/lwan/src/lib/lwan-mod-serve-files.c
    - fields:
      - name: uncompressed
        type: struct lwan_value
      - name: gzip
        type: struct lwan_value
      - name: deflated
        type: struct lwan_value
      - name: mincore_call_threshold
        type: unsigned int
      item_type: struct
      name: mmap_cache_data
      pos:
        line_end: 129
        line_start: 118
        source_file: /src/lwan/src/lib/lwan-mod-serve-files.c
    - fields:
      - name: compressed
        type: "struct {\n        int fd;\n        size_t size;\n    }"
      item_type: struct
      name: sendfile_cache_data
      pos:
        line_end: 136
        line_start: 131
        source_file: /src/lwan/src/lib/lwan-mod-serve-files.c
    - fields:
      - name: rendered
        type: struct lwan_strbuf
      - name: deflated
        type: struct lwan_value
      item_type: struct
      name: dir_list_cache_data
      pos:
        line_end: 144
        line_start: 138
        source_file: /src/lwan/src/lib/lwan-mod-serve-files.c
    - fields:
      - name: '*redir_to'
        type: char
      item_type: struct
      name: redir_cache_data
      pos:
        line_end: 148
        line_start: 146
        source_file: /src/lwan/src/lib/lwan-mod-serve-files.c
    - fields:
      - name: base
        type: struct cache_entry
      - name: last_modified
        type: "struct {\n        char string[30];\n        time_t integer;\n    }"
      - name: '*mime_type'
        type: char
      - name: '*funcs'
        type: struct cache_funcs
      item_type: struct
      name: file_cache_entry
      pos:
        line_end: 167
        line_start: 150
        source_file: /src/lwan/src/lib/lwan-mod-serve-files.c
    - fields:
      - name: '*full_path'
        type: char
      - name: '*rel_path'
        type: char
      - name: '*readme'
        type: char
      - name: file_list
        type: "struct {\n        coro_function_t generator;\n\n        const char
          *icon;\n        const char *icon_alt;\n        const char *name;\n        const
          char *type;\n\n        int size;\n        const char *unit;\n\n        const
          char *zebra_class;\n        const char *slash_if_dir;\n    }"
      item_type: struct
      name: file_list
      pos:
        line_end: 187
        line_start: 169
        source_file: /src/lwan/src/lib/lwan-mod-serve-files.c
    typedefs: []
    union: []
- function_names:
  - lwan_strbuf_free_defer
  - graceful_close
  - lwan_random_seed_prng_for_thread
  - lwan_random_uint64
  - lwan_random_seed_prng_for_thread
  - lwan_random_uint64
  - lwan_request_get_id
  - lwan_setup_tls_keys
  - lwan_log_mbedtls_error
  - lwan_setup_tls_free_ssl_context
  - lwan_mbedtls_send
  - flush_pending_output
  - lwan_mbedtls_recv
  - lwan_setup_tls
  - send_buffer_without_coro
  - send_string_without_coro
  - send_last_response_without_coro
  - process_request_coro
  - EPOLL_EVENTS
  - LWAN_EVENTS
  - conn_flags_to_epoll_events
  - update_epoll_flags
  - unasync_await_conn
  - prepare_await
  - clear_awaitv_flags
  - prepare_awaitv
  - lwan_request_awaitv_any
  - lwan_request_awaitv_all
  - async_await_fd
  - lwan_request_await_read
  - lwan_request_await_write
  - lwan_request_await_read_write
  - async_await_fd_timeout
  - lwan_request_await_read_timeout
  - lwan_request_await_write_timeout
  - lwan_request_await_read_write_timeout
  - resume_coro
  - update_date_cache
  - spawn_coro
  - process_pending_timers
  - turn_timer_wheel
  - accept_waiting_clients
  - create_listen_socket
  - thread_io_loop
  - create_thread
  - read_cpu_topology
  - siblings_to_schedtbl
  - topology_to_schedtbl
  - adjust_thread_affinity
  - is_tls_ulp_supported
  - lwan_init_tls
  - lwan_thread_init
  - lwan_thread_shutdown
  source_file: /src/lwan/src/lib/lwan-thread.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: fd
        type: int
      - name: last_was_send
        type: bool
      item_type: struct
      name: lwan_mbedtls_handshake_ctx
      pos:
        line_end: 233
        line_start: 230
        source_file: /src/lwan/src/lib/lwan-thread.c
    - fields:
      - name: num_awaiting
        type: unsigned int
      - name: request_conn_yield
        type: enum lwan_connection_coro_yield
      item_type: struct
      name: awaitv_state
      pos:
        line_end: 724
        line_start: 721
        source_file: /src/lwan/src/lib/lwan-thread.c
    typedefs: []
    union: []
- function_names:
  - lwan_http_authorize_urlmap
  source_file: /src/lwan/src/lib/lwan-http-authorize.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/lib/realpathat.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - hash_iter
  - HASH_FOREACH_IMPL
  - HASH_FOREACH
  - fnv1a_64
  - fnv1a_32
  source_file: /src/lwan/src/lib/hash.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*ht'
        type: struct hash
      - name: slot
        type: uint32_t
      item_type: struct
      name: hash_iter
      pos:
        line_end: 12
        line_start: 9
        source_file: /src/lwan/src/lib/hash.h
    typedefs: []
    union: []
- function_names:
  - module_redirect_to
  - module_rewrite_as
  - parse_int_len
  - expand_string
  - expand
  - lua_close_defer
  - expand_lua
  - condition_matches
  - rewrite_handle_request
  - rewrite_create
  - rewrite_destroy
  - rewrite_create_from_hash
  - parse_condition_key_value
  - parse_condition_stat
  - parse_condition_accept_encoding
  - parse_condition_backref
  - get_method_from_string
  - GENERATE_CMP
  - parse_condition
  - rewrite_parse_conf_pattern
  - rewrite_parse_conf
  source_file: /src/lwan/src/lib/lwan-mod-rewrite.c
  types:
    enum:
    - enumerators:
      - name: PATTERN_EXPAND_LUA
        value: 1 << 3
      - name: PATTERN_COND_STAT
        value: 1 << 6
      - name: PATTERN_COND_LUA
        value: 1 << 10
      - name: PATTERN_COND_HTTP10
        value: 1 << 14
      - name: PATTERN_COND_MASK
        value: "PATTERN_COND_COOKIE | PATTERN_COND_ENV_VAR |\n                        PATTERN_COND_STAT
          | PATTERN_COND_QUERY_VAR |\n                        PATTERN_COND_POST_VAR
          | PATTERN_COND_HEADER |\n                        PATTERN_COND_LUA | PATTERN_COND_METHOD
          |\n                        PATTERN_COND_ACCEPT_ENCODING |\n                        PATTERN_COND_PROXIED
          | PATTERN_COND_HTTP10 |\n                        PATTERN_COND_HAS_QUERY_STRING
          |\n                        PATTERN_COND_HTTPS | PATTERN_COND_BACKREF"
      - name: PATTERN_COND_STAT__HAS_IS_DIR
        value: 1 << 19
      - name: PATTERN_COND_STAT__DIR_CHECK
        value: PATTERN_COND_STAT__HAS_IS_DIR | PATTERN_COND_STAT__IS_DIR
      - name: PATTERN_HANDLE_REWRITE
        value: 1 << 0
      - name: PATTERN_HANDLE_REDIRECT
        value: 1 << 1
      - name: PATTERN_EXPAND_MASK
        value: PATTERN_EXPAND_LWAN | PATTERN_EXPAND_LUA
      - name: PATTERN_COND_QUERY_VAR
        value: 1 << 7
      - name: PATTERN_COND_HAS_QUERY_STRING
        value: 1 << 15
      - name: PATTERN_COND_METHOD
        value: 1 << 11
      - name: PATTERN_COND_STAT__IS_FILE
        value: 1 << 20
      - name: PATTERN_COND_HTTPS__IS_HTTPS
        value: 1 << 22
      - name: PATTERN_HANDLE_MASK
        value: PATTERN_HANDLE_REWRITE | PATTERN_HANDLE_REDIRECT
      - name: PATTERN_COND_COOKIE
        value: 1 << 4
      - name: PATTERN_COND_ACCEPT_ENCODING
        value: 1 << 12
      - name: PATTERN_COND_POST_VAR
        value: 1 << 8
      - name: PATTERN_COND_HTTPS
        value: 1 << 16
      - name: PATTERN_COND_STAT__IS_DIR
        value: 1 << 21
      - name: PATTERN_EXPAND_LWAN
        value: 1 << 2
      - name: PATTERN_COND_ENV_VAR
        value: 1 << 5
      - name: PATTERN_COND_HEADER
        value: 1 << 9
      - name: PATTERN_COND_PROXIED
        value: 1 << 13
      - name: PATTERN_COND_BACKREF
        value: 1 << 17
      - name: PATTERN_COND_STAT__HAS_IS_FILE
        value: 1 << 18
      - name: PATTERN_COND_STAT__FILE_CHECK
        value: PATTERN_COND_STAT__HAS_IS_FILE | PATTERN_COND_STAT__IS_FILE
      item_type: enum
      name: pattern_flag
      pos:
        line_end: 85
        line_start: 42
        source_file: /src/lwan/src/lib/lwan-mod-rewrite.c
    preproc_defs:
    - item_type: preproc_def
      name: MAX_INT_DIGITS
      pos:
        line_end: 151
        line_start: 150
        source_file: /src/lwan/src/lib/lwan-mod-rewrite.c
      type_or_value: (3 * sizeof(int))
    structs:
    - fields:
      - name: '*pattern'
        type: char
      - name: '*expand_pattern'
        type: char
      - name: condition
        type: "struct {\n        struct lwan_key_value cookie;\n        struct lwan_key_value
          env_var;\n        struct lwan_key_value query_var;\n        struct lwan_key_value
          post_var;\n        struct lwan_key_value header;\n        struct {\n            char
          *path;\n        } stat;\n        struct {\n            char *script;\n        }
          lua;\n        struct {\n            int index;\n            char *str;\n
          \       } backref;\n        enum lwan_request_flags request_flags;\n        /*
          FIXME: Use pahole to find alignment holes? */\n    }"
      - name: flags
        type: enum pattern_flag
      item_type: struct
      name: pattern
      pos:
        line_end: 110
        line_start: 87
        source_file: /src/lwan/src/lib/lwan-mod-rewrite.c
    - fields:
      - name: patterns
        type: struct pattern_array
      item_type: struct
      name: private_data
      pos:
        line_end: 116
        line_start: 114
        source_file: /src/lwan/src/lib/lwan-mod-rewrite.c
    typedefs: []
    union: []
- function_names:
  - lwan_readahead_shutdown
  - lwan_readahead_queue
  - lwan_madvise_queue
  - lwan_readahead_loop
  - lwan_readahead_init
  source_file: /src/lwan/src/lib/lwan-readahead.c
  types:
    enum:
    - enumerators:
      - name: READAHEAD
      - name: SHUTDOWN
      - name: MADVISE
      item_type: enum
      name: readahead_cmd
      pos:
        line_end: 40
        line_start: 36
        source_file: /src/lwan/src/lib/lwan-readahead.c
    preproc_defs:
    - item_type: preproc_def
      name: PIPE_DIRECT_FLAG
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/lwan/src/lib/lwan-readahead.c
      type_or_value: O_DIRECT
    - item_type: preproc_def
      name: PIPE_DIRECT_FLAG
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/lwan/src/lib/lwan-readahead.c
      type_or_value: '0'
    structs:
    - fields:
      - name: cmd
        type: enum readahead_cmd
      item_type: struct
      name: lwan_readahead_cmd
      pos:
        line_end: 55
        line_start: 42
        source_file: /src/lwan/src/lib/lwan-readahead.c
    typedefs: []
    union: []
- function_names:
  - free_node_noop
  - lwan_trie_init
  - find_leaf_with_key
  - GET_NODE
  - arena_strdup
  - lwan_trie_add
  - lookup_node
  - lwan_trie_lookup_prefix
  - lwan_trie_node_destroy
  - lwan_trie_destroy
  source_file: /src/lwan/src/lib/lwan-trie.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*next[8]'
        type: struct lwan_trie_node
      - name: '*leaf'
        type: struct lwan_trie_leaf
      item_type: struct
      name: lwan_trie_node
      pos:
        line_end: 28
        line_start: 25
        source_file: /src/lwan/src/lib/lwan-trie.c
    - fields:
      - name: '*key'
        type: char
      - name: '*data'
        type: void
      - name: '*next'
        type: struct lwan_trie_leaf
      item_type: struct
      name: lwan_trie_leaf
      pos:
        line_end: 34
        line_start: 30
        source_file: /src/lwan/src/lib/lwan-trie.c
    typedefs: []
    union: []
- function_names:
  - lwan_lua_get_request_from_userdata
  - LWAN_LUA_METHOD
  - LWAN_LUA_METHOD
  - LWAN_LUA_METHOD
  - LWAN_LUA_METHOD
  - LWAN_LUA_METHOD
  - LWAN_LUA_METHOD
  - request_param_getter
  - LWAN_LUA_METHOD
  - LWAN_LUA_METHOD
  - LWAN_LUA_METHOD
  - LWAN_LUA_METHOD
  - LWAN_LUA_METHOD
  - LWAN_LUA_METHOD
  - LWAN_LUA_METHOD
  - LWAN_LUA_METHOD
  - LWAN_LUA_METHOD
  - LWAN_LUA_METHOD
  - LWAN_LUA_METHOD
  - LWAN_LUA_METHOD
  - LWAN_LUA_METHOD
  - LWAN_LUA_METHOD
  - LWAN_LUA_METHOD
  - append_key_value
  - LWAN_LUA_METHOD
  - LWAN_LUA_METHOD
  - LWAN_LUA_METHOD
  - LWAN_LUA_METHOD
  - FOR_EACH_LOG_FUNCTION
  - IMPLEMENT_FUNCTION
  - luaopen_log
  - LOG_FUNCTION
  - LWAN_LAZY_GLOBAL
  - LWAN_SECTION_FOREACH
  - lwan_lua_state_last_error
  - lwan_lua_create_state
  - lwan_lua_state_push_request
  source_file: /src/lwan/src/lib/lwan-lua.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: luaL_reg
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/lwan/src/lib/lwan-lua.c
      type_or_value: luaL_Reg
    structs: []
    typedefs: []
    union: []
- function_names:
  - LWAN_SELF_TEST
  - ASM_SYMBOL
  - ASM_SYMBOL
  - ASM_ROUTINE
  - coro_swapcontext
  - coro_entry_point
  - coro_deferred_run
  - coro_deferred_get_generation
  - coro_reset
  - coro_new
  - coro_resume
  - coro_resume_value
  - coro_yield
  - coro_free
  - disarmed_defer
  - coro_defer_disarm_internal
  - coro_defer_disarm
  - coro_defer_fire_and_disarm
  - coro_deferred::coro_defer
  - coro_deferred::coro_defer2
  - coro_malloc_full
  - coro_malloc
  - coro_strndup
  - coro_strdup
  - coro_printf
  - coro_memdup
  source_file: /src/lwan/src/lib/lwan-coro.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SIGSTKSZ
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/lwan/src/lib/lwan-coro.c
      type_or_value: '16384'
    - item_type: preproc_def
      name: MIN_CORO_STACK_SIZE
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/lwan/src/lib/lwan-coro.c
      type_or_value: ((size_t)(8 * SIGSTKSZ))
    - item_type: preproc_def
      name: MIN_CORO_STACK_SIZE
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/lwan/src/lib/lwan-coro.c
      type_or_value: ((size_t)(4 * SIGSTKSZ))
    - item_type: preproc_def
      name: CORO_STACK_SIZE
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/lwan/src/lib/lwan-coro.c
      type_or_value: ((MIN_CORO_STACK_SIZE + (size_t)PAGE_SIZE) & ~((size_t)PAGE_SIZE))
    - item_type: preproc_def
      name: STACK_PTR
      pos:
        line_end: 275
        line_start: 274
        source_file: /src/lwan/src/lib/lwan-coro.c
      type_or_value: '9'
    - item_type: preproc_def
      name: STACK_PTR
      pos:
        line_end: 284
        line_start: 283
        source_file: /src/lwan/src/lib/lwan-coro.c
      type_or_value: '4'
    structs:
    - fields:
      - name: has_two_args
        type: bool
      item_type: struct
      name: coro_defer
      pos:
        line_end: 88
        line_start: 75
        source_file: /src/lwan/src/lib/lwan-coro.c
    - fields:
      - name: '*switcher'
        type: coro_context
      - name: context
        type: coro_context
      - name: defer
        type: struct coro_defer_array
      - name: yield_value
        type: int64_t
      - name: arena
        type: struct arena
      item_type: struct
      name: coro
      pos:
        line_end: 110
        line_start: 92
        source_file: /src/lwan/src/lib/lwan-coro.c
    typedefs:
    - item_type: typedef
      name: (*defer1_func)(void *data)
      pos:
        line_end: 72
        line_start: 72
        source_file: /src/lwan/src/lib/lwan-coro.c
      type: void
    - item_type: typedef
      name: (*defer2_func)(void *data1, void *data2)
      pos:
        line_end: 73
        line_start: 73
        source_file: /src/lwan/src/lib/lwan-coro.c
      type: void
    union: []
- function_names:
  - list_poison_node
  - is_poisoned
  - corrupt
  - list_check_node
  - list_check
  source_file: /src/lwan/src/lib/list.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - DEFINE_RING_BUFFER_TYPE
  - lwan_pubsub_queue_put
  - lwan_pubsub_queue_get
  - lwan_pubsub_new_topic
  - lwan_pubsub_free_topic
  - lwan_pubsub_msg_done
  - lwan_pubsub_publish_value
  - my_memdup
  - lwan_pubsub_publish
  - lwan_pubsub_publishf
  - lwan_pubsub_subscribe
  - lwan_pubsub_consume
  - lwan_pubsub_unsubscribe_internal
  - lwan_pubsub_unsubscribe
  - lwan_pubsub_msg_value
  - lwan_pubsub_get_notification_fd
  source_file: /src/lwan/src/lib/lwan-pubsub.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: subscribers
        type: struct list_head
      - name: lock
        type: pthread_rwlock_t
      item_type: struct
      name: lwan_pubsub_topic
      pos:
        line_end: 39
        line_start: 36
        source_file: /src/lwan/src/lib/lwan-pubsub.c
    - fields:
      - name: value
        type: struct lwan_value
      - name: refcount
        type: unsigned int
      item_type: struct
      name: lwan_pubsub_msg
      pos:
        line_end: 44
        line_start: 41
        source_file: /src/lwan/src/lib/lwan-pubsub.c
    - fields:
      - name: ref
        type: struct list_node
      - name: ring
        type: struct lwan_pubsub_msg_ref_ring
      item_type: struct
      name: lwan_pubsub_msg_ref
      pos:
        line_end: 51
        line_start: 48
        source_file: /src/lwan/src/lib/lwan-pubsub.c
    - fields:
      - name: subscriber
        type: struct list_node
      - name: lock
        type: pthread_mutex_t
      - name: msg_refs
        type: struct list_head
      - name: event_fd[2]
        type: int
      item_type: struct
      name: lwan_pubsub_subscriber
      pos:
        line_end: 60
        line_start: 53
        source_file: /src/lwan/src/lib/lwan-pubsub.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/lib/patterns.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAXCAPTURES
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/lwan/src/lib/patterns.h
      type_or_value: "32\t"
    - item_type: preproc_def
      name: MAXCCALLS
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/lwan/src/lib/patterns.h
      type_or_value: "200\t"
    - item_type: preproc_def
      name: MAXREPETITION
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/lwan/src/lib/patterns.h
      type_or_value: "0xfffff\t"
    structs:
    - fields:
      - name: sm_so
        type: off_t
      - name: sm_eo
        type: off_t
      item_type: struct
      name: str_find
      pos:
        line_end: 30
        line_start: 27
        source_file: /src/lwan/src/lib/patterns.h
    - fields:
      - name: '**sm_match'
        type: char
      - name: sm_nmatch
        type: int
      item_type: struct
      name: str_match
      pos:
        line_end: 35
        line_start: 32
        source_file: /src/lwan/src/lib/patterns.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/lib/lwan-coro.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: coro_context[10]
      pos:
        line_end: 27
        line_start: 27
        source_file: /src/lwan/src/lib/lwan-coro.h
      type: uintptr_t
    - item_type: typedef
      name: coro_context[22]
      pos:
        line_end: 29
        line_start: 29
        source_file: /src/lwan/src/lib/lwan-coro.h
      type: uintptr_t
    - item_type: typedef
      name: coro_context
      pos:
        line_end: 32
        line_start: 32
        source_file: /src/lwan/src/lib/lwan-coro.h
      type: libucontext_ucontext_t
    - item_type: typedef
      name: coro_deferred
      pos:
        line_end: 38
        line_start: 38
        source_file: /src/lwan/src/lib/lwan-coro.h
      type: ssize_t
    - item_type: typedef
      name: (*coro_function_t)(struct coro *coro, void *data)
      pos:
        line_end: 40
        line_start: 40
        source_file: /src/lwan/src/lib/lwan-coro.h
      type: int
    union: []
- function_names:
  - realpathat2
  - realpathat
  source_file: /src/lwan/src/lib/realpathat.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/lib/int-to-str.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: INT_TO_STR_BUFFER_SIZE
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/lwan/src/lib/int-to-str.h
      type_or_value: (3 * sizeof(size_t))
    structs: []
    typedefs: []
    union: []
- function_names:
  - FOR_EACH_HTTP_STATUS
  source_file: /src/lwan/src/lib/lwan-http-status.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/lib/lwan-mod-rewrite.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/lib/lwan-tq.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*lwan'
        type: struct lwan
      - name: '*conns'
        type: struct lwan_connection
      - name: head
        type: struct lwan_connection
      - name: timeout
        type: struct timeout
      - name: current_time
        type: unsigned int
      - name: move_to_last_bump
        type: unsigned int
      item_type: struct
      name: timeout_queue
      pos:
        line_end: 29
        line_start: 22
        source_file: /src/lwan/src/lib/lwan-tq.h
    typedefs: []
    union: []
- function_names:
  - timedwait
  - lwan_job_thread_main_loop
  - lwan_job_thread_init
  - lwan_job_thread_shutdown
  - lwan_job_add
  - lwan_job_del
  source_file: /src/lwan/src/lib/lwan-job.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: jobs
        type: struct list_node
      - name: (*cb)(void *data)
        type: bool
      - name: '*data'
        type: void
      item_type: struct
      name: job
      pos:
        line_end: 38
        line_start: 34
        source_file: /src/lwan/src/lib/lwan-job.c
    typedefs: []
    union: []
- function_names:
  - epoll_create1
  - epoll_ctl
  - to_timespec
  - kevent_ident_cmp
  - epoll_wait
  source_file: /src/lwan/src/lib/missing-epoll.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/lib/sha1.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: count[2]
        type: size_t
      - name: state[5]
        type: uint32_t
      - name: buffer[64]
        type: unsigned char
      item_type: struct
      name: sha1_context
      pos:
        line_end: 15
        line_start: 11
        source_file: /src/lwan/src/lib/sha1.h
    typedefs: []
    union: []
- function_names:
  - base64_validate
  - base64_encode
  - base64_decode
  source_file: /src/lwan/src/lib/base64.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - parse_2_digit_num_no_end_check
  - parse_2_digit_num
  - lwan_parse_rfc_time
  - STRING_SWITCH
  - STRING_SWITCH
  - STRING_SWITCH
  - append_two_digits
  - lwan_format_rfc_time
  source_file: /src/lwan/src/lib/lwan-time.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - lwan_log_init
  - lwan_log_shutdown
  - can_use_colors
  - can_use_emojis
  - log_index
  - V
  - start_color
  - end_color
  - strerror_thunk_r
  - LWAN_LAZY_THREAD_LOCAL
  - LWAN_LAZY_THREAD_LOCAL
  - FORMAT_WITH_COLOR
  - log_out
  - IMPLEMENT_FUNCTION
  - IMPLEMENT_FUNCTION
  source_file: /src/lwan/src/lib/lwan-log.c
  types:
    enum:
    - enumerators:
      - name: LOG_INFO
        value: '0'
      - name: LOG_WARNING
        value: '1'
      - name: LOG_ERROR
        value: '2'
      - name: LOG_DEBUG
        value: '3'
      - name: LOG_PERROR
        value: '4'
      - name: LOG_NONE
        value: '5'
      - name: LOG_CRITICAL
        value: '8'
      item_type: enum
      name: lwan_log_type
      pos:
        line_end: 42
        line_start: 33
        source_file: /src/lwan/src/lib/lwan-log.c
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - no_tombstone
  - hash_str_fnv1a
  - hash_str_eq
  - hash_int_fnv1a
  - hash_int_eq
  - hash_lwan_value_fnv1a
  - hash_lwan_value_eq
  - hash_crc32
  - hash_str_crc32
  - hash_int_crc32
  - hash_lwan_value_crc32
  - free_key_value_noop
  - hash_custom_new
  - hash_str_new
  - hash_int_new
  - hash_lwan_value_new
  - hash_ref
  - hash_unref
  - hash_probe_half
  - hash_probe_half_tombstone
  - hash_probe_key
  - hash_probe_tombstone
  - hash_probe
  - hash_resize
  - hash_add_internal
  - hash_add
  - hash_add_unique
  - hash_del
  - hash_find
  - hash_get_count
  - hash_iter_next
  - LWAN_SELF_TEST
  - HASH_FOREACH
  source_file: /src/lwan/src/lib/hash.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: INITIAL_CAP
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/lwan/src/lib/hash.c
      type_or_value: '16'
    structs:
    - fields:
      - name: '*key'
        type: void
      - name: '*value'
        type: void
      item_type: struct
      name: bucket
      pos:
        line_end: 37
        line_start: 34
        source_file: /src/lwan/src/lib/hash.c
    - fields:
      - name: '*tophashes'
        type: uint8_t
      - name: '*buckets'
        type: struct bucket
      - name: len
        type: uint32_t
      - name: (*hash)(const void *key)
        type: uint32_t
      - name: (*key_equal)(const void *k1, const void *k2)
        type: bool
      - name: (*free_key)(void *key)
        type: void
      - name: (*free_value)(void *value)
        type: void
      - name: refs
        type: int
      item_type: struct
      name: hash
      pos:
        line_end: 50
        line_start: 39
        source_file: /src/lwan/src/lib/hash.c
    typedefs: []
    union: []
- function_names:
  - lwan_response_init
  - lwan_response_shutdown
  - has_response_body
  - lwan_response
  - lwan_fill_default_response
  - lwan_default_response
  - RETURN_0_ON_OVERFLOW
  - APPEND_STRING_LEN
  - APPEND_STRING
  - APPEND_CHAR
  - APPEND_CHAR_NOCHECK
  - APPEND_UINT
  - APPEND_CONSTANT
  - flags_has_content_length
  - has_uncommon_response_headers
  - lwan_prepare_response_header_full
  - lwan_prepare_response_header
  - lwan_response_set_chunked_full
  - lwan_response_set_chunked
  - lwan_response_send_chunk_full
  - lwan_response_send_chunk
  - lwan_response_set_event_stream
  - lwan_response_send_event
  source_file: /src/lwan/src/lib/lwan-response.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TPL_STRUCT
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/lwan/src/lib/lwan-response.c
      type_or_value: struct error_template
    structs:
    - fields:
      - name: '*short_message'
        type: char
      - name: '*long_message'
        type: char
      item_type: struct
      name: error_template
      pos:
        line_end: 41
        line_start: 38
        source_file: /src/lwan/src/lib/lwan-response.c
    typedefs: []
    union: []
- function_names:
  - parse_ascii_port
  - strsep_char
  - parse_proxy_protocol_v1
  - STRING_SWITCH
  - parse_proxy_protocol_v2
  - __builtin_expect_with_probability
  - identify_http_method
  - GENERATE_IF
  - url_decode
  - key_value_compare
  - reset_key_value_array
  - parse_key_values
  - identity_decode
  - parse_cookies
  - parse_query_string
  - parse_form_data
  - find_query_string
  - identify_http_path
  - STRING_SWITCH_LARGE
  - set_header_value
  - HEADER_LENGTH
  - SET_HEADER_VALUE
  - find_headers
  - parse_headers
  - STRING_SWITCH_L
  - lwan_find_headers
  - parse_if_modified_since
  - parse_off_without_sign
  - parse_range
  - parse_accept_encoding
  - STRING_SWITCH
  - parse_connection_header
  - STRING_SWITCH_L
  - save_to_corpus_for_fuzzing
  - client_read
  - read_request_finalizer_from_helper
  - read_request_finalizer
  - read_request
  - body_data_finalizer
  - is_dir_good_for_tmp
  - LWAN_LAZY_GLOBAL
  - STRING_SWITCH
  - (diff.tv_nsec < 0)
  source_file: /src/lwan/src/lib/lwan-request.c
  types:
    enum:
    - enumerators:
      - name: FINALIZER_DONE
      - name: FINALIZER_TRY_AGAIN
      - name: FINALIZER_TIMEOUT
      item_type: enum
      name: lwan_read_finalizer
      pos:
        line_end: 56
        line_start: 52
        source_file: /src/lwan/src/lib/lwan-request.c
    preproc_defs:
    - item_type: preproc_def
      name: HEADER_VALUE_SEPARATOR_LEN
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/lwan/src/lib/lwan-request.c
      type_or_value: '(sizeof(": ") - 1)'
    - item_type: preproc_def
      name: HEADER_TERMINATOR_LEN
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/lwan/src/lib/lwan-request.c
      type_or_value: (sizeof("\r\n") - 1)
    - item_type: preproc_def
      name: MIN_REQUEST_SIZE
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/lwan/src/lib/lwan-request.c
      type_or_value: (sizeof("GET / HTTP/1.1\r\n\r\n") - 1)
    structs:
    - fields:
      - name: sig[12]
        type: uint8_t
      - name: cmd_ver
        type: uint8_t
      - name: fam
        type: uint8_t
      - name: len
        type: uint16_t
      - name: addr
        type: "union {\n        struct {\n            in_addr_t src_addr;\n            in_addr_t
          dst_addr;\n            uint16_t src_port;\n            uint16_t dst_port;\n
          \       } ip4;\n        struct {\n            struct in6_addr src_addr;\n
          \           struct in6_addr dst_addr;\n            uint16_t src_port;\n
          \           uint16_t dst_port;\n        } ip6;\n    }"
      item_type: struct
      name: proxy_header_v2
      pos:
        line_end: 77
        line_start: 58
        source_file: /src/lwan/src/lib/lwan-request.c
    - fields:
      - name: (double)diff.tv_sec / 1000.0 + (double)
        type: return
      item_type: struct
      name: timespec
      pos:
        line_end: 1611
        line_start: 1600
        source_file: /src/lwan/src/lib/lwan-request.c
    - fields:
      - name: '*entry'
        type: struct lwan_key_value
      - name: (LIKELY(entry))
        type: if
      - name: entry
        type: return
      item_type: struct
      name: lwan_key_value
      pos:
        line_end: 1684
        line_start: 1678
        source_file: /src/lwan/src/lib/lwan-request.c
    typedefs: []
    union: []
- function_names:
  - TPL_VAR_SIMPLE
  - TPL_VAR_SEQUENCE
  - TPL_VAR_INT
  - TPL_VAR_DOUBLE
  - TPL_VAR_STR
  - TPL_VAR_STR_ESCAPE
  - lwan_tpl_compile_string_full
  source_file: /src/lwan/src/lib/lwan-template.h
  types:
    enum:
    - enumerators:
      - name: LWAN_TPL_FLAG_CONST_TEMPLATE
        value: 1 << 0
      item_type: enum
      name: lwan_tpl_flag
      pos:
        line_end: 25
        line_start: 25
        source_file: /src/lwan/src/lib/lwan-template.h
    preproc_defs:
    - item_type: preproc_def
      name: TPL_VAR_SENTINEL
      pos:
        line_end: 82
        line_start: 78
        source_file: /src/lwan/src/lib/lwan-template.h
      type_or_value: "{                                                                          \\\n
        \       .name = NULL, .offset = 0,                                             \\\n
        \   }"
    structs:
    - fields:
      - name: '*name'
        type: char
      - name: offset
        type: off_t
      - name: '*list_desc'
        type: struct lwan_var_descriptor
      item_type: struct
      name: lwan_var_descriptor
      pos:
        line_end: 44
        line_start: 27
        source_file: /src/lwan/src/lib/lwan-template.h
    typedefs: []
    union: []
- function_names:
  - ctz64
  - clz64
  - ctz32
  - clz32
  - ctz32
  - clz32
  - ctz
  - clz
  - fls
  - WHEEL_C
  - rotl
  - rotr
  - timeouts_init
  - timeouts_open
  - timeouts_close
  - timeouts_del
  - timeout_rem
  - timeout_wheel
  - timeout_slot
  - timeouts_sched
  - timeouts_add
  - timeouts_update
  - timeouts_int
  - timeouts_timeout
  - timeouts_get
  source_file: /src/lwan/src/lib/timeout.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: abstime_t
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/lwan/src/lib/timeout.c
      type_or_value: 'timeout_t '
    - item_type: preproc_def
      name: reltime_t
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/lwan/src/lib/timeout.c
      type_or_value: 'timeout_t '
    - item_type: preproc_def
      name: WHEEL_BIT
      pos:
        line_end: 83
        line_start: 82
        source_file: /src/lwan/src/lib/timeout.c
      type_or_value: '6'
    - item_type: preproc_def
      name: WHEEL_NUM
      pos:
        line_end: 84
        line_start: 83
        source_file: /src/lwan/src/lib/timeout.c
      type_or_value: '4'
    - item_type: preproc_def
      name: WHEEL_LEN
      pos:
        line_end: 86
        line_start: 85
        source_file: /src/lwan/src/lib/timeout.c
      type_or_value: (1U << WHEEL_BIT)
    - item_type: preproc_def
      name: WHEEL_MAX
      pos:
        line_end: 87
        line_start: 86
        source_file: /src/lwan/src/lib/timeout.c
      type_or_value: (WHEEL_LEN - 1)
    - item_type: preproc_def
      name: WHEEL_MASK
      pos:
        line_end: 88
        line_start: 87
        source_file: /src/lwan/src/lib/timeout.c
      type_or_value: (WHEEL_LEN - 1)
    - item_type: preproc_def
      name: TIMEOUT_MAX
      pos:
        line_end: 89
        line_start: 88
        source_file: /src/lwan/src/lib/timeout.c
      type_or_value: ((TIMEOUT_C(1) << (WHEEL_BIT * WHEEL_NUM)) - 1)
    - item_type: preproc_def
      name: WHEEL_PRIu
      pos:
        line_end: 109
        line_start: 108
        source_file: /src/lwan/src/lib/timeout.c
      type_or_value: PRIu64
    - item_type: preproc_def
      name: WHEEL_PRIx
      pos:
        line_end: 110
        line_start: 109
        source_file: /src/lwan/src/lib/timeout.c
      type_or_value: PRIx64
    - item_type: preproc_def
      name: WHEEL_T_BITS
      pos:
        line_end: 119
        line_start: 118
        source_file: /src/lwan/src/lib/timeout.c
      type_or_value: ((CHAR_BIT) * sizeof(wheel_t))
    structs:
    - fields:
      - name: wheel[WHEEL_NUM][WHEEL_LEN]
        type: struct list_head
      - name: expired
        type: struct list_head
      - name: pending[WHEEL_NUM]
        type: wheel_t
      - name: curtime
        type: timeout_t
      item_type: struct
      name: timeouts
      pos:
        line_end: 146
        line_start: 139
        source_file: /src/lwan/src/lib/timeout.c
    typedefs:
    - item_type: typedef
      name: wheel_t
      pos:
        line_end: 111
        line_start: 111
        source_file: /src/lwan/src/lib/timeout.c
      type: uint64_t
    union: []
- function_names: []
  source_file: /src/lwan/src/lib/lwan-trie.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*root'
        type: struct lwan_trie_node
      - name: (*free_node)(void *data)
        type: void
      - name: arena
        type: struct arena
      item_type: struct
      name: lwan_trie
      pos:
        line_end: 33
        line_start: 29
        source_file: /src/lwan/src/lib/lwan-trie.h
    typedefs: []
    union: []
- function_names:
  - uchar
  - match_error
  - check_capture
  - capture_to_close
  - classend
  - match_class
  - matchbracketclass
  - singlematch
  - matchbalance
  - max_expand
  - min_expand
  - start_capture
  - end_capture
  - match_capture
  - match
  - lmemfind
  - push_onecapture
  - push_captures
  - nospecials
  - str_find_aux
  - str_find
  - str_match
  - str_match_free
  source_file: /src/lwan/src/lib/patterns.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CAP_UNFINISHED
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/lwan/src/lib/patterns.c
      type_or_value: (-1)
    - item_type: preproc_def
      name: CAP_POSITION
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/lwan/src/lib/patterns.c
      type_or_value: (-2)
    - item_type: preproc_def
      name: L_ESC
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/lwan/src/lib/patterns.c
      type_or_value: '''%'''
    - item_type: preproc_def
      name: SPECIALS
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/lwan/src/lib/patterns.c
      type_or_value: '"^$*+?.([%-"'
    structs:
    - fields:
      - name: matchdepth
        type: int
      - name: repetitioncounter
        type: int
      - name: maxcaptures
        type: int
      - name: '*src_init'
        type: char
      - name: '*src_end'
        type: char
      - name: '*p_end'
        type: char
      - name: '*error'
        type: char
      - name: level
        type: int
      - name: capture[MAXCAPTURES]
        type: "struct {\n\t\tconst char *init;\n\t\tptrdiff_t len;\n\t}"
      item_type: struct
      name: match_state
      pos:
        line_end: 63
        line_start: 48
        source_file: /src/lwan/src/lib/patterns.c
    typedefs: []
    union: []
- function_names:
  - LWAN_ARRAY_FOREACH
  - LWAN_ARRAY_FOREACH_REVERSE
  - DEFINE_ARRAY_TYPE
  - DEFINE_ARRAY_TYPE_INLINEFIRST
  - DEFINE_ARRAY_TYPE_FUNCS
  - _len
  source_file: /src/lwan/src/lib/lwan-array.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LWAN_ARRAY_INCREMENT
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/lwan/src/lib/lwan-array.h
      type_or_value: '16'
    structs:
    - fields:
      - name: '*base'
        type: void
      - name: elements
        type: size_t
      item_type: struct
      name: lwan_array
      pos:
        line_end: 42
        line_start: 39
        source_file: /src/lwan/src/lib/lwan-array.h
    typedefs: []
    union: []
- function_names:
  - mempcpy
  - memrchr
  - pipe2
  - accept4
  - clock_gettime
  - proc_pidpath
  - proc_pidpath
  - proc_pidpath
  - gettid
  - gettid
  - gettid
  - gettid
  - get_current_proc_info
  - getresuid
  - setresuid
  - setresgid
  - getresgid
  - mkostemp
  - umull_overflow
  - reallocarray
  - readahead
  - get_current_dir_name
  - capset
  - fwrite_unlocked
  - statfs
  - lwan_getentropy_fallback
  - lwan_getentropy
  - lwan_getentropy
  - lwan_getentropy
  - isalpha_neutral
  - strcaseequal_neutral_len
  - strcaseequal_neutral
  - LWAN_SELF_TEST
  - stpncpy
  - stpcpy
  - set_vma_anon_name
  source_file: /src/lwan/src/lib/missing.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MUL_NO_OVERFLOW
      pos:
        line_end: 376
        line_start: 375
        source_file: /src/lwan/src/lib/missing.c
      type_or_value: ((size_t)1 << (sizeof(size_t) * 4))
    - item_type: preproc_def
      name: umull_overflow
      pos:
        line_end: 387
        line_start: 386
        source_file: /src/lwan/src/lib/missing.c
      type_or_value: __builtin_mul_overflow
    structs: []
    typedefs: []
    union: []
- function_names:
  - LWAN_HANDLER_ROUTE
  - find_handler
  - LWAN_SECTION_FOREACH
  - find_module
  - LWAN_SECTION_FOREACH
  - destroy_urlmap
  - add_url_map
  - can_override_header
  - build_response_headers
  - parse_global_headers
  - parse_listener_prefix_authorization
  - get_module_name
  - LWAN_SECTION_FOREACH
  - parse_listener_prefix
  - register_url_map
  - lwan_set_url_map
  - lwan_detect_url_map
  - LWAN_SECTION_FOREACH
  - lwan_get_config_path
  - parse_tls_listener
  - allow_bind_for_listener
  - parse_listener
  - parse_site
  - setup_from_config
  - try_setup_from_config
  - setup_open_file_count_limits
  - allocate_connections
  - get_number_of_cpus
  - lwan_init
  - lwan_get_default_config
  - dup_or_null
  - constructor_sort
  - call_constructors
  - LWAN_SECTION_FOREACH
  - lwan_init_with_config
  - lwan_shutdown
  - lwan_main_loop
  - lwan_set_thread_name
  source_file: /src/lwan/src/lib/lwan.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - strv_free
  source_file: /src/lwan/src/lib/sd-daemon.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SD_EMERG
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/lwan/src/lib/sd-daemon.h
      type_or_value: '"<0>"  '
    - item_type: preproc_def
      name: SD_ALERT
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/lwan/src/lib/sd-daemon.h
      type_or_value: '"<1>"  '
    - item_type: preproc_def
      name: SD_CRIT
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/lwan/src/lib/sd-daemon.h
      type_or_value: '"<2>"  '
    - item_type: preproc_def
      name: SD_ERR
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/lwan/src/lib/sd-daemon.h
      type_or_value: '"<3>"  '
    - item_type: preproc_def
      name: SD_WARNING
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/lwan/src/lib/sd-daemon.h
      type_or_value: '"<4>"  '
    - item_type: preproc_def
      name: SD_NOTICE
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/lwan/src/lib/sd-daemon.h
      type_or_value: '"<5>"  '
    - item_type: preproc_def
      name: SD_INFO
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/lwan/src/lib/sd-daemon.h
      type_or_value: '"<6>"  '
    - item_type: preproc_def
      name: SD_DEBUG
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/lwan/src/lib/sd-daemon.h
      type_or_value: '"<7>"  '
    - item_type: preproc_def
      name: SD_LISTEN_FDS_START
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/lwan/src/lib/sd-daemon.h
      type_or_value: '3'
    structs: []
    typedefs: []
    union: []
- function_names:
  - REDIRECT_CODE
  - REDIRECT
  source_file: /src/lwan/src/lib/lwan-mod-redirect.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*to'
        type: char
      - name: code
        type: enum lwan_http_status
      item_type: struct
      name: lwan_redirect_settings
      pos:
        line_end: 27
        line_start: 24
        source_file: /src/lwan/src/lib/lwan-mod-redirect.h
    typedefs: []
    union: []
- function_names:
  - close_fd
  - add_param_len
  - add_param
  - add_int_param
  - create_script_name
  - destroy_script_name
  - add_script_paths
  - add_header_to_strbuf
  - fill_addr_and_port
  - add_params
  - discard
  - handle_stdout
  - handle_stderr
  - discard_unknown_record
  - reset_additional_header
  - try_initiating_chunked_response
  - flush_iovec
  - build_stdin_records
  - send_request
  - try_connect
  - fastcgi_handle_request
  - fastcgi_create
  - fastcgi_destroy
  - fastcgi_create_from_hash
  source_file: /src/lwan/src/lib/lwan-mod-fastcgi.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: FASTCGI_ROLE_RESPONDER
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/lwan/src/lib/lwan-mod-fastcgi.c
      type_or_value: '1'
    - item_type: preproc_def
      name: FASTCGI_FLAGS_KEEP_CONN
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/lwan/src/lib/lwan-mod-fastcgi.c
      type_or_value: '1'
    - item_type: preproc_def
      name: FASTCGI_TYPE_BEGIN_REQUEST
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/lwan/src/lib/lwan-mod-fastcgi.c
      type_or_value: '1'
    - item_type: preproc_def
      name: FASTCGI_TYPE_END_REQUEST
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/lwan/src/lib/lwan-mod-fastcgi.c
      type_or_value: '3'
    - item_type: preproc_def
      name: FASTCGI_TYPE_PARAMS
      pos:
        line_end: 59
        line_start: 58
        source_file: /src/lwan/src/lib/lwan-mod-fastcgi.c
      type_or_value: '4'
    - item_type: preproc_def
      name: FASTCGI_TYPE_STDIN
      pos:
        line_end: 60
        line_start: 59
        source_file: /src/lwan/src/lib/lwan-mod-fastcgi.c
      type_or_value: '5'
    - item_type: preproc_def
      name: FASTCGI_TYPE_STDOUT
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/lwan/src/lib/lwan-mod-fastcgi.c
      type_or_value: '6'
    - item_type: preproc_def
      name: FASTCGI_TYPE_STDERR
      pos:
        line_end: 62
        line_start: 61
        source_file: /src/lwan/src/lib/lwan-mod-fastcgi.c
      type_or_value: '7'
    structs:
    - fields:
      - name: addr_family
        type: sa_family_t
      - name: addr_size
        type: socklen_t
      - name: '*script_name_cache'
        type: struct cache
      - name: default_index
        type: struct lwan_value
      - name: '*script_path'
        type: char
      - name: script_path_fd
        type: int
      item_type: struct
      name: private_data
      pos:
        line_end: 79
        line_start: 63
        source_file: /src/lwan/src/lib/lwan-mod-fastcgi.c
    - fields:
      - name: version
        type: uint8_t
      - name: type
        type: uint8_t
      - name: id
        type: uint16_t
      - name: len_content
        type: uint16_t
      - name: len_padding
        type: uint8_t
      - name: reserved
        type: uint8_t
      item_type: struct
      name: record
      pos:
        line_end: 88
        line_start: 81
        source_file: /src/lwan/src/lib/lwan-mod-fastcgi.c
    - fields:
      - name: role
        type: uint16_t
      - name: flags
        type: uint8_t
      - name: padding[5]
        type: uint8_t
      item_type: struct
      name: begin_request_body
      pos:
        line_end: 96
        line_start: 92
        source_file: /src/lwan/src/lib/lwan-mod-fastcgi.c
    - fields:
      - name: begin_request
        type: struct record
      - name: begin_request_body
        type: struct begin_request_body
      - name: begin_params
        type: struct record
      item_type: struct
      name: request_header
      pos:
        line_end: 105
        line_start: 101
        source_file: /src/lwan/src/lib/lwan-mod-fastcgi.c
    - fields:
      - name: base
        type: struct cache_entry
      - name: '*script_name'
        type: char
      - name: '*script_filename'
        type: char
      item_type: struct
      name: script_name_cache_entry
      pos:
        line_end: 111
        line_start: 107
        source_file: /src/lwan/src/lib/lwan-mod-fastcgi.c
    typedefs: []
    union: []
- function_names:
  - lwan_array_reset
  - add_overflow
  - lwan_array_append_heap
  - lwan_array_append_inline
  - lwan_array_sort
  - coro_lwan_array_free_heap
  - coro_lwan_array_free_inline
  - coro_lwan_array_new
  source_file: /src/lwan/src/lib/lwan-array.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: add_overflow
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/lwan/src/lib/lwan-array.c
      type_or_value: __builtin_add_overflow
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/lib/lwan-config.h
  types:
    enum:
    - enumerators:
      - name: CONFIG_LINE_TYPE_LINE
      - name: CONFIG_LINE_TYPE_SECTION_END
      - name: CONFIG_LINE_TYPE_SECTION
      item_type: enum
      name: config_line_type
      pos:
        line_end: 41
        line_start: 37
        source_file: /src/lwan/src/lib/lwan-config.h
    preproc_defs:
    - item_type: preproc_def
      name: ONE_MINUTE
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/lwan/src/lib/lwan-config.h
      type_or_value: '60'
    - item_type: preproc_def
      name: ONE_HOUR
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/lwan/src/lib/lwan-config.h
      type_or_value: (ONE_MINUTE * 60)
    - item_type: preproc_def
      name: ONE_DAY
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/lwan/src/lib/lwan-config.h
      type_or_value: (ONE_HOUR * 24)
    - item_type: preproc_def
      name: ONE_WEEK
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/lwan/src/lib/lwan-config.h
      type_or_value: (ONE_DAY * 7)
    - item_type: preproc_def
      name: ONE_MONTH
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/lwan/src/lib/lwan-config.h
      type_or_value: (ONE_DAY * 31)
    - item_type: preproc_def
      name: ONE_YEAR
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/lwan/src/lib/lwan-config.h
      type_or_value: (ONE_MONTH * 12)
    structs:
    - fields:
      - name: '*key'
        type: char
      - name: '*value'
        type: char
      - name: type
        type: enum config_line_type
      item_type: struct
      name: config_line
      pos:
        line_end: 48
        line_start: 43
        source_file: /src/lwan/src/lib/lwan-config.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/lib/lwan-arena.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: ptrs
        type: struct ptr_array
      - name: bump_ptr_alloc
        type: "struct {\n        void *ptr;\n        size_t remaining;\n    }"
      - name: zero_initialize
        type: unsigned int
      item_type: struct
      name: arena
      pos:
        line_end: 36
        line_start: 27
        source_file: /src/lwan/src/lib/lwan-arena.h
    typedefs: []
    union: []
- function_names:
  - arena_init
  - arena_init0
  - arena_reset
  - arena_alloc
  - reset_arena
  - coro_arena_new
  source_file: /src/lwan/src/lib/lwan-arena.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - LWAN_LAZY_GLOBAL
  - LWAN_LAZY_GLOBAL
  - set_socket_flags
  - parse_listener_ipv4
  - parse_listener_ipv6
  - lwan_socket_parse_address
  - listen_addrinfo
  - SET_SOCKET_OPTION
  - SET_SOCKET_OPTION_MAY_FAIL
  - bind_and_listen_addrinfos
  - set_socket_options
  - setup_socket_normally
  - from_systemd_socket
  - lwan_create_listen_socket
  source_file: /src/lwan/src/lib/lwan-socket.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TCP_FASTOPEN
      pos:
        line_end: 246
        line_start: 245
        source_file: /src/lwan/src/lib/lwan-socket.c
      type_or_value: '23'
    structs: []
    typedefs: []
    union: []
- function_names:
  - uint_to_string_2_digits
  - uint_to_string
  - int_to_string
  source_file: /src/lwan/src/lib/int-to-str.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - write_websocket_frame_full
  - write_websocket_frame
  - lwan_response_websocket_write
  - lwan_response_websocket_write_text
  - lwan_response_websocket_write_binary
  - get_frame_length
  - unmask
  - ping_pong
  - lwan_send_websocket_ping_for_tq
  - lwan_response_websocket_read_hint
  - lwan_response_websocket_read
  source_file: /src/lwan/src/lib/lwan-websocket.c
  types:
    enum:
    - enumerators:
      - name: WS_OPCODE_CONTINUATION
        value: '0'
      - name: WS_OPCODE_CLOSE
        value: '8'
      - name: WS_OPCODE_BINARY
        value: '2'
      - name: WS_OPCODE_TEXT
        value: '1'
      - name: WS_OPCODE_PING
        value: '9'
      - name: WS_OPCODE_PONG
        value: '10'
      - name: WS_OPCODE_RSVD_1
        value: '3'
      - name: WS_OPCODE_RSVD_2
        value: '4'
      - name: WS_OPCODE_RSVD_3
        value: '5'
      - name: WS_OPCODE_RSVD_4
        value: '6'
      - name: WS_OPCODE_RSVD_CONTROL_1
        value: '11'
      - name: WS_OPCODE_RSVD_CONTROL_2
        value: '12'
      - name: WS_OPCODE_RSVD_CONTROL_3
        value: '13'
      - name: WS_OPCODE_RSVD_CONTROL_5
        value: '15'
      - name: WS_OPCODE_RSVD_5
        value: '7'
      - name: WS_OPCODE_RSVD_CONTROL_4
        value: '14'
      - name: WS_OPCODE_INVALID
        value: '16'
      item_type: enum
      name: ws_opcode
      pos:
        line_end: 55
        line_start: 34
        source_file: /src/lwan/src/lib/lwan-websocket.c
    preproc_defs:
    - item_type: preproc_def
      name: WS_MASKED
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/lwan/src/lib/lwan-websocket.c
      type_or_value: '0x80'
    structs: []
    typedefs: []
    union: []
- function_names:
  - ZERO_IF_IS_ARRAY
  - ZERO_IF_IS_ARRAY
  - N_ELEMENTS
  - LWAN_SECTION_NAME
  - LWAN_SECTION_NAME
  - LWAN_MODULE_REF
  - LWAN_MODULE_FORWARD_DECL
  - LWAN_REGISTER_MODULE
  - LWAN_HANDLER_REF
  - LWAN_HANDLER
  - STR4_INT
  - STR2_INT
  - STR8_INT
  - STR4_INT
  - STR2_INT
  - STR8_INT
  - string_as_uint16
  - string_as_uint32
  - string_as_uint64
  - LOWER2
  - LOWER4
  - LOWER8
  - STR2_INT_L
  - STR4_INT_L
  - STR8_INT_L
  - STRING_SWITCH_SMALL
  - STRING_SWITCH_SMALL_L
  - STRING_SWITCH
  - STRING_SWITCH_L
  - STRING_SWITCH_LARGE
  - STRING_SWITCH_LARGE_L
  - LIKELY_IS
  - LIKELY
  - UNLIKELY
  - ATOMIC_READ
  - ATOMIC_OP
  - ATOMIC_AAF
  - ATOMIC_SAF
  - ATOMIC_INC
  - ATOMIC_DEC
  - LWAN_ARRAY_PARAM
  - LWAN_ARRAY_PARAM
  - LWAN_ACCESS_PARAM
  - GENERATE_ENUM_ITEM
  - FOR_EACH_REQUEST_METHOD
  - SELECT_MASK
  - GENERATE_ENUM_ITEM
  - lwan_main
  - lwan_request_get_method
  source_file: /src/lwan/src/lib/lwan.h
  types:
    enum:
    - enumerators:
      - name: HTTP_CLASS__INFORMATIONAL
        value: '100'
      - name: HTTP_CLASS__SERVER_ERROR
        value: '500'
      - name: HTTP_CLASS__SUCCESS
        value: '200'
      - name: HTTP_CLASS__REDIRECT
        value: '300'
      - name: HTTP_CLASS__CLIENT_ERROR
        value: '400'
      - name: FOR_EACH_HTTP_STATUS
      item_type: enum
      name: lwan_http_status
      pos:
        line_end: 181
        line_start: 174
        source_file: /src/lwan/src/lib/lwan.h
    - enumerators:
      - name: HANDLER_EXPECTS_BODY_DATA
        value: 1 << 0
      - name: HANDLER_PARSE_MASK
        value: HANDLER_EXPECTS_BODY_DATA
      - name: HANDLER_DATA_IS_HASH_TABLE
        value: 1 << 3
      - name: HANDLER_CAN_REWRITE_URL
        value: 1 << 2
      - name: HANDLER_MUST_AUTHORIZE
        value: 1 << 1
      item_type: enum
      name: lwan_handler_flags
      pos:
        line_end: 192
        line_start: 185
        source_file: /src/lwan/src/lib/lwan.h
    - enumerators:
      - name: REQUEST_ALL_FLAGS
        value: '-1'
      - name: REQUEST_METHOD_MASK
        value: FOR_EACH_REQUEST_METHOD(SELECT_MASK)
      - name: FOR_EACH_REQUEST_METHOD
      item_type: enum
      name: lwan_request_flags
      pos:
        line_end: 211
        line_start: 207
        source_file: /src/lwan/src/lib/lwan.h
    - enumerators:
      - name: CONN_IS_KEEP_ALIVE
        value: 1 << 2
      - name: CONN_SUSPENDED_MASK
        value: 1 << 5
      - name: CONN_HAS_REMOVE_SLEEP_DEFER
        value: 1 << 6
      - name: CONN_HUNG_UP
        value: 1 << 13
      - name: CONN_IS_WEBSOCKET
        value: 1 << 4
      - name: CONN_SUSPENDED
        value: (EPOLLRDHUP << CONN_EPOLL_EVENT_SHIFT) | CONN_SUSPENDED_MASK
      - name: CONN_ASYNC_AWAITV
        value: 1 << 9
      - name: CONN_TLS
        value: 1 << 11
      - name: CONN_MASK
        value: '-1'
      - name: CONN_EVENTS_WRITE
        value: ((EPOLLOUT | EPOLLRDHUP) << CONN_EPOLL_EVENT_SHIFT) | 1 << 1
      - name: CONN_EVENTS_MASK
        value: 1 << 0 | 1 << 1
      - name: CONN_FLAG_LAST
        value: CONN_HUNG_UP
      - name: CONN_LISTENER
        value: 1 << 12
      - name: CONN_EVENTS_READ_WRITE
        value: CONN_EVENTS_READ | CONN_EVENTS_WRITE
      - name: CONN_EVENTS_READ
        value: ((EPOLLIN | EPOLLRDHUP) << CONN_EPOLL_EVENT_SHIFT) | 1 << 0
      - name: CONN_IS_UPGRADE
        value: 1 << 3
      - name: CONN_ASYNC_AWAIT
        value: 1 << 8
      - name: CONN_CORK
        value: 1 << 7
      - name: CONN_SENT_CONNECTION_HEADER
        value: 1 << 10
      item_type: enum
      name: lwan_connection_flags
      pos:
        line_end: 314
        line_start: 252
        source_file: /src/lwan/src/lib/lwan.h
    - enumerators:
      - name: CONN_CORO_ABORT
      - name: CONN_CORO_WANT_READ_WRITE
      - name: CONN_CORO_WANT_WRITE
      - name: CONN_CORO_WANT_READ
      - name: CONN_CORO_YIELD
      - name: CONN_CORO_SUSPEND
      - name: CONN_CORO_RESUME
      - name: CONN_CORO_MAX
      item_type: enum
      name: lwan_connection_coro_yield
      pos:
        line_end: 343
        line_start: 319
        source_file: /src/lwan/src/lib/lwan.h
    preproc_defs:
    - item_type: preproc_def
      name: ALWAYS_INLINE
      pos:
        line_end: 91
        line_start: 90
        source_file: /src/lwan/src/lib/lwan.h
      type_or_value: inline __attribute__((always_inline))
    - item_type: preproc_def
      name: CONN_EPOLL_EVENT_SHIFT
      pos:
        line_end: 250
        line_start: 249
        source_file: /src/lwan/src/lib/lwan.h
      type_or_value: '16'
    - item_type: preproc_def
      name: CONN_EPOLL_EVENT_MASK
      pos:
        line_end: 251
        line_start: 250
        source_file: /src/lwan/src/lib/lwan.h
      type_or_value: ((1 << CONN_EPOLL_EVENT_SHIFT) - 1)
    structs:
    - fields:
      - name: '*key'
        type: char
      - name: '*value'
        type: char
      item_type: struct
      name: lwan_key_value
      pos:
        line_end: 348
        line_start: 345
        source_file: /src/lwan/src/lib/lwan.h
    - fields:
      - name: '*buffer'
        type: struct lwan_strbuf
      - name: '*mime_type'
        type: char
      item_type: struct
      name: lwan_response
      pos:
        line_end: 367
        line_start: 352
        source_file: /src/lwan/src/lib/lwan.h
    - fields:
      - name: '*value'
        type: char
      - name: len
        type: size_t
      item_type: struct
      name: lwan_value
      pos:
        line_end: 372
        line_start: 369
        source_file: /src/lwan/src/lib/lwan.h
    - fields:
      - name: flags
        type: enum lwan_connection_flags
      - name: time_to_expire
        type: unsigned int
      - name: '*coro'
        type: struct coro
      - name: '*thread'
        type: struct lwan_thread
      item_type: struct
      name: lwan_connection
      pos:
        line_end: 418
        line_start: 374
        source_file: /src/lwan/src/lib/lwan.h
    - fields:
      - name: from
        type: "union {\n        struct sockaddr_in ipv4;\n        struct sockaddr_in6
          ipv6;\n    }"
      item_type: struct
      name: lwan_proxy
      pos:
        line_end: 425
        line_start: 420
        source_file: /src/lwan/src/lib/lwan.h
    - fields:
      - name: flags
        type: enum lwan_request_flags
      - name: fd
        type: int
      - name: '*conn'
        type: struct lwan_connection
      - name: '*const global_response_headers'
        type: struct lwan_value
      - name: '*helper'
        type: struct lwan_request_parser_helper
      - name: url
        type: struct lwan_value
      - name: original_url
        type: struct lwan_value
      - name: response
        type: struct lwan_response
      - name: '*proxy'
        type: struct lwan_proxy
      - name: timeout
        type: struct timeout
      item_type: struct
      name: lwan_request
      pos:
        line_end: 445
        line_start: 431
        source_file: /src/lwan/src/lib/lwan.h
    - fields:
      - name: "(*handle_request)(struct lwan_request *request,\n                                            struct
          lwan_response *response,\n                                            void
          *instance)"
        type: enum lwan_http_status
      - name: '*(*create)(const char *prefix, void *args)'
        type: void
      - name: '*(*create_from_hash)(const char *prefix, const struct hash *hash)'
        type: void
      - name: (*destroy)(void *instance)
        type: void
      - name: (*parse_conf)(void *instance, struct config *config)
        type: bool
      - name: flags
        type: enum lwan_handler_flags
      item_type: struct
      name: lwan_module
      pos:
        line_end: 459
        line_start: 447
        source_file: /src/lwan/src/lib/lwan.h
    - fields:
      - name: '*name'
        type: char
      - name: '*module'
        type: struct lwan_module
      item_type: struct
      name: lwan_module_info
      pos:
        line_end: 464
        line_start: 461
        source_file: /src/lwan/src/lib/lwan.h
    - fields:
      - name: '*route'
        type: char
      - name: "(*handler)(struct lwan_request *request,\n                                     struct
          lwan_response *response,\n                                     void *data)"
        type: enum lwan_http_status
      item_type: struct
      name: lwan_url_map_route_info
      pos:
        line_end: 471
        line_start: 466
        source_file: /src/lwan/src/lib/lwan.h
    - fields:
      - name: '*name'
        type: char
      - name: "(*handler)(struct lwan_request *request,\n                                     struct
          lwan_response *response,\n                                     void *data)"
        type: enum lwan_http_status
      - name: '*route'
        type: char
      item_type: struct
      name: lwan_handler_info
      pos:
        line_end: 479
        line_start: 473
        source_file: /src/lwan/src/lib/lwan.h
    - fields:
      - name: "(*handler)(struct lwan_request *request,\n                                     struct
          lwan_response *response,\n                                     void *data)"
        type: enum lwan_http_status
      - name: '*data'
        type: void
      - name: '*prefix'
        type: char
      - name: prefix_len
        type: size_t
      - name: flags
        type: enum lwan_handler_flags
      - name: '*module'
        type: struct lwan_module
      - name: '*args'
        type: void
      - name: authorization
        type: "struct {\n        char *realm;\n        char *password_file;\n    }"
      item_type: struct
      name: lwan_url_map
      pos:
        line_end: 498
        line_start: 481
        source_file: /src/lwan/src/lib/lwan.h
    - fields:
      - name: '*user_name'
        type: char
      - name: '*chroot_path'
        type: char
      - name: drop_capabilities
        type: bool
      item_type: struct
      name: lwan_straitjacket
      pos:
        line_end: 504
        line_start: 500
        source_file: /src/lwan/src/lib/lwan.h
    - fields:
      - name: request_flags
        type: enum lwan_request_flags
      - name: '*global_headers'
        type: struct lwan_key_value
      - name: '*listener'
        type: char
      - name: '*tls_listener'
        type: char
      - name: '*error_template'
        type: char
      - name: '*config_file_path'
        type: char
      - name: ssl
        type: "struct {\n        char *cert;\n        char *key;\n        bool send_hsts_header;\n
          \   }"
      - name: max_post_data_size
        type: size_t
      - name: max_put_data_size
        type: size_t
      - name: request_buffer_size
        type: size_t
      - name: keep_alive_timeout
        type: unsigned int
      - name: expires
        type: unsigned int
      - name: n_threads
        type: unsigned int
      - name: max_file_descriptors
        type: unsigned int
      - name: quiet
        type: unsigned int
      - name: proxy_protocol
        type: unsigned int
      - name: allow_cors
        type: unsigned int
      - name: allow_post_temp_file
        type: unsigned int
      - name: allow_put_temp_file
        type: unsigned int
      item_type: struct
      name: lwan_config
      pos:
        line_end: 536
        line_start: 506
        source_file: /src/lwan/src/lib/lwan.h
    - fields:
      - name: url_map_trie
        type: struct lwan_trie
      - name: '*conns'
        type: struct lwan_connection
      - name: headers
        type: struct lwan_value
      - name: thread
        type: "struct {\n        struct lwan_thread *threads;\n\n        unsigned
          int max_fd;\n        unsigned int count;\n        pthread_barrier_t barrier;\n
          \   }"
      - name: config
        type: struct lwan_config
      - name: online_cpus
        type: unsigned int
      - name: available_cpus
        type: unsigned int
      item_type: struct
      name: lwan
      pos:
        line_end: 559
        line_start: 538
        source_file: /src/lwan/src/lib/lwan.h
    typedefs: []
    union: []
- function_names:
  - LIKELY
  - UNLIKELY
  - read64be
  - read32be
  - next_level0
  - next_level1
  - next_level2
  - peek_byte
  - consume
  - DEFINE_RING_BUFFER_TYPE
  - lwan_h2_huffman_next
  - lwan_h2_huffman_decode_for_fuzzing
  source_file: /src/lwan/src/lib/lwan-h2-huffman.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: symbol
        type: uint8_t
      - name: num_bits
        type: int8_t
      item_type: struct
      name: h2_huffman_code
      pos:
        line_end: 58
        line_start: 55
        source_file: /src/lwan/src/lib/lwan-h2-huffman.c
    - fields:
      - name: '*bitptr'
        type: uint8_t
      - name: bitbuf
        type: uint64_t
      - name: total_bitcount
        type: int64_t
      - name: bitcount
        type: int
      item_type: struct
      name: bit_reader
      pos:
        line_end: 275
        line_start: 270
        source_file: /src/lwan/src/lib/lwan-h2-huffman.c
    - fields:
      - name: bit_reader
        type: struct bit_reader
      - name: buffer
        type: struct uint8_ring_buffer
      item_type: struct
      name: lwan_h2_huffman_decoder
      pos:
        line_end: 314
        line_start: 311
        source_file: /src/lwan/src/lib/lwan-h2-huffman.c
    typedefs: []
    union: []
- function_names:
  - DEFINE_RING_BUFFER_TYPE
  source_file: /src/lwan/src/lib/ringbuffer.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - zero_and_free
  - create_realm_file
  - destroy_realm_file
  - lwan_http_authorize_init
  - lwan_http_authorize_shutdown
  - authorize
  - lwan_http_authorize
  source_file: /src/lwan/src/lib/lwan-http-authorize.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: base
        type: struct cache_entry
      - name: '*entries'
        type: struct hash
      item_type: struct
      name: realm_password_file_t
      pos:
        line_end: 34
        line_start: 31
        source_file: /src/lwan/src/lib/lwan-http-authorize.c
    typedefs: []
    union: []
- function_names:
  - lwan_strbuf_append_strz
  - lwan_strbuf_set_staticz
  - lwan_strbuf_setz
  - lwan_strbuf_get_length
  - lwan_strbuf_get_buffer
  source_file: /src/lwan/src/lib/lwan-strbuf.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LWAN_STRBUF_STATIC_INIT
      pos:
        line_end: 43
        line_start: 41
        source_file: /src/lwan/src/lib/lwan-strbuf.h
      type_or_value: (struct lwan_strbuf) { .buffer = "" }
    structs:
    - fields:
      - name: '*buffer'
        type: char
      - name: capacity
        type: size_t
      - name: flags
        type: unsigned int
      item_type: struct
      name: lwan_strbuf
      pos:
        line_end: 39
        line_start: 28
        source_file: /src/lwan/src/lib/lwan-strbuf.h
    typedefs: []
    union: []
- function_names:
  - Z
  - Z
  - lwan_tables_shutdown
  - lwan_tables_init
  - LWAN_SELF_TEST
  - ASSERT_STATUS
  - bsearch_mime_type
  - lwan_determine_mime_type_for_file_name
  - lwan_http_status_as_string_with_code
  - lwan_http_status_is_valid
  - lwan_http_status_as_string
  - lwan_http_status_as_descriptive_string
  - lwan_char_isspace
  - lwan_char_iscgiheader
  - lwan_char_isxdigit
  - lwan_char_isdigit
  - lwan_char_isalpha
  - lwan_char_isalnum
  - LWAN_SELF_TEST
  source_file: /src/lwan/src/lib/lwan-tables.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - rol
  - blk0
  - blk
  - R0
  - R1
  - R2
  - R3
  - R4
  - STATE
  - sha1_transform
  - sha1_init
  - sha1_update
  - sha1_finalize
  - main
  source_file: /src/lwan/src/lib/sha1.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - identity_key_copy
  - identity_key_free
  - str_key_copy
  - str_key_free
  - lwan_value_key_copy
  - lwan_value_key_free
  - cache_create_full
  - cache_create
  - cache_destroy
  - cache_entry_is_new
  - cache_get_and_ref_entry_with_ctx
  - cache_get_and_ref_entry
  - cache_entry_unref
  - cache_pruner_job
  - cache_entry_unref_defer
  - cache_coro_get_and_ref_entry_with_ctx
  - cache_coro_get_and_ref_entry
  - cache_make_read_only
  source_file: /src/lwan/src/lib/lwan-cache.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: GET_AND_REF_TRIES
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/lwan/src/lib/lwan-cache.c
      type_or_value: '5'
    structs:
    - fields:
      - name: hash
        type: "struct {\n        struct hash *table;\n        pthread_rwlock_t lock;\n
          \   }"
      - name: queue
        type: "struct {\n        struct list_head list;\n        pthread_rwlock_t
          lock;\n    }"
      - name: cb
        type: "struct {\n        cache_create_entry_cb create_entry;\n        cache_destroy_entry_cb
          destroy_entry;\n        void *context;\n    }"
      - name: key
        type: "struct {\n        void *(*copy)(const void *);\n        void (*free)(void
          *);\n    }"
      - name: settings
        type: "struct {\n        time_t time_to_live;\n    }"
      - name: flags
        type: unsigned
      item_type: struct
      name: cache
      pos:
        line_end: 83
        line_start: 46
        source_file: /src/lwan/src/lib/lwan-cache.c
    typedefs: []
    union: []
- function_names:
  - unsetenv_listen_vars
  - sd_listen_fds
  - strv_extend_n
  - strv_split
  - sd_listen_fds_with_names
  - sd_is_socket_internal
  - sd_is_socket_inet
  source_file: /src/lwan/src/lib/sd-daemon.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union:
    - fields:
      - name: sa
        type: struct sockaddr
      - name: in4
        type: struct sockaddr_in
      - name: in6
        type: struct sockaddr_in6
      item_type: union
      name: sockaddr_union
      pos:
        line_end: 280
        line_start: 276
        source_file: /src/lwan/src/lib/sd-daemon.c
- function_names:
  - state_create
  - state_destroy
  - get_or_create_cache
  - unref_thread
  - get_handle_prefix
  - ENTRY
  - GEN_TABLE_ENTRY
  - get_handler_function
  - push_newthread
  - lua_handle_request
  - lua_create
  - lua_destroy
  - lua_create_from_hash
  source_file: /src/lwan/src/lib/lwan-mod-lua.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*default_type'
        type: char
      - name: '*script_file'
        type: char
      - name: '*script'
        type: char
      - name: cache_key
        type: pthread_key_t
      - name: cache_period
        type: unsigned
      item_type: struct
      name: lwan_lua_priv
      pos:
        line_end: 43
        line_start: 37
        source_file: /src/lwan/src/lib/lwan-mod-lua.c
    - fields:
      - name: base
        type: struct cache_entry
      - name: '*L'
        type: lua_State
      item_type: struct
      name: lwan_lua_state
      pos:
        line_end: 48
        line_start: 45
        source_file: /src/lwan/src/lib/lwan-mod-lua.c
    typedefs: []
    union: []
- function_names:
  - LUA
  source_file: /src/lwan/src/lib/lwan-mod-lua.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*default_type'
        type: char
      - name: '*script_file'
        type: char
      - name: '*script'
        type: char
      - name: cache_period
        type: unsigned int
      item_type: struct
      name: lwan_lua_settings
      pos:
        line_end: 28
        line_start: 23
        source_file: /src/lwan/src/lib/lwan-mod-lua.h
    typedefs: []
    union: []
- function_names:
  - pthread_barrier_init
  - pthread_barrier_destroy
  - pthread_barrier_wait
  - pthread_set_name_np
  - pthread_set_name_np
  source_file: /src/lwan/src/lib/missing-pthread.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PTHREAD_BARRIER_SERIAL_THREAD
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/lwan/src/lib/missing-pthread.c
      type_or_value: '-1'
    structs: []
    typedefs: []
    union: []
- function_names:
  - timeout_queue_node_to_idx
  - timeout_queue_idx_to_node
  - timeout_queue_insert
  - timeout_queue_remove
  - timeout_queue_empty
  - timeout_queue_move_to_last
  - timeout_queue_init
  - timeout_queue_expire
  - timeout_queue_expire_waiting
  - timeout_queue_expire_all
  source_file: /src/lwan/src/lib/lwan-tq.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - base64_encoded_len
  source_file: /src/lwan/src/lib/base64.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - RESPONSE
  source_file: /src/lwan/src/lib/lwan-mod-response.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: code
        type: enum lwan_http_status
      item_type: struct
      name: lwan_response_settings
      pos:
        line_end: 25
        line_start: 23
        source_file: /src/lwan/src/lib/lwan-mod-response.h
    typedefs: []
    union: []
- function_names:
  - SERVE_FILES_SETTINGS
  - SERVE_FILES
  source_file: /src/lwan/src/lib/lwan-mod-serve-files.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SERVE_FILES_READ_AHEAD_BYTES
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/lwan/src/lib/lwan-mod-serve-files.h
      type_or_value: (128 * 1024)
    - item_type: preproc_def
      name: SERVE_FILES_CACHE_FOR
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/lwan/src/lib/lwan-mod-serve-files.h
      type_or_value: '5'
    structs:
    - fields:
      - name: '*root_path'
        type: char
      - name: '*index_html'
        type: char
      - name: '*directory_list_template'
        type: char
      - name: read_ahead
        type: size_t
      - name: cache_for
        type: time_t
      - name: serve_precompressed_files
        type: bool
      - name: auto_index
        type: bool
      - name: auto_index_readme
        type: bool
      item_type: struct
      name: lwan_serve_files_settings
      pos:
        line_end: 39
        line_start: 30
        source_file: /src/lwan/src/lib/lwan-mod-serve-files.h
    typedefs: []
    union: []
- function_names:
  - lwan_strbuf_has_grow_buffer_failed_flag
  - align_size
  - grow_buffer_if_needed_internal
  - grow_buffer_if_needed
  - lwan_strbuf_init_with_size
  - lwan_strbuf_init_with_fixed_buffer
  - lwan_strbuf_init
  - lwan_strbuf_new_with_size
  - lwan_strbuf_new_with_fixed_buffer
  - lwan_strbuf_new
  - lwan_strbuf_new_static
  - lwan_strbuf_free
  - lwan_strbuf_append_char
  - lwan_strbuf_append_str
  - lwan_strbuf_set_static
  - lwan_strbuf_set
  - internal_printf
  - lwan_strbuf_vprintf
  - lwan_strbuf_printf
  - lwan_strbuf_append_vprintf
  - lwan_strbuf_append_printf
  - lwan_strbuf_grow_to
  - lwan_strbuf_grow_by
  - lwan_strbuf_reset
  - lwan_strbuf_reset_trim
  - lwan_strbuf_extend_unsafe
  - lwan_strbuf_init_from_file
  - lwan_strbuf_new_from_file
  - lwan_strbuf_to_value
  - lwan_strbuf_to_iovec
  - lwan_strbuf_append_value
  - lwan_strbuf_set_value
  source_file: /src/lwan/src/lib/lwan-strbuf.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - TIMEOUT_C
  - TIMEOUT_INITIALIZER
  source_file: /src/lwan/src/lib/timeout.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TIMEOUT_PRIu
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/lwan/src/lib/timeout.h
      type_or_value: PRIu64
    - item_type: preproc_def
      name: TIMEOUT_PRIx
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/lwan/src/lib/timeout.h
      type_or_value: PRIx64
    - item_type: preproc_def
      name: TIMEOUT_PRIX
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/lwan/src/lib/timeout.h
      type_or_value: PRIX64
    - item_type: preproc_def
      name: timeout_error_t
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/lwan/src/lib/timeout.h
      type_or_value: 'int '
    - item_type: preproc_def
      name: TIMEOUT_ABS
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/lwan/src/lib/timeout.h
      type_or_value: '0x01 '
    structs:
    - fields:
      - name: flags
        type: int
      - name: expires
        type: timeout_t
      - name: '*pending'
        type: struct list_head
      - name: tqe
        type: struct list_node
      item_type: struct
      name: timeout
      pos:
        line_end: 72
        line_start: 61
        source_file: /src/lwan/src/lib/timeout.h
    typedefs:
    - item_type: typedef
      name: timeout_t
      pos:
        line_end: 45
        line_start: 45
        source_file: /src/lwan/src/lib/timeout.h
      type: uint64_t
    union: []
- function_names: []
  source_file: /src/lwan/src/lib/missing/pthread.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: count
        type: unsigned int
      - name: in
        type: unsigned int
      - name: mutex
        type: pthread_mutex_t
      - name: cond
        type: pthread_cond_t
      item_type: struct
      name: pthread_barrier
      pos:
        line_end: 32
        line_start: 27
        source_file: /src/lwan/src/lib/missing/pthread.h
    typedefs:
    - item_type: typedef
      name: pthread_barrierattr_t
      pos:
        line_end: 26
        line_start: 26
        source_file: /src/lwan/src/lib/missing/pthread.h
      type: int
    union: []
- function_names: []
  source_file: /src/lwan/src/lib/missing/unistd.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/lib/missing/fcntl.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: O_NOATIME
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/lwan/src/lib/missing/fcntl.h
      type_or_value: '0'
    - item_type: preproc_def
      name: O_PATH
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/lwan/src/lib/missing/fcntl.h
      type_or_value: '0'
    - item_type: preproc_def
      name: __O_TMPFILE
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/lwan/src/lib/missing/fcntl.h
      type_or_value: '0100000000'
    - item_type: preproc_def
      name: __O_TMPFILE
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/lwan/src/lib/missing/fcntl.h
      type_or_value: '0200000000'
    - item_type: preproc_def
      name: __O_TMPFILE
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/lwan/src/lib/missing/fcntl.h
      type_or_value: '0400000000'
    - item_type: preproc_def
      name: __O_TMPFILE
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/lwan/src/lib/missing/fcntl.h
      type_or_value: '020000000'
    - item_type: preproc_def
      name: O_TMPFILE
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/lwan/src/lib/missing/fcntl.h
      type_or_value: (__O_TMPFILE | O_DIRECTORY)
    structs: []
    typedefs: []
    union: []
- function_names:
  - strndupa_impl
  - strndupa
  - strdupa
  - streq
  - mempmove
  source_file: /src/lwan/src/lib/missing/string.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - IOPRIO_PRIO_VALUE
  - ioprio_set
  - IOPRIO_PRIO_VALUE
  - ioprio_set
  source_file: /src/lwan/src/lib/missing/ioprio.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: IOPRIO_WHO_PROCESS
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/lwan/src/lib/missing/ioprio.h
      type_or_value: '1'
    - item_type: preproc_def
      name: IOPRIO_CLASS_IDLE
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/lwan/src/lib/missing/ioprio.h
      type_or_value: '3'
    - item_type: preproc_def
      name: IOPRIO_WHO_PROCESS
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/lwan/src/lib/missing/ioprio.h
      type_or_value: '0'
    - item_type: preproc_def
      name: IOPRIO_CLASS_IDLE
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/lwan/src/lib/missing/ioprio.h
      type_or_value: '0'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/lib/missing/limits.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PATH_MAX
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/lwan/src/lib/missing/limits.h
      type_or_value: '4096'
    - item_type: preproc_def
      name: OPEN_MAX
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/lwan/src/lib/missing/limits.h
      type_or_value: NOFILE
    - item_type: preproc_def
      name: OPEN_MAX
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/lwan/src/lib/missing/limits.h
      type_or_value: '65535'
    - item_type: preproc_def
      name: OFF_MAX
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/lwan/src/lib/missing/limits.h
      type_or_value: LLONG_MAX
    - item_type: preproc_def
      name: OFF_MAX
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/lwan/src/lib/missing/limits.h
      type_or_value: LONG_MAX
    - item_type: preproc_def
      name: PAGE_SIZE
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/lwan/src/lib/missing/limits.h
      type_or_value: EXEC_PAGESIZE
    - item_type: preproc_def
      name: PAGE_SIZE
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/lwan/src/lib/missing/limits.h
      type_or_value: '4096'
    structs: []
    typedefs: []
    union: []
- function_names:
  - htobe16
  - htole16
  - be16toh
  - le16toh
  - htobe32
  - htole32
  - be32toh
  - le32toh
  - htobe64
  - htole64
  - be64toh
  - le64toh
  - be16toh
  - le16toh
  - be32toh
  - le32toh
  - be64toh
  - le64toh
  - htobe16
  - htole16
  - be16toh
  - le16toh
  - htobe32
  - htole32
  - be32toh
  - le32toh
  - htobe64
  - htole64
  - be64toh
  - le64toh
  - htobe16
  - htole16
  - be16toh
  - le16toh
  - htobe32
  - htole32
  - be32toh
  - le32toh
  - htobe64
  - htole64
  - be64toh
  - le64toh
  source_file: /src/lwan/src/lib/missing/endian.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: __BYTE_ORDER
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/lwan/src/lib/missing/endian.h
      type_or_value: BYTE_ORDER
    - item_type: preproc_def
      name: __BIG_ENDIAN
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/lwan/src/lib/missing/endian.h
      type_or_value: BIG_ENDIAN
    - item_type: preproc_def
      name: __LITTLE_ENDIAN
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/lwan/src/lib/missing/endian.h
      type_or_value: LITTLE_ENDIAN
    - item_type: preproc_def
      name: __PDP_ENDIAN
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/lwan/src/lib/missing/endian.h
      type_or_value: PDP_ENDIAN
    - item_type: preproc_def
      name: __BYTE_ORDER
      pos:
        line_end: 120
        line_start: 119
        source_file: /src/lwan/src/lib/missing/endian.h
      type_or_value: BYTE_ORDER
    - item_type: preproc_def
      name: __BIG_ENDIAN
      pos:
        line_end: 121
        line_start: 120
        source_file: /src/lwan/src/lib/missing/endian.h
      type_or_value: BIG_ENDIAN
    - item_type: preproc_def
      name: __LITTLE_ENDIAN
      pos:
        line_end: 122
        line_start: 121
        source_file: /src/lwan/src/lib/missing/endian.h
      type_or_value: LITTLE_ENDIAN
    - item_type: preproc_def
      name: __PDP_ENDIAN
      pos:
        line_end: 123
        line_start: 122
        source_file: /src/lwan/src/lib/missing/endian.h
      type_or_value: PDP_ENDIAN
    structs: []
    typedefs: []
    union: []
- function_names:
  - static_assert
  - LWAN_SELF_TEST
  - LWAN_SELF_TEST
  source_file: /src/lwan/src/lib/missing/assert.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/lib/missing/stdio.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/lib/missing/libproc.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - secure_getenv
  - umask_for_tmpfile
  - umask_for_tmpfile
  source_file: /src/lwan/src/lib/missing/stdlib.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/lib/missing/pwd.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: NSS_BUFLEN_PASSWD
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/lwan/src/lib/missing/pwd.h
      type_or_value: '1024'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/lib/missing/time.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CLOCK_MONOTONIC_COARSE
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/lwan/src/lib/missing/time.h
      type_or_value: 'CLOCK_MONOTONIC_FAST '
    - item_type: preproc_def
      name: CLOCK_MONOTONIC_COARSE
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/lwan/src/lib/missing/time.h
      type_or_value: 'CLOCK_MONOTONIC_RAW_APPROX '
    - item_type: preproc_def
      name: CLOCK_MONOTONIC_COARSE
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/lwan/src/lib/missing/time.h
      type_or_value: CLOCK_MONOTONIC
    - item_type: preproc_def
      name: CLOCK_MONOTONIC_COARSE
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/lwan/src/lib/missing/time.h
      type_or_value: '0xbebac0ca '
    - item_type: preproc_def
      name: CLOCK_MONOTONIC
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/lwan/src/lib/missing/time.h
      type_or_value: '0xbebacafe'
    structs: []
    typedefs:
    - item_type: typedef
      name: clockid_t
      pos:
        line_end: 26
        line_start: 26
        source_file: /src/lwan/src/lib/missing/time.h
      type: int
    union: []
- function_names: []
  source_file: /src/lwan/src/lib/missing/sys/epoll.h
  types:
    enum:
    - enumerators:
      - name: EPOLLIN
        value: 1 << 0
      - name: EPOLLERR
        value: 1 << 4
      - name: EPOLLOUT
        value: 1 << 1
      - name: EPOLLONESHOT
        value: 1 << 2
      - name: EPOLLRDHUP
        value: 1 << 3
      - name: EPOLLET
        value: 1 << 5
      - name: EPOLLHUP
        value: EPOLLRDHUP
      item_type: enum
      name: epoll_event_flag
      pos:
        line_end: 32
        line_start: 24
        source_file: /src/lwan/src/lib/missing/sys/epoll.h
    - enumerators:
      - name: EPOLL_CTL_ADD
      - name: EPOLL_CTL_MOD
      - name: EPOLL_CTL_DEL
      item_type: enum
      name: epoll_op
      pos:
        line_end: 34
        line_start: 34
        source_file: /src/lwan/src/lib/missing/sys/epoll.h
    - enumerators:
      - name: EPOLL_CLOEXEC
        value: 1 << 0
      item_type: enum
      name: epoll_create_flags
      pos:
        line_end: 36
        line_start: 36
        source_file: /src/lwan/src/lib/missing/sys/epoll.h
    preproc_defs: []
    structs:
    - fields:
      - name: events
        type: uint32_t
      - name: data
        type: "union {\n        void *ptr;\n        int fd;\n        uint32_t u32;\n
          \       uint64_t u64;\n    }"
      item_type: struct
      name: epoll_event
      pos:
        line_end: 46
        line_start: 38
        source_file: /src/lwan/src/lib/missing/sys/epoll.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/lib/missing/sys/ioctl.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TIOCOUTQ
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/lwan/src/lib/missing/sys/ioctl.h
      type_or_value: FIONWRITE
    - item_type: preproc_def
      name: TIOCOUTQ
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/lwan/src/lib/missing/sys/ioctl.h
      type_or_value: '0'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/lib/missing/sys/syscall.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/lib/missing/sys/sendfile.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/lib/missing/sys/types.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/lib/missing/sys/vfs.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TMPFS_MAGIC
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/lwan/src/lib/missing/sys/vfs.h
      type_or_value: '0xbebacafe'
    structs:
    - fields:
      - name: f_type
        type: int
      item_type: struct
      name: statfs
      pos:
        line_end: 34
        line_start: 32
        source_file: /src/lwan/src/lib/missing/sys/vfs.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/lib/missing/sys/sysctl.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/lib/missing/sys/socket.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MSG_MORE
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/lwan/src/lib/missing/sys/socket.h
      type_or_value: '0'
    - item_type: preproc_def
      name: MSG_NOSIGNAL
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/lwan/src/lib/missing/sys/socket.h
      type_or_value: '0'
    - item_type: preproc_def
      name: SOCK_CLOEXEC
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/lwan/src/lib/missing/sys/socket.h
      type_or_value: '0'
    - item_type: preproc_def
      name: SOCK_NONBLOCK
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/lwan/src/lib/missing/sys/socket.h
      type_or_value: '00004000'
    - item_type: preproc_def
      name: SOMAXCONN
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/lwan/src/lib/missing/sys/socket.h
      type_or_value: '128'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/lib/missing/sys/mman.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAP_HUGETLB
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/lwan/src/lib/missing/sys/mman.h
      type_or_value: '0'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/lib/missing/linux/landlock.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LANDLOCK_ACCESS_FS_EXECUTE
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/lwan/src/lib/missing/linux/landlock.h
      type_or_value: (1ULL << 0)
    - item_type: preproc_def
      name: LANDLOCK_ACCESS_FS_WRITE_FILE
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/lwan/src/lib/missing/linux/landlock.h
      type_or_value: (1ULL << 1)
    - item_type: preproc_def
      name: LANDLOCK_ACCESS_FS_READ_FILE
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/lwan/src/lib/missing/linux/landlock.h
      type_or_value: (1ULL << 2)
    - item_type: preproc_def
      name: LANDLOCK_ACCESS_FS_READ_DIR
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/lwan/src/lib/missing/linux/landlock.h
      type_or_value: (1ULL << 3)
    - item_type: preproc_def
      name: LANDLOCK_ACCESS_FS_REMOVE_DIR
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/lwan/src/lib/missing/linux/landlock.h
      type_or_value: (1ULL << 4)
    - item_type: preproc_def
      name: LANDLOCK_ACCESS_FS_REMOVE_FILE
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/lwan/src/lib/missing/linux/landlock.h
      type_or_value: (1ULL << 5)
    - item_type: preproc_def
      name: LANDLOCK_ACCESS_FS_MAKE_CHAR
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/lwan/src/lib/missing/linux/landlock.h
      type_or_value: (1ULL << 6)
    - item_type: preproc_def
      name: LANDLOCK_ACCESS_FS_MAKE_DIR
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/lwan/src/lib/missing/linux/landlock.h
      type_or_value: (1ULL << 7)
    - item_type: preproc_def
      name: LANDLOCK_ACCESS_FS_MAKE_REG
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/lwan/src/lib/missing/linux/landlock.h
      type_or_value: (1ULL << 8)
    - item_type: preproc_def
      name: LANDLOCK_ACCESS_FS_MAKE_SOCK
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/lwan/src/lib/missing/linux/landlock.h
      type_or_value: (1ULL << 9)
    - item_type: preproc_def
      name: LANDLOCK_ACCESS_FS_MAKE_FIFO
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/lwan/src/lib/missing/linux/landlock.h
      type_or_value: (1ULL << 10)
    - item_type: preproc_def
      name: LANDLOCK_ACCESS_FS_MAKE_BLOCK
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/lwan/src/lib/missing/linux/landlock.h
      type_or_value: (1ULL << 11)
    - item_type: preproc_def
      name: LANDLOCK_ACCESS_FS_MAKE_SYM
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/lwan/src/lib/missing/linux/landlock.h
      type_or_value: (1ULL << 12)
    - item_type: preproc_def
      name: LANDLOCK_ACCESS_FS_REFER
      pos:
        line_end: 67
        line_start: 66
        source_file: /src/lwan/src/lib/missing/linux/landlock.h
      type_or_value: (1ULL << 13)
    - item_type: preproc_def
      name: LANDLOCK_ACCESS_FS_TRUNCATE
      pos:
        line_end: 70
        line_start: 69
        source_file: /src/lwan/src/lib/missing/linux/landlock.h
      type_or_value: (1ULL << 14)
    - item_type: preproc_def
      name: LANDLOCK_ACCESS_FS_IOCTL_DEV
      pos:
        line_end: 73
        line_start: 72
        source_file: /src/lwan/src/lib/missing/linux/landlock.h
      type_or_value: (1ULL << 15)
    - item_type: preproc_def
      name: LANDLOCK_ACCESS_NET_BIND_TCP
      pos:
        line_end: 77
        line_start: 76
        source_file: /src/lwan/src/lib/missing/linux/landlock.h
      type_or_value: (1ULL << 0)
    - item_type: preproc_def
      name: LANDLOCK_ACCESS_NET_CONNECT_TCP
      pos:
        line_end: 80
        line_start: 79
        source_file: /src/lwan/src/lib/missing/linux/landlock.h
      type_or_value: (1ULL << 1)
    - item_type: preproc_def
      name: LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET
      pos:
        line_end: 84
        line_start: 83
        source_file: /src/lwan/src/lib/missing/linux/landlock.h
      type_or_value: (1ULL << 0)
    - item_type: preproc_def
      name: LANDLOCK_SCOPE_SIGNAL
      pos:
        line_end: 87
        line_start: 86
        source_file: /src/lwan/src/lib/missing/linux/landlock.h
      type_or_value: (1ULL << 1)
    - item_type: preproc_def
      name: LANDLOCK_RESTRICT_SELF_LOG_SAME_EXEC_OFF
      pos:
        line_end: 91
        line_start: 90
        source_file: /src/lwan/src/lib/missing/linux/landlock.h
      type_or_value: (1U << 0)
    - item_type: preproc_def
      name: LANDLOCK_RESTRICT_SELF_LOG_NEW_EXEC_ON
      pos:
        line_end: 94
        line_start: 93
        source_file: /src/lwan/src/lib/missing/linux/landlock.h
      type_or_value: (1U << 1)
    - item_type: preproc_def
      name: LANDLOCK_RESTRICT_SELF_LOG_SUBDOMAINS_OFF
      pos:
        line_end: 97
        line_start: 96
        source_file: /src/lwan/src/lib/missing/linux/landlock.h
      type_or_value: (1U << 2)
    - item_type: preproc_def
      name: LANDLOCK_RESTRICT_SELF_TSYNC
      pos:
        line_end: 100
        line_start: 99
        source_file: /src/lwan/src/lib/missing/linux/landlock.h
      type_or_value: (1U << 3)
    structs: []
    typedefs: []
    union: []
- function_names:
  - capset
  source_file: /src/lwan/src/lib/missing/linux/capability.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: _LINUX_CAPABILITY_VERSION_1
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/lwan/src/lib/missing/linux/capability.h
      type_or_value: '0'
    structs:
    - fields:
      - name: effective
        type: unsigned int
      item_type: struct
      name: __user_cap_data_struct
      pos:
        line_end: 43
        line_start: 41
        source_file: /src/lwan/src/lib/missing/linux/capability.h
    - fields:
      - name: version
        type: unsigned int
      - name: pid
        type: int
      item_type: struct
      name: __user_cap_header_struct
      pos:
        line_end: 49
        line_start: 45
        source_file: /src/lwan/src/lib/missing/linux/capability.h
    typedefs: []
    union: []
- function_names:
  - TRACE
  - getcontext
  - setcontext
  - swapcontext
  source_file: /src/lwan/src/3rdparty/libucontext/libucontext_posix.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - check_arg
  - f1
  - f2
  - main
  source_file: /src/lwan/src/3rdparty/libucontext/test_libucontext.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - check_arg
  - f1
  - f2
  - main
  source_file: /src/lwan/src/3rdparty/libucontext/test_libucontext_posix.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - AREG_OFFSET
  source_file: /src/lwan/src/3rdparty/libucontext/arch/s390x/defs.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: REG_SZ
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/lwan/src/3rdparty/libucontext/arch/s390x/defs.h
      type_or_value: (8)
    - item_type: preproc_def
      name: AREG_SZ
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/lwan/src/3rdparty/libucontext/arch/s390x/defs.h
      type_or_value: (4)
    - item_type: preproc_def
      name: MCONTEXT_GREGS
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/lwan/src/3rdparty/libucontext/arch/s390x/defs.h
      type_or_value: (56)
    - item_type: preproc_def
      name: MCONTEXT_AREGS
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/lwan/src/3rdparty/libucontext/arch/s390x/defs.h
      type_or_value: (184)
    - item_type: preproc_def
      name: MCONTEXT_FPREGS
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/lwan/src/3rdparty/libucontext/arch/s390x/defs.h
      type_or_value: (248)
    structs: []
    typedefs: []
    union: []
- function_names:
  - libucontext_makecontext
  source_file: /src/lwan/src/3rdparty/libucontext/arch/s390x/makecontext.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/3rdparty/libucontext/arch/s390x/include/libucontext/bits.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: mask
        type: unsigned long
      - name: addr
        type: unsigned long
      item_type: struct
      name: libucontext_psw_t
      pos:
        line_end: 8
        line_start: 5
        source_file: /src/lwan/src/3rdparty/libucontext/arch/s390x/include/libucontext/bits.h
    - fields:
      - name: fpc
        type: unsigned
      - name: fprs[16]
        type: libucontext_fpreg_t
      item_type: struct
      name: libucontext_fpregset_t
      pos:
        line_end: 18
        line_start: 15
        source_file: /src/lwan/src/3rdparty/libucontext/arch/s390x/include/libucontext/bits.h
    - fields:
      - name: psw
        type: libucontext_psw_t
      - name: gregs[16]
        type: unsigned long
      - name: aregs[16]
        type: unsigned
      - name: fpregs
        type: libucontext_fpregset_t
      item_type: struct
      name: libucontext_mcontext_t
      pos:
        line_end: 25
        line_start: 20
        source_file: /src/lwan/src/3rdparty/libucontext/arch/s390x/include/libucontext/bits.h
    - fields:
      - name: '*ss_sp'
        type: void
      - name: ss_flags
        type: int
      - name: ss_size
        type: size_t
      item_type: struct
      name: libucontext_stack_t
      pos:
        line_end: 31
        line_start: 27
        source_file: /src/lwan/src/3rdparty/libucontext/arch/s390x/include/libucontext/bits.h
    - fields:
      - name: uc_flags
        type: unsigned long
      - name: '*uc_link'
        type: struct libucontext_ucontext
      - name: uc_stack
        type: libucontext_stack_t
      - name: uc_mcontext
        type: libucontext_mcontext_t
      item_type: struct
      name: libucontext_ucontext
      pos:
        line_end: 38
        line_start: 33
        source_file: /src/lwan/src/3rdparty/libucontext/arch/s390x/include/libucontext/bits.h
    typedefs:
    - item_type: typedef
      name: libucontext_greg_t
      pos:
        line_end: 3
        line_start: 3
        source_file: /src/lwan/src/3rdparty/libucontext/arch/s390x/include/libucontext/bits.h
      type: unsigned long
    union:
    - fields:
      - name: d
        type: double
      - name: f
        type: float
      item_type: union
      name: libucontext_fpreg_t
      pos:
        line_end: 13
        line_start: 10
        source_file: /src/lwan/src/3rdparty/libucontext/arch/s390x/include/libucontext/bits.h
- function_names:
  - FETCH_LINKPTR
  source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/defs.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: REG_SZ
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/defs.h
      type_or_value: (8)
    - item_type: preproc_def
      name: MCONTEXT_GREGS
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/defs.h
      type_or_value: (176)
    - item_type: preproc_def
      name: REG_PC
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/defs.h
      type_or_value: (0)
    - item_type: preproc_def
      name: REG_RA
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/defs.h
      type_or_value: (1)
    - item_type: preproc_def
      name: REG_SP
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/defs.h
      type_or_value: (2)
    - item_type: preproc_def
      name: REG_S0
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/defs.h
      type_or_value: (8)
    - item_type: preproc_def
      name: REG_S1
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/defs.h
      type_or_value: (9)
    - item_type: preproc_def
      name: REG_A0
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/defs.h
      type_or_value: (10)
    - item_type: preproc_def
      name: REG_A1
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/defs.h
      type_or_value: (11)
    - item_type: preproc_def
      name: REG_A2
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/defs.h
      type_or_value: (12)
    - item_type: preproc_def
      name: REG_A3
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/defs.h
      type_or_value: (13)
    - item_type: preproc_def
      name: REG_A4
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/defs.h
      type_or_value: (14)
    - item_type: preproc_def
      name: REG_A5
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/defs.h
      type_or_value: (15)
    - item_type: preproc_def
      name: REG_A6
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/defs.h
      type_or_value: (16)
    - item_type: preproc_def
      name: REG_A7
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/defs.h
      type_or_value: (17)
    - item_type: preproc_def
      name: REG_S2
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/defs.h
      type_or_value: (18)
    - item_type: preproc_def
      name: REG_S3
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/defs.h
      type_or_value: (19)
    - item_type: preproc_def
      name: REG_S4
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/defs.h
      type_or_value: (20)
    - item_type: preproc_def
      name: REG_S5
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/defs.h
      type_or_value: (21)
    - item_type: preproc_def
      name: REG_S6
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/defs.h
      type_or_value: (22)
    - item_type: preproc_def
      name: REG_S7
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/defs.h
      type_or_value: (23)
    - item_type: preproc_def
      name: REG_S8
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/defs.h
      type_or_value: (24)
    - item_type: preproc_def
      name: REG_S9
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/defs.h
      type_or_value: (25)
    - item_type: preproc_def
      name: REG_S10
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/defs.h
      type_or_value: (26)
    - item_type: preproc_def
      name: REG_S11
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/defs.h
      type_or_value: (27)
    - item_type: preproc_def
      name: PC_OFFSET
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/defs.h
      type_or_value: REG_OFFSET(REG_PC)
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/trampoline.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - libucontext_makecontext
  source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/makecontext.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/include/libucontext/bits.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: __f[32]
        type: unsigned int
      - name: __fcsr
        type: unsigned int
      item_type: struct
      name: libucontext__riscv_mc_f_ext_state
      pos:
        line_end: 9
        line_start: 6
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/include/libucontext/bits.h
    - fields:
      - name: __f[32]
        type: unsigned long long
      - name: __fcsr
        type: unsigned int
      item_type: struct
      name: libucontext__riscv_mc_d_ext_state
      pos:
        line_end: 14
        line_start: 11
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/include/libucontext/bits.h
    - fields:
      - name: __f[64]
        type: unsigned long long
      - name: __fcsr
        type: unsigned int
      - name: __reserved[3]
        type: unsigned int
      item_type: struct
      name: libucontext__riscv_mc_q_ext_state
      pos:
        line_end: 20
        line_start: 16
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/include/libucontext/bits.h
    - fields:
      - name: __gregs
        type: libucontext__riscv_mc_gp_state
      - name: __fpregs
        type: union libucontext__riscv_mc_fp_state
      item_type: struct
      name: libucontext_mcontext
      pos:
        line_end: 31
        line_start: 28
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/include/libucontext/bits.h
    - fields:
      - name: '*ss_sp'
        type: void
      - name: ss_flags
        type: int
      - name: ss_size
        type: size_t
      item_type: struct
      name: libucontext_stack_t
      pos:
        line_end: 37
        line_start: 33
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/include/libucontext/bits.h
    - fields:
      - name: uc_flags
        type: unsigned long
      - name: '*uc_link'
        type: struct libucontext_ucontext
      - name: uc_stack
        type: libucontext_stack_t
      - name: __pad[128]
        type: unsigned char
      - name: uc_mcontext
        type: libucontext_mcontext_t
      item_type: struct
      name: libucontext_ucontext
      pos:
        line_end: 45
        line_start: 39
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/include/libucontext/bits.h
    typedefs:
    - item_type: typedef
      name: libucontext_greg_t
      pos:
        line_end: 3
        line_start: 3
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/include/libucontext/bits.h
      type: unsigned long
    - item_type: typedef
      name: libucontext__riscv_mc_gp_state[32]
      pos:
        line_end: 4
        line_start: 4
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/include/libucontext/bits.h
      type: unsigned long
    union:
    - fields:
      - name: __f
        type: struct libucontext__riscv_mc_f_ext_state
      - name: __d
        type: struct libucontext__riscv_mc_d_ext_state
      - name: __q
        type: struct libucontext__riscv_mc_q_ext_state
      item_type: union
      name: libucontext__riscv_mc_fp_state
      pos:
        line_end: 26
        line_start: 22
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv64/include/libucontext/bits.h
- function_names:
  - FETCH_LINKPTR
  source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/defs.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: REG_SZ
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/defs.h
      type_or_value: (4)
    - item_type: preproc_def
      name: MCONTEXT_GREGS
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/defs.h
      type_or_value: (24)
    - item_type: preproc_def
      name: REG_D0
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/defs.h
      type_or_value: (0)
    - item_type: preproc_def
      name: REG_D1
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/defs.h
      type_or_value: (1)
    - item_type: preproc_def
      name: REG_D2
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/defs.h
      type_or_value: (2)
    - item_type: preproc_def
      name: REG_D3
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/defs.h
      type_or_value: (3)
    - item_type: preproc_def
      name: REG_D4
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/defs.h
      type_or_value: (4)
    - item_type: preproc_def
      name: REG_D5
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/defs.h
      type_or_value: (5)
    - item_type: preproc_def
      name: REG_D6
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/defs.h
      type_or_value: (6)
    - item_type: preproc_def
      name: REG_D7
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/defs.h
      type_or_value: (7)
    - item_type: preproc_def
      name: REG_A0
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/defs.h
      type_or_value: (8)
    - item_type: preproc_def
      name: REG_A1
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/defs.h
      type_or_value: (9)
    - item_type: preproc_def
      name: REG_A2
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/defs.h
      type_or_value: (10)
    - item_type: preproc_def
      name: REG_A3
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/defs.h
      type_or_value: (11)
    - item_type: preproc_def
      name: REG_A4
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/defs.h
      type_or_value: (12)
    - item_type: preproc_def
      name: REG_A5
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/defs.h
      type_or_value: (13)
    - item_type: preproc_def
      name: REG_A6
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/defs.h
      type_or_value: (14)
    - item_type: preproc_def
      name: REG_A7
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/defs.h
      type_or_value: (15)
    - item_type: preproc_def
      name: REG_SP
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/defs.h
      type_or_value: (15)
    - item_type: preproc_def
      name: REG_PC
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/defs.h
      type_or_value: (16)
    - item_type: preproc_def
      name: REG_PS
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/defs.h
      type_or_value: (17)
    - item_type: preproc_def
      name: PC_OFFSET
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/defs.h
      type_or_value: REG_OFFSET(REG_PC)
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/trampoline.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - libucontext_makecontext
  source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/makecontext.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/include/libucontext/bits.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*ss_sp'
        type: void
      - name: ss_flags
        type: int
      - name: ss_size
        type: size_t
      item_type: struct
      name: sigaltstack
      pos:
        line_end: 7
        line_start: 3
        source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/include/libucontext/bits.h
    - fields:
      - name: f_pcr
        type: int
      item_type: struct
      name: libucontext_fpregset_t
      pos:
        line_end: 12
        line_start: 10
        source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/include/libucontext/bits.h
    - fields:
      - name: version
        type: int
      - name: gregs
        type: libucontext_gregset_t
      - name: fpregs
        type: libucontext_fpregset_t
      item_type: struct
      name: libucontext_mcontext_t
      pos:
        line_end: 18
        line_start: 14
        source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/include/libucontext/bits.h
    - fields:
      - name: uc_flags
        type: unsigned long
      - name: '*uc_link'
        type: struct libucontext_ucontext
      - name: uc_stack
        type: libucontext_stack_t
      - name: uc_mcontext
        type: libucontext_mcontext_t
      item_type: struct
      name: libucontext_ucontext
      pos:
        line_end: 25
        line_start: 20
        source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/include/libucontext/bits.h
    typedefs:
    - item_type: typedef
      name: libucontext_greg_t
      pos:
        line_end: 9
        line_start: 9
        source_file: /src/lwan/src/3rdparty/libucontext/arch/m68k/include/libucontext/bits.h
      type: int
    union: []
- function_names:
  - FETCH_LINKPTR
  source_file: /src/lwan/src/3rdparty/libucontext/arch/or1k/defs.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: REG_SZ
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/lwan/src/3rdparty/libucontext/arch/or1k/defs.h
      type_or_value: (4)
    - item_type: preproc_def
      name: MCONTEXT_GREGS
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/lwan/src/3rdparty/libucontext/arch/or1k/defs.h
      type_or_value: (20)
    - item_type: preproc_def
      name: REG_SP
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/lwan/src/3rdparty/libucontext/arch/or1k/defs.h
      type_or_value: (1)
    - item_type: preproc_def
      name: REG_FP
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/lwan/src/3rdparty/libucontext/arch/or1k/defs.h
      type_or_value: (2)
    - item_type: preproc_def
      name: REG_RA
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/lwan/src/3rdparty/libucontext/arch/or1k/defs.h
      type_or_value: (9)
    - item_type: preproc_def
      name: REG_SA
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/lwan/src/3rdparty/libucontext/arch/or1k/defs.h
      type_or_value: (11)
    - item_type: preproc_def
      name: REG_LR
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/lwan/src/3rdparty/libucontext/arch/or1k/defs.h
      type_or_value: (14)
    - item_type: preproc_def
      name: REG_PC
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/lwan/src/3rdparty/libucontext/arch/or1k/defs.h
      type_or_value: (33)
    - item_type: preproc_def
      name: REG_SR
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/lwan/src/3rdparty/libucontext/arch/or1k/defs.h
      type_or_value: (34)
    - item_type: preproc_def
      name: PC_OFFSET
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/lwan/src/3rdparty/libucontext/arch/or1k/defs.h
      type_or_value: REG_OFFSET(REG_PC)
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/3rdparty/libucontext/arch/or1k/trampoline.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - libucontext_makecontext
  source_file: /src/lwan/src/3rdparty/libucontext/arch/or1k/makecontext.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/3rdparty/libucontext/arch/or1k/include/libucontext/bits.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*ss_sp'
        type: void
      - name: ss_flags
        type: int
      - name: ss_size
        type: size_t
      item_type: struct
      name: sigaltstack
      pos:
        line_end: 7
        line_start: 3
        source_file: /src/lwan/src/3rdparty/libucontext/arch/or1k/include/libucontext/bits.h
    - fields:
      - name: regs
        type: "struct {\n\t\tlibucontext_gregset_t gpr;\n\t\tlibucontext_greg_t pc;\n\t\tlibucontext_greg_t
          sr;\n\t}"
      - name: oldmask
        type: unsigned long
      item_type: struct
      name: libucontext_mcontext_t
      pos:
        line_end: 18
        line_start: 11
        source_file: /src/lwan/src/3rdparty/libucontext/arch/or1k/include/libucontext/bits.h
    - fields:
      - name: uc_flags
        type: unsigned long
      - name: '*uc_link'
        type: struct libucontext_ucontext
      - name: uc_stack
        type: libucontext_stack_t
      - name: uc_mcontext
        type: libucontext_mcontext_t
      item_type: struct
      name: libucontext_ucontext
      pos:
        line_end: 25
        line_start: 20
        source_file: /src/lwan/src/3rdparty/libucontext/arch/or1k/include/libucontext/bits.h
    typedefs:
    - item_type: typedef
      name: libucontext_greg_t
      pos:
        line_end: 9
        line_start: 9
        source_file: /src/lwan/src/3rdparty/libucontext/arch/or1k/include/libucontext/bits.h
      type: int
    union: []
- function_names:
  - FETCH_LINKPTR
  source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/defs.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: REG_GS
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/defs.h
      type_or_value: (0)
    - item_type: preproc_def
      name: REG_FS
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/defs.h
      type_or_value: (1)
    - item_type: preproc_def
      name: REG_ES
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/defs.h
      type_or_value: (2)
    - item_type: preproc_def
      name: REG_DS
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/defs.h
      type_or_value: (3)
    - item_type: preproc_def
      name: REG_EDI
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/defs.h
      type_or_value: (4)
    - item_type: preproc_def
      name: REG_ESI
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/defs.h
      type_or_value: (5)
    - item_type: preproc_def
      name: REG_EBP
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/defs.h
      type_or_value: (6)
    - item_type: preproc_def
      name: REG_ESP
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/defs.h
      type_or_value: (7)
    - item_type: preproc_def
      name: REG_EBX
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/defs.h
      type_or_value: (8)
    - item_type: preproc_def
      name: REG_EDX
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/defs.h
      type_or_value: (9)
    - item_type: preproc_def
      name: REG_ECX
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/defs.h
      type_or_value: (10)
    - item_type: preproc_def
      name: REG_EAX
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/defs.h
      type_or_value: (11)
    - item_type: preproc_def
      name: REG_EIP
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/defs.h
      type_or_value: (14)
    - item_type: preproc_def
      name: REG_SZ
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/defs.h
      type_or_value: (4)
    - item_type: preproc_def
      name: MCONTEXT_GREGS
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/defs.h
      type_or_value: (20)
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/trampoline.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - libucontext_makecontext
  source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/makecontext.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/include/libucontext/bits.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: REG_GS
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/include/libucontext/bits.h
      type_or_value: (0)
    - item_type: preproc_def
      name: REG_FS
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/include/libucontext/bits.h
      type_or_value: (1)
    - item_type: preproc_def
      name: REG_ES
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/include/libucontext/bits.h
      type_or_value: (2)
    - item_type: preproc_def
      name: REG_DS
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/include/libucontext/bits.h
      type_or_value: (3)
    - item_type: preproc_def
      name: REG_EDI
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/include/libucontext/bits.h
      type_or_value: (4)
    - item_type: preproc_def
      name: REG_ESI
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/include/libucontext/bits.h
      type_or_value: (5)
    - item_type: preproc_def
      name: REG_EBP
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/include/libucontext/bits.h
      type_or_value: (6)
    - item_type: preproc_def
      name: REG_ESP
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/include/libucontext/bits.h
      type_or_value: (7)
    - item_type: preproc_def
      name: REG_EBX
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/include/libucontext/bits.h
      type_or_value: (8)
    - item_type: preproc_def
      name: REG_EDX
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/include/libucontext/bits.h
      type_or_value: (9)
    - item_type: preproc_def
      name: REG_ECX
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/include/libucontext/bits.h
      type_or_value: (10)
    - item_type: preproc_def
      name: REG_EAX
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/include/libucontext/bits.h
      type_or_value: (11)
    - item_type: preproc_def
      name: REG_EIP
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/include/libucontext/bits.h
      type_or_value: (14)
    structs:
    - fields:
      - name: cw
        type: unsigned long
      - name: _st[8]
        type: "struct {\n\t\tunsigned short significand[4], exponent;\n\t}"
      - name: status
        type: unsigned long
      item_type: struct
      name: libucontext_fpstate
      pos:
        line_end: 25
        line_start: 19
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/include/libucontext/bits.h
    - fields:
      - name: gregs
        type: libucontext_gregset_t
      - name: fpregs
        type: libucontext_fpregset_t
      - name: oldmask
        type: unsigned long
      item_type: struct
      name: libucontext_mcontext_t
      pos:
        line_end: 31
        line_start: 27
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/include/libucontext/bits.h
    - fields:
      - name: '*ss_sp'
        type: void
      - name: ss_flags
        type: int
      - name: ss_size
        type: size_t
      item_type: struct
      name: libucontext_stack_t
      pos:
        line_end: 37
        line_start: 33
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/include/libucontext/bits.h
    - fields:
      - name: uc_flags
        type: unsigned long
      - name: '*uc_link'
        type: struct libucontext_ucontext
      - name: uc_stack
        type: libucontext_stack_t
      - name: uc_mcontext
        type: libucontext_mcontext_t
      item_type: struct
      name: libucontext_ucontext
      pos:
        line_end: 44
        line_start: 39
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/include/libucontext/bits.h
    typedefs:
    - item_type: typedef
      name: libucontext_greg_t
      pos:
        line_end: 17
        line_start: 17
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86/include/libucontext/bits.h
      type: int
    union: []
- function_names:
  - FETCH_LINKPTR
  source_file: /src/lwan/src/3rdparty/libucontext/arch/sh/defs.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: REG_SZ
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/lwan/src/3rdparty/libucontext/arch/sh/defs.h
      type_or_value: (4)
    - item_type: preproc_def
      name: MCONTEXT_GREGS
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/lwan/src/3rdparty/libucontext/arch/sh/defs.h
      type_or_value: (24)
    - item_type: preproc_def
      name: REG_SP
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/lwan/src/3rdparty/libucontext/arch/sh/defs.h
      type_or_value: (15)
    - item_type: preproc_def
      name: REG_PC
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/lwan/src/3rdparty/libucontext/arch/sh/defs.h
      type_or_value: (16)
    - item_type: preproc_def
      name: REG_PR
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/lwan/src/3rdparty/libucontext/arch/sh/defs.h
      type_or_value: (17)
    - item_type: preproc_def
      name: REG_SR
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/lwan/src/3rdparty/libucontext/arch/sh/defs.h
      type_or_value: (18)
    - item_type: preproc_def
      name: REG_GBR
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/lwan/src/3rdparty/libucontext/arch/sh/defs.h
      type_or_value: (19)
    - item_type: preproc_def
      name: REG_MACH
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/lwan/src/3rdparty/libucontext/arch/sh/defs.h
      type_or_value: (20)
    - item_type: preproc_def
      name: REG_MACL
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/lwan/src/3rdparty/libucontext/arch/sh/defs.h
      type_or_value: (21)
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/3rdparty/libucontext/arch/sh/trampoline.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - libucontext_makecontext
  source_file: /src/lwan/src/3rdparty/libucontext/arch/sh/makecontext.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/3rdparty/libucontext/arch/sh/include/libucontext/bits.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: oldmask
        type: unsigned long
      - name: gregs[16]
        type: unsigned long
      - name: pc
        type: unsigned long
      - name: gbr
        type: unsigned long
      - name: fpregs[16]
        type: unsigned long
      - name: xfpregs[16]
        type: unsigned long
      - name: fpscr
        type: unsigned int
      item_type: struct
      name: sigcontext
      pos:
        line_end: 13
        line_start: 5
        source_file: /src/lwan/src/3rdparty/libucontext/arch/sh/include/libucontext/bits.h
    - fields:
      - name: '*ss_sp'
        type: void
      - name: ss_flags
        type: int
      - name: ss_size
        type: size_t
      item_type: struct
      name: libucontext_stack_t
      pos:
        line_end: 19
        line_start: 15
        source_file: /src/lwan/src/3rdparty/libucontext/arch/sh/include/libucontext/bits.h
    - fields:
      - name: uc_flags
        type: unsigned long
      - name: '*uc_link'
        type: struct libucontext_ucontext
      - name: uc_stack
        type: libucontext_stack_t
      - name: uc_mcontext
        type: libucontext_mcontext_t
      item_type: struct
      name: libucontext_ucontext
      pos:
        line_end: 26
        line_start: 21
        source_file: /src/lwan/src/3rdparty/libucontext/arch/sh/include/libucontext/bits.h
    typedefs:
    - item_type: typedef
      name: libucontext_greg_t
      pos:
        line_end: 3
        line_start: 3
        source_file: /src/lwan/src/3rdparty/libucontext/arch/sh/include/libucontext/bits.h
      type: unsigned long
    - item_type: typedef
      name: libucontext_freg_t
      pos:
        line_end: 4
        line_start: 4
        source_file: /src/lwan/src/3rdparty/libucontext/arch/sh/include/libucontext/bits.h
      type: unsigned long
    union: []
- function_names:
  - SETUP_FRAME
  - PUSH_FRAME
  - POP_FRAME
  - ENT
  source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: REG_SZ
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (4)
    - item_type: preproc_def
      name: REG_R0
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (0)
    - item_type: preproc_def
      name: REG_R1
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (1)
    - item_type: preproc_def
      name: REG_R2
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (2)
    - item_type: preproc_def
      name: REG_R3
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (3)
    - item_type: preproc_def
      name: REG_R4
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (4)
    - item_type: preproc_def
      name: REG_R5
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (5)
    - item_type: preproc_def
      name: REG_R6
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (6)
    - item_type: preproc_def
      name: REG_R7
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (7)
    - item_type: preproc_def
      name: REG_R8
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (8)
    - item_type: preproc_def
      name: REG_R9
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (9)
    - item_type: preproc_def
      name: REG_R10
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (10)
    - item_type: preproc_def
      name: REG_R11
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (11)
    - item_type: preproc_def
      name: REG_R12
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (12)
    - item_type: preproc_def
      name: REG_R13
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (13)
    - item_type: preproc_def
      name: REG_R14
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (14)
    - item_type: preproc_def
      name: REG_R15
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (15)
    - item_type: preproc_def
      name: REG_R16
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (16)
    - item_type: preproc_def
      name: REG_R17
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (17)
    - item_type: preproc_def
      name: REG_R18
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (18)
    - item_type: preproc_def
      name: REG_R19
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (19)
    - item_type: preproc_def
      name: REG_R20
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (20)
    - item_type: preproc_def
      name: REG_R21
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (21)
    - item_type: preproc_def
      name: REG_R22
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (22)
    - item_type: preproc_def
      name: REG_R23
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (23)
    - item_type: preproc_def
      name: REG_R24
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (24)
    - item_type: preproc_def
      name: REG_R25
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (25)
    - item_type: preproc_def
      name: REG_R26
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (26)
    - item_type: preproc_def
      name: REG_R27
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (27)
    - item_type: preproc_def
      name: REG_R28
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (28)
    - item_type: preproc_def
      name: REG_R29
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (29)
    - item_type: preproc_def
      name: REG_R30
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (30)
    - item_type: preproc_def
      name: REG_R31
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (31)
    - item_type: preproc_def
      name: REG_A0
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (4)
    - item_type: preproc_def
      name: REG_SP
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (29)
    - item_type: preproc_def
      name: REG_FP
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (30)
    - item_type: preproc_def
      name: REG_LNK
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (16)
    - item_type: preproc_def
      name: REG_ENTRY
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (25)
    - item_type: preproc_def
      name: MCONTEXT_GREGS
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (40)
    - item_type: preproc_def
      name: MCONTEXT_PC
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (32)
    - item_type: preproc_def
      name: UCONTEXT_UC_LINK
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (4)
    - item_type: preproc_def
      name: UCONTEXT_STACK_PTR
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (8)
    - item_type: preproc_def
      name: UCONTEXT_STACK_SIZE
      pos:
        line_end: 67
        line_start: 66
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: (12)
    - item_type: preproc_def
      name: ALSZ
      pos:
        line_end: 70
        line_start: 69
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: '15'
    - item_type: preproc_def
      name: ALMASK
      pos:
        line_end: 71
        line_start: 70
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: ~15
    - item_type: preproc_def
      name: FRAMESZ
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: "(((LOCALSZ * REG_SZ) + ALSZ) & ALMASK)\t\t// 16"
    - item_type: preproc_def
      name: GPOFF
      pos:
        line_end: 73
        line_start: 72
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/defs.h
      type_or_value: "(FRAMESZ - (LOCALSZ * REG_SZ))\t\t\t// [16 - 16]"
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/include/libucontext/bits.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: regmask
        type: unsigned
      - name: pc
        type: unsigned long long
      - name: ownedfp
        type: unsigned
      - name: mdhi
        type: unsigned long long
      - name: hi1
        type: unsigned long
      item_type: struct
      name: libucontext_mcontext_t
      pos:
        line_end: 11
        line_start: 5
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/include/libucontext/bits.h
    - fields:
      - name: '*ss_sp'
        type: void
      - name: ss_size
        type: size_t
      - name: ss_flags
        type: int
      item_type: struct
      name: libucontext_stack_t
      pos:
        line_end: 17
        line_start: 13
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/include/libucontext/bits.h
    - fields:
      - name: uc_flags
        type: unsigned long
      - name: '*uc_link'
        type: struct libucontext_ucontext
      - name: uc_stack
        type: libucontext_stack_t
      - name: uc_mcontext
        type: libucontext_mcontext_t
      item_type: struct
      name: libucontext_ucontext
      pos:
        line_end: 24
        line_start: 19
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/include/libucontext/bits.h
    typedefs:
    - item_type: typedef
      name: libucontext_greg_t
      pos:
        line_end: 3
        line_start: 3
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips/include/libucontext/bits.h
      type: unsigned long long
    union: []
- function_names:
  - libucontext_trampoline
  source_file: /src/lwan/src/3rdparty/libucontext/arch/common/common-trampoline.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - TYPE
  - PROC_NAME
  - PROC_NAME
  - FUNC
  - END
  - ALIAS
  - REG_OFFSET
  source_file: /src/lwan/src/3rdparty/libucontext/arch/common/common-defs.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/3rdparty/libucontext/arch/common/include/libucontext/bits.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: libucontext_greg_t
      pos:
        line_end: 7
        line_start: 7
        source_file: /src/lwan/src/3rdparty/libucontext/arch/common/include/libucontext/bits.h
      type: greg_t
    - item_type: typedef
      name: libucontext_ucontext_t
      pos:
        line_end: 8
        line_start: 8
        source_file: /src/lwan/src/3rdparty/libucontext/arch/common/include/libucontext/bits.h
      type: ucontext_t
    union: []
- function_names:
  - FETCH_LINKPTR
  source_file: /src/lwan/src/3rdparty/libucontext/arch/aarch64/defs.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: REG_SZ
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/lwan/src/3rdparty/libucontext/arch/aarch64/defs.h
      type_or_value: (8)
    - item_type: preproc_def
      name: MCONTEXT_GREGS
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/lwan/src/3rdparty/libucontext/arch/aarch64/defs.h
      type_or_value: (184)
    - item_type: preproc_def
      name: R0_OFFSET
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/lwan/src/3rdparty/libucontext/arch/aarch64/defs.h
      type_or_value: REG_OFFSET(0)
    - item_type: preproc_def
      name: SP_OFFSET
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/lwan/src/3rdparty/libucontext/arch/aarch64/defs.h
      type_or_value: '432'
    - item_type: preproc_def
      name: PC_OFFSET
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/lwan/src/3rdparty/libucontext/arch/aarch64/defs.h
      type_or_value: '440'
    - item_type: preproc_def
      name: PSTATE_OFFSET
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/lwan/src/3rdparty/libucontext/arch/aarch64/defs.h
      type_or_value: '448'
    - item_type: preproc_def
      name: FPSIMD_CONTEXT_OFFSET
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/lwan/src/3rdparty/libucontext/arch/aarch64/defs.h
      type_or_value: '464'
    - item_type: preproc_def
      name: FPSIMD_MAGIC
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/lwan/src/3rdparty/libucontext/arch/aarch64/defs.h
      type_or_value: '0x46508001'
    - item_type: preproc_def
      name: ESR_MAGIC
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/lwan/src/3rdparty/libucontext/arch/aarch64/defs.h
      type_or_value: '0x45535201'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/3rdparty/libucontext/arch/aarch64/trampoline.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - libucontext_makecontext
  source_file: /src/lwan/src/3rdparty/libucontext/arch/aarch64/makecontext.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/3rdparty/libucontext/arch/aarch64/include/libucontext/bits.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: vregs[32]
        type: __uint128_t
      - name: fpsr
        type: unsigned int
      - name: fpcr
        type: unsigned int
      item_type: struct
      name: libucontext_fpregset_t
      pos:
        line_end: 10
        line_start: 6
        source_file: /src/lwan/src/3rdparty/libucontext/arch/aarch64/include/libucontext/bits.h
    - fields:
      - name: fault_address
        type: unsigned long
      - name: regs[31]
        type: unsigned long
      - name: sp
        type: unsigned long
      - name: __reserved[256]
        type: long double
      item_type: struct
      name: sigcontext
      pos:
        line_end: 17
        line_start: 12
        source_file: /src/lwan/src/3rdparty/libucontext/arch/aarch64/include/libucontext/bits.h
    - fields:
      - name: '*ss_sp'
        type: void
      - name: ss_flags
        type: int
      - name: ss_size
        type: size_t
      item_type: struct
      name: libucontext_stack_t
      pos:
        line_end: 23
        line_start: 19
        source_file: /src/lwan/src/3rdparty/libucontext/arch/aarch64/include/libucontext/bits.h
    - fields:
      - name: uc_flags
        type: unsigned long
      - name: '*uc_link'
        type: struct libucontext_ucontext
      - name: uc_stack
        type: libucontext_stack_t
      - name: __pad[136]
        type: unsigned char
      - name: uc_mcontext
        type: libucontext_mcontext_t
      item_type: struct
      name: libucontext_ucontext
      pos:
        line_end: 31
        line_start: 25
        source_file: /src/lwan/src/3rdparty/libucontext/arch/aarch64/include/libucontext/bits.h
    typedefs:
    - item_type: typedef
      name: libucontext_greg_t
      pos:
        line_end: 3
        line_start: 3
        source_file: /src/lwan/src/3rdparty/libucontext/arch/aarch64/include/libucontext/bits.h
      type: unsigned long
    - item_type: typedef
      name: libucontext_gregset_t[34]
      pos:
        line_end: 4
        line_start: 4
        source_file: /src/lwan/src/3rdparty/libucontext/arch/aarch64/include/libucontext/bits.h
      type: unsigned long
    union: []
- function_names: []
  source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: REG_R0
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (0)
    - item_type: preproc_def
      name: REG_R1
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (1)
    - item_type: preproc_def
      name: REG_R2
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (2)
    - item_type: preproc_def
      name: REG_R3
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (3)
    - item_type: preproc_def
      name: REG_R4
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (4)
    - item_type: preproc_def
      name: REG_R5
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (5)
    - item_type: preproc_def
      name: REG_R6
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (6)
    - item_type: preproc_def
      name: REG_R7
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (7)
    - item_type: preproc_def
      name: REG_R8
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (8)
    - item_type: preproc_def
      name: REG_R9
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (9)
    - item_type: preproc_def
      name: REG_R10
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (10)
    - item_type: preproc_def
      name: REG_R11
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (11)
    - item_type: preproc_def
      name: REG_R12
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (12)
    - item_type: preproc_def
      name: REG_R13
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (13)
    - item_type: preproc_def
      name: REG_R14
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (14)
    - item_type: preproc_def
      name: REG_R15
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (15)
    - item_type: preproc_def
      name: REG_R16
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (16)
    - item_type: preproc_def
      name: REG_R17
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (17)
    - item_type: preproc_def
      name: REG_R18
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (18)
    - item_type: preproc_def
      name: REG_R19
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (19)
    - item_type: preproc_def
      name: REG_R20
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (20)
    - item_type: preproc_def
      name: REG_R21
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (21)
    - item_type: preproc_def
      name: REG_R22
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (22)
    - item_type: preproc_def
      name: REG_R23
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (23)
    - item_type: preproc_def
      name: REG_R24
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (24)
    - item_type: preproc_def
      name: REG_R25
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (25)
    - item_type: preproc_def
      name: REG_R26
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (26)
    - item_type: preproc_def
      name: REG_R27
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (27)
    - item_type: preproc_def
      name: REG_R28
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (28)
    - item_type: preproc_def
      name: REG_R29
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (29)
    - item_type: preproc_def
      name: REG_R30
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (30)
    - item_type: preproc_def
      name: REG_R31
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (31)
    - item_type: preproc_def
      name: REG_R32
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (32)
    - item_type: preproc_def
      name: REG_R33
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (33)
    - item_type: preproc_def
      name: REG_R34
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (34)
    - item_type: preproc_def
      name: REG_R35
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (35)
    - item_type: preproc_def
      name: REG_R36
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (36)
    - item_type: preproc_def
      name: REG_R37
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (37)
    - item_type: preproc_def
      name: REG_R38
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (38)
    - item_type: preproc_def
      name: REG_R39
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (39)
    - item_type: preproc_def
      name: REG_R40
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (40)
    - item_type: preproc_def
      name: REG_R41
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (41)
    - item_type: preproc_def
      name: REG_R42
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (42)
    - item_type: preproc_def
      name: REG_R43
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (43)
    - item_type: preproc_def
      name: REG_R44
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (44)
    - item_type: preproc_def
      name: REG_R45
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (45)
    - item_type: preproc_def
      name: REG_R46
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (46)
    - item_type: preproc_def
      name: REG_R47
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: (47)
    - item_type: preproc_def
      name: REG_SP
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: REG_R1
    - item_type: preproc_def
      name: REG_NIP
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: REG_R32
    - item_type: preproc_def
      name: REG_LNK
      pos:
        line_end: 60
        line_start: 59
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/defs.h
      type_or_value: REG_R36
    structs: []
    typedefs: []
    union: []
- function_names:
  - libucontext_makecontext
  source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/makecontext.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - __retfromsyscall
  source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc/retfromsyscall.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - TYPE
  - FETCH_LINKPTR
  source_file: /src/lwan/src/3rdparty/libucontext/arch/arm/defs.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: REG_SZ
      pos:
        line_end: 3
        line_start: 2
        source_file: /src/lwan/src/3rdparty/libucontext/arch/arm/defs.h
      type_or_value: (4)
    - item_type: preproc_def
      name: MCONTEXT_GREGS
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/lwan/src/3rdparty/libucontext/arch/arm/defs.h
      type_or_value: (32)
    - item_type: preproc_def
      name: VFP_MAGIC_OFFSET
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/lwan/src/3rdparty/libucontext/arch/arm/defs.h
      type_or_value: (232)
    - item_type: preproc_def
      name: VFP_D8_OFFSET
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/lwan/src/3rdparty/libucontext/arch/arm/defs.h
      type_or_value: (304)
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/3rdparty/libucontext/arch/arm/trampoline.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - libucontext_makecontext
  source_file: /src/lwan/src/3rdparty/libucontext/arch/arm/makecontext.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/3rdparty/libucontext/arch/arm/include/libucontext/bits.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: trap_no
        type: unsigned long
      - name: arm_r0
        type: unsigned long
      - name: arm_r4
        type: unsigned long
      - name: arm_r8
        type: unsigned long
      - name: arm_ip
        type: unsigned long
      - name: arm_cpsr
        type: unsigned long
      item_type: struct
      name: libucontext_mcontext_t
      pos:
        line_end: 12
        line_start: 5
        source_file: /src/lwan/src/3rdparty/libucontext/arch/arm/include/libucontext/bits.h
    - fields:
      - name: '*ss_sp'
        type: void
      - name: ss_flags
        type: int
      - name: ss_size
        type: size_t
      item_type: struct
      name: libucontext_stack_t
      pos:
        line_end: 18
        line_start: 14
        source_file: /src/lwan/src/3rdparty/libucontext/arch/arm/include/libucontext/bits.h
    - fields:
      - name: uc_flags
        type: unsigned long
      - name: '*uc_link'
        type: struct libucontext_ucontext
      - name: uc_stack
        type: libucontext_stack_t
      - name: uc_mcontext
        type: libucontext_mcontext_t
      - name: uc_sigmask[128 / sizeof(long)]
        type: unsigned long
      - name: uc_regspace[64]
        type: unsigned long long
      item_type: struct
      name: libucontext_ucontext
      pos:
        line_end: 27
        line_start: 20
        source_file: /src/lwan/src/3rdparty/libucontext/arch/arm/include/libucontext/bits.h
    typedefs:
    - item_type: typedef
      name: libucontext_greg_t
      pos:
        line_end: 3
        line_start: 3
        source_file: /src/lwan/src/3rdparty/libucontext/arch/arm/include/libucontext/bits.h
      type: int
    union: []
- function_names:
  - PUSH_FRAME
  - POP_FRAME
  source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: REG_SZ
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (8)
    - item_type: preproc_def
      name: REG_R0
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (0)
    - item_type: preproc_def
      name: REG_R1
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (1)
    - item_type: preproc_def
      name: REG_R2
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (2)
    - item_type: preproc_def
      name: REG_R3
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (3)
    - item_type: preproc_def
      name: REG_R4
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (4)
    - item_type: preproc_def
      name: REG_R5
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (5)
    - item_type: preproc_def
      name: REG_R6
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (6)
    - item_type: preproc_def
      name: REG_R7
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (7)
    - item_type: preproc_def
      name: REG_R8
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (8)
    - item_type: preproc_def
      name: REG_R9
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (9)
    - item_type: preproc_def
      name: REG_R10
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (10)
    - item_type: preproc_def
      name: REG_R11
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (11)
    - item_type: preproc_def
      name: REG_R12
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (12)
    - item_type: preproc_def
      name: REG_R13
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (13)
    - item_type: preproc_def
      name: REG_R14
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (14)
    - item_type: preproc_def
      name: REG_R15
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (15)
    - item_type: preproc_def
      name: REG_R16
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (16)
    - item_type: preproc_def
      name: REG_R17
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (17)
    - item_type: preproc_def
      name: REG_R18
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (18)
    - item_type: preproc_def
      name: REG_R19
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (19)
    - item_type: preproc_def
      name: REG_R20
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (20)
    - item_type: preproc_def
      name: REG_R21
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (21)
    - item_type: preproc_def
      name: REG_R22
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (22)
    - item_type: preproc_def
      name: REG_R23
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (23)
    - item_type: preproc_def
      name: REG_R24
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (24)
    - item_type: preproc_def
      name: REG_R25
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (25)
    - item_type: preproc_def
      name: REG_R26
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (26)
    - item_type: preproc_def
      name: REG_R27
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (27)
    - item_type: preproc_def
      name: REG_R28
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (28)
    - item_type: preproc_def
      name: REG_R29
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (29)
    - item_type: preproc_def
      name: REG_R30
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (30)
    - item_type: preproc_def
      name: REG_R31
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (31)
    - item_type: preproc_def
      name: REG_A0
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (4)
    - item_type: preproc_def
      name: REG_SP
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (3)
    - item_type: preproc_def
      name: REG_FP
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (22)
    - item_type: preproc_def
      name: MCONTEXT_GREGS
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (48)
    - item_type: preproc_def
      name: MCONTEXT_PC
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (40)
    - item_type: preproc_def
      name: UCONTEXT_UC_LINK
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (8)
    - item_type: preproc_def
      name: UCONTEXT_STACK_PTR
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (16)
    - item_type: preproc_def
      name: UCONTEXT_STACK_SIZE
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (32)
    - item_type: preproc_def
      name: ALSZ
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: '15'
    - item_type: preproc_def
      name: ALMASK
      pos:
        line_end: 65
        line_start: 64
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: ~15
    - item_type: preproc_def
      name: FRAMESZ
      pos:
        line_end: 66
        line_start: 65
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/defs.h
      type_or_value: (((LOCALSZ * REG_SZ) + ALSZ) & ALMASK)
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/freestanding/bits.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: __pc
        type: unsigned long long
      - name: __gregs[32]
        type: unsigned long long
      - name: __flags
        type: unsigned int
      - name: __fcsr
        type: unsigned int
      - name: __vcsr
        type: unsigned int
      - name: __fcc
        type: unsigned long long
      - name: __fpregs[32]
        type: union __loongarch_mc_fp_state
      - name: __reserved
        type: unsigned int
      item_type: struct
      name: mcontext_t
      pos:
        line_end: 27
        line_start: 16
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/freestanding/bits.h
    - fields:
      - name: '*ss_sp'
        type: void
      - name: ss_flags
        type: int
      - name: ss_size
        type: size_t
      item_type: struct
      name: libucontext_stack_t
      pos:
        line_end: 33
        line_start: 29
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/freestanding/bits.h
    - fields:
      - name: uc_flags
        type: unsigned long
      - name: '*uc_link'
        type: struct libucontext_ucontext
      - name: uc_stack
        type: libucontext_stack_t
      - name: uc_mcontext
        type: libucontext_mcontext_t
      item_type: struct
      name: libucontext_ucontext
      pos:
        line_end: 40
        line_start: 35
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/freestanding/bits.h
    typedefs:
    - item_type: typedef
      name: libucontext_greg_t
      pos:
        line_end: 3
        line_start: 3
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/freestanding/bits.h
      type: unsigned long long
    - item_type: typedef
      name: gregset_t
      pos:
        line_end: 6
        line_start: 6
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/freestanding/bits.h
      type: __loongarch_mc_gp_state
    - item_type: typedef
      name: fpregset_t
      pos:
        line_end: 9
        line_start: 9
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/freestanding/bits.h
      type: __loongarch_mc_fp_state
    union:
    - fields:
      - name: __val32[256 / 32]
        type: unsigned int
      - name: __val64[256 / 64]
        type: unsigned long long
      item_type: union
      name: __loongarch_mc_fp_state
      pos:
        line_end: 14
        line_start: 11
        source_file: /src/lwan/src/3rdparty/libucontext/arch/loongarch64/freestanding/bits.h
- function_names: []
  source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: REG_R0
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (0)
    - item_type: preproc_def
      name: REG_R1
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (1)
    - item_type: preproc_def
      name: REG_R2
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (2)
    - item_type: preproc_def
      name: REG_R3
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (3)
    - item_type: preproc_def
      name: REG_R4
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (4)
    - item_type: preproc_def
      name: REG_R5
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (5)
    - item_type: preproc_def
      name: REG_R6
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (6)
    - item_type: preproc_def
      name: REG_R7
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (7)
    - item_type: preproc_def
      name: REG_R8
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (8)
    - item_type: preproc_def
      name: REG_R9
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (9)
    - item_type: preproc_def
      name: REG_R10
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (10)
    - item_type: preproc_def
      name: REG_R11
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (11)
    - item_type: preproc_def
      name: REG_R12
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (12)
    - item_type: preproc_def
      name: REG_R13
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (13)
    - item_type: preproc_def
      name: REG_R14
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (14)
    - item_type: preproc_def
      name: REG_R15
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (15)
    - item_type: preproc_def
      name: REG_R16
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (16)
    - item_type: preproc_def
      name: REG_R17
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (17)
    - item_type: preproc_def
      name: REG_R18
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (18)
    - item_type: preproc_def
      name: REG_R19
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (19)
    - item_type: preproc_def
      name: REG_R20
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (20)
    - item_type: preproc_def
      name: REG_R21
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (21)
    - item_type: preproc_def
      name: REG_R22
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (22)
    - item_type: preproc_def
      name: REG_R23
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (23)
    - item_type: preproc_def
      name: REG_R24
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (24)
    - item_type: preproc_def
      name: REG_R25
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (25)
    - item_type: preproc_def
      name: REG_R26
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (26)
    - item_type: preproc_def
      name: REG_R27
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (27)
    - item_type: preproc_def
      name: REG_R28
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (28)
    - item_type: preproc_def
      name: REG_R29
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (29)
    - item_type: preproc_def
      name: REG_R30
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (30)
    - item_type: preproc_def
      name: REG_R31
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (31)
    - item_type: preproc_def
      name: REG_R32
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (32)
    - item_type: preproc_def
      name: REG_R33
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (33)
    - item_type: preproc_def
      name: REG_R34
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (34)
    - item_type: preproc_def
      name: REG_R35
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (35)
    - item_type: preproc_def
      name: REG_R36
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (36)
    - item_type: preproc_def
      name: REG_R37
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (37)
    - item_type: preproc_def
      name: REG_R38
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (38)
    - item_type: preproc_def
      name: REG_R39
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (39)
    - item_type: preproc_def
      name: REG_R40
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (40)
    - item_type: preproc_def
      name: REG_R41
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (41)
    - item_type: preproc_def
      name: REG_R42
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (42)
    - item_type: preproc_def
      name: REG_R43
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (43)
    - item_type: preproc_def
      name: REG_R44
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (44)
    - item_type: preproc_def
      name: REG_R45
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (45)
    - item_type: preproc_def
      name: REG_R46
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (46)
    - item_type: preproc_def
      name: REG_R47
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: (47)
    - item_type: preproc_def
      name: REG_SP
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: REG_R1
    - item_type: preproc_def
      name: REG_NIP
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: REG_R32
    - item_type: preproc_def
      name: REG_ENTRY
      pos:
        line_end: 60
        line_start: 59
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: REG_R12
    - item_type: preproc_def
      name: REG_LNK
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/defs.h
      type_or_value: REG_R36
    structs: []
    typedefs: []
    union: []
- function_names:
  - libucontext_makecontext
  source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/makecontext.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - __retfromsyscall
  source_file: /src/lwan/src/3rdparty/libucontext/arch/ppc64/retfromsyscall.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - FETCH_LINKPTR
  source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/defs.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: REG_SZ
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/defs.h
      type_or_value: (4)
    - item_type: preproc_def
      name: MCONTEXT_GREGS
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/defs.h
      type_or_value: (160)
    - item_type: preproc_def
      name: REG_PC
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/defs.h
      type_or_value: (0)
    - item_type: preproc_def
      name: REG_RA
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/defs.h
      type_or_value: (1)
    - item_type: preproc_def
      name: REG_SP
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/defs.h
      type_or_value: (2)
    - item_type: preproc_def
      name: REG_S0
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/defs.h
      type_or_value: (8)
    - item_type: preproc_def
      name: REG_S1
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/defs.h
      type_or_value: (9)
    - item_type: preproc_def
      name: REG_A0
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/defs.h
      type_or_value: (10)
    - item_type: preproc_def
      name: REG_A1
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/defs.h
      type_or_value: (11)
    - item_type: preproc_def
      name: REG_A2
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/defs.h
      type_or_value: (12)
    - item_type: preproc_def
      name: REG_A3
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/defs.h
      type_or_value: (13)
    - item_type: preproc_def
      name: REG_A4
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/defs.h
      type_or_value: (14)
    - item_type: preproc_def
      name: REG_A5
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/defs.h
      type_or_value: (15)
    - item_type: preproc_def
      name: REG_A6
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/defs.h
      type_or_value: (16)
    - item_type: preproc_def
      name: REG_A7
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/defs.h
      type_or_value: (17)
    - item_type: preproc_def
      name: REG_S2
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/defs.h
      type_or_value: (18)
    - item_type: preproc_def
      name: REG_S3
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/defs.h
      type_or_value: (19)
    - item_type: preproc_def
      name: REG_S4
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/defs.h
      type_or_value: (20)
    - item_type: preproc_def
      name: REG_S5
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/defs.h
      type_or_value: (21)
    - item_type: preproc_def
      name: REG_S6
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/defs.h
      type_or_value: (22)
    - item_type: preproc_def
      name: REG_S7
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/defs.h
      type_or_value: (23)
    - item_type: preproc_def
      name: REG_S8
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/defs.h
      type_or_value: (24)
    - item_type: preproc_def
      name: REG_S9
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/defs.h
      type_or_value: (25)
    - item_type: preproc_def
      name: REG_S10
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/defs.h
      type_or_value: (26)
    - item_type: preproc_def
      name: REG_S11
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/defs.h
      type_or_value: (27)
    - item_type: preproc_def
      name: PC_OFFSET
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/defs.h
      type_or_value: REG_OFFSET(REG_PC)
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/trampoline.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - libucontext_makecontext
  source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/makecontext.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/include/libucontext/bits.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: __f[32]
        type: unsigned int
      - name: __fcsr
        type: unsigned int
      item_type: struct
      name: libucontext__riscv_mc_f_ext_state
      pos:
        line_end: 9
        line_start: 6
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/include/libucontext/bits.h
    - fields:
      - name: __f[32]
        type: unsigned long long
      - name: __fcsr
        type: unsigned int
      item_type: struct
      name: libucontext__riscv_mc_d_ext_state
      pos:
        line_end: 14
        line_start: 11
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/include/libucontext/bits.h
    - fields:
      - name: __f[64]
        type: unsigned long long
      - name: __fcsr
        type: unsigned int
      - name: __reserved[3]
        type: unsigned int
      item_type: struct
      name: libucontext__riscv_mc_q_ext_state
      pos:
        line_end: 20
        line_start: 16
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/include/libucontext/bits.h
    - fields:
      - name: __gregs
        type: libucontext__riscv_mc_gp_state
      - name: __fpregs
        type: union libucontext__riscv_mc_fp_state
      item_type: struct
      name: libucontext_mcontext
      pos:
        line_end: 31
        line_start: 28
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/include/libucontext/bits.h
    - fields:
      - name: '*ss_sp'
        type: void
      - name: ss_flags
        type: int
      - name: ss_size
        type: size_t
      item_type: struct
      name: libucontext_stack_t
      pos:
        line_end: 37
        line_start: 33
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/include/libucontext/bits.h
    - fields:
      - name: uc_flags
        type: unsigned long
      - name: '*uc_link'
        type: struct libucontext_ucontext
      - name: uc_stack
        type: libucontext_stack_t
      - name: __pad[128]
        type: unsigned char
      - name: uc_mcontext
        type: libucontext_mcontext_t
      item_type: struct
      name: libucontext_ucontext
      pos:
        line_end: 45
        line_start: 39
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/include/libucontext/bits.h
    typedefs:
    - item_type: typedef
      name: libucontext_greg_t
      pos:
        line_end: 3
        line_start: 3
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/include/libucontext/bits.h
      type: unsigned long
    - item_type: typedef
      name: libucontext__riscv_mc_gp_state[32]
      pos:
        line_end: 4
        line_start: 4
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/include/libucontext/bits.h
      type: unsigned long
    union:
    - fields:
      - name: __f
        type: struct libucontext__riscv_mc_f_ext_state
      - name: __d
        type: struct libucontext__riscv_mc_d_ext_state
      - name: __q
        type: struct libucontext__riscv_mc_q_ext_state
      item_type: union
      name: libucontext__riscv_mc_fp_state
      pos:
        line_end: 26
        line_start: 22
        source_file: /src/lwan/src/3rdparty/libucontext/arch/riscv32/include/libucontext/bits.h
- function_names:
  - SETUP_FRAME
  - PUSH_FRAME
  - POP_FRAME
  - ENT
  source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: REG_SZ
      pos:
        line_end: 4
        line_start: 3
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (8)
    - item_type: preproc_def
      name: REG_R0
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (0)
    - item_type: preproc_def
      name: REG_R1
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (1)
    - item_type: preproc_def
      name: REG_R2
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (2)
    - item_type: preproc_def
      name: REG_R3
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (3)
    - item_type: preproc_def
      name: REG_R4
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (4)
    - item_type: preproc_def
      name: REG_R5
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (5)
    - item_type: preproc_def
      name: REG_R6
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (6)
    - item_type: preproc_def
      name: REG_R7
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (7)
    - item_type: preproc_def
      name: REG_R8
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (8)
    - item_type: preproc_def
      name: REG_R9
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (9)
    - item_type: preproc_def
      name: REG_R10
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (10)
    - item_type: preproc_def
      name: REG_R11
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (11)
    - item_type: preproc_def
      name: REG_R12
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (12)
    - item_type: preproc_def
      name: REG_R13
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (13)
    - item_type: preproc_def
      name: REG_R14
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (14)
    - item_type: preproc_def
      name: REG_R15
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (15)
    - item_type: preproc_def
      name: REG_R16
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (16)
    - item_type: preproc_def
      name: REG_R17
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (17)
    - item_type: preproc_def
      name: REG_R18
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (18)
    - item_type: preproc_def
      name: REG_R19
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (19)
    - item_type: preproc_def
      name: REG_R20
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (20)
    - item_type: preproc_def
      name: REG_R21
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (21)
    - item_type: preproc_def
      name: REG_R22
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (22)
    - item_type: preproc_def
      name: REG_R23
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (23)
    - item_type: preproc_def
      name: REG_R24
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (24)
    - item_type: preproc_def
      name: REG_R25
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (25)
    - item_type: preproc_def
      name: REG_R26
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (26)
    - item_type: preproc_def
      name: REG_R27
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (27)
    - item_type: preproc_def
      name: REG_R28
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (28)
    - item_type: preproc_def
      name: REG_R29
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (29)
    - item_type: preproc_def
      name: REG_R30
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (30)
    - item_type: preproc_def
      name: REG_R31
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (31)
    - item_type: preproc_def
      name: REG_A0
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (4)
    - item_type: preproc_def
      name: REG_SP
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (29)
    - item_type: preproc_def
      name: REG_FP
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (30)
    - item_type: preproc_def
      name: REG_LNK
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (16)
    - item_type: preproc_def
      name: REG_ENTRY
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (25)
    - item_type: preproc_def
      name: MCONTEXT_GREGS
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (40)
    - item_type: preproc_def
      name: MCONTEXT_PC
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (MCONTEXT_GREGS + 576)
    - item_type: preproc_def
      name: UCONTEXT_UC_LINK
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (8)
    - item_type: preproc_def
      name: UCONTEXT_STACK_PTR
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (16)
    - item_type: preproc_def
      name: UCONTEXT_STACK_SIZE
      pos:
        line_end: 67
        line_start: 66
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: (24)
    - item_type: preproc_def
      name: ALSZ
      pos:
        line_end: 70
        line_start: 69
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: '15'
    - item_type: preproc_def
      name: ALMASK
      pos:
        line_end: 71
        line_start: 70
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: ~15
    - item_type: preproc_def
      name: FRAMESZ
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: "(((LOCALSZ * REG_SZ) + ALSZ) & ALMASK)\t\t// 16"
    - item_type: preproc_def
      name: GPOFF
      pos:
        line_end: 73
        line_start: 72
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/defs.h
      type_or_value: "(FRAMESZ - (LOCALSZ * REG_SZ))\t\t\t// [16 - 16]"
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/include/libucontext/bits.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: fp_r
        type: "union {\n\t\tdouble fp_dregs[32];\n\t\tstruct {\n\t\t\tfloat _fp_fregs;\n\t\t\tunsigned
          _fp_pad;\n\t\t} fp_fregs[32];\n\t}"
      item_type: struct
      name: libucontext_fpregset_t
      pos:
        line_end: 13
        line_start: 5
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/include/libucontext/bits.h
    - fields:
      - name: gregs
        type: libucontext_gregset_t
      - name: fpregs
        type: libucontext_fpregset_t
      - name: mdhi
        type: libucontext_greg_t
      - name: hi1
        type: libucontext_greg_t
      - name: hi2
        type: libucontext_greg_t
      - name: hi3
        type: libucontext_greg_t
      - name: mdlo
        type: libucontext_greg_t
      - name: lo1
        type: libucontext_greg_t
      - name: lo2
        type: libucontext_greg_t
      - name: lo3
        type: libucontext_greg_t
      - name: pc
        type: libucontext_greg_t
      - name: fpc_csr
        type: unsigned int
      - name: used_math
        type: unsigned int
      - name: dsp
        type: unsigned int
      - name: reserved
        type: unsigned int
      item_type: struct
      name: libucontext_mcontext_t
      pos:
        line_end: 31
        line_start: 15
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/include/libucontext/bits.h
    - fields:
      - name: '*ss_sp'
        type: void
      - name: ss_size
        type: size_t
      - name: ss_flags
        type: int
      item_type: struct
      name: libucontext_stack_t
      pos:
        line_end: 37
        line_start: 33
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/include/libucontext/bits.h
    - fields:
      - name: uc_flags
        type: unsigned long
      - name: '*uc_link'
        type: struct libucontext_ucontext
      - name: uc_stack
        type: libucontext_stack_t
      - name: uc_mcontext
        type: libucontext_mcontext_t
      item_type: struct
      name: libucontext_ucontext
      pos:
        line_end: 44
        line_start: 39
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/include/libucontext/bits.h
    typedefs:
    - item_type: typedef
      name: libucontext_greg_t
      pos:
        line_end: 3
        line_start: 3
        source_file: /src/lwan/src/3rdparty/libucontext/arch/mips64/include/libucontext/bits.h
      type: unsigned long long
    union: []
- function_names:
  - FETCH_LINKPTR
  source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/defs.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: REG_R8
      pos:
        line_end: 5
        line_start: 4
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/defs.h
      type_or_value: (0)
    - item_type: preproc_def
      name: REG_R9
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/defs.h
      type_or_value: (1)
    - item_type: preproc_def
      name: REG_R10
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/defs.h
      type_or_value: (2)
    - item_type: preproc_def
      name: REG_R11
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/defs.h
      type_or_value: (3)
    - item_type: preproc_def
      name: REG_R12
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/defs.h
      type_or_value: (4)
    - item_type: preproc_def
      name: REG_R13
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/defs.h
      type_or_value: (5)
    - item_type: preproc_def
      name: REG_R14
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/defs.h
      type_or_value: (6)
    - item_type: preproc_def
      name: REG_R15
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/defs.h
      type_or_value: (7)
    - item_type: preproc_def
      name: REG_RDI
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/defs.h
      type_or_value: (8)
    - item_type: preproc_def
      name: REG_RSI
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/defs.h
      type_or_value: (9)
    - item_type: preproc_def
      name: REG_RBP
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/defs.h
      type_or_value: (10)
    - item_type: preproc_def
      name: REG_RBX
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/defs.h
      type_or_value: (11)
    - item_type: preproc_def
      name: REG_RDX
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/defs.h
      type_or_value: (12)
    - item_type: preproc_def
      name: REG_RAX
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/defs.h
      type_or_value: (13)
    - item_type: preproc_def
      name: REG_RCX
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/defs.h
      type_or_value: (14)
    - item_type: preproc_def
      name: REG_RSP
      pos:
        line_end: 65
        line_start: 64
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/defs.h
      type_or_value: (15)
    - item_type: preproc_def
      name: REG_RIP
      pos:
        line_end: 69
        line_start: 68
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/defs.h
      type_or_value: (16)
    - item_type: preproc_def
      name: REG_EFL
      pos:
        line_end: 73
        line_start: 72
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/defs.h
      type_or_value: (17)
    - item_type: preproc_def
      name: REG_CSGSFS
      pos:
        line_end: 77
        line_start: 76
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/defs.h
      type_or_value: (18)
    - item_type: preproc_def
      name: REG_ERR
      pos:
        line_end: 81
        line_start: 80
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/defs.h
      type_or_value: (19)
    - item_type: preproc_def
      name: REG_TRAPNO
      pos:
        line_end: 85
        line_start: 84
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/defs.h
      type_or_value: (20)
    - item_type: preproc_def
      name: REG_OLDMASK
      pos:
        line_end: 89
        line_start: 88
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/defs.h
      type_or_value: (21)
    - item_type: preproc_def
      name: REG_CR2
      pos:
        line_end: 93
        line_start: 92
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/defs.h
      type_or_value: (22)
    - item_type: preproc_def
      name: MCONTEXT_GREGS
      pos:
        line_end: 96
        line_start: 95
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/defs.h
      type_or_value: (40)
    - item_type: preproc_def
      name: REG_SZ
      pos:
        line_end: 98
        line_start: 97
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/defs.h
      type_or_value: (8)
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/trampoline.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - libucontext_makecontext
  source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/makecontext.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/include/libucontext/bits.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: REG_R8
      pos:
        line_end: 6
        line_start: 5
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/include/libucontext/bits.h
      type_or_value: (0)
    - item_type: preproc_def
      name: REG_R9
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/include/libucontext/bits.h
      type_or_value: (1)
    - item_type: preproc_def
      name: REG_R10
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/include/libucontext/bits.h
      type_or_value: (2)
    - item_type: preproc_def
      name: REG_R11
      pos:
        line_end: 9
        line_start: 8
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/include/libucontext/bits.h
      type_or_value: (3)
    - item_type: preproc_def
      name: REG_R12
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/include/libucontext/bits.h
      type_or_value: (4)
    - item_type: preproc_def
      name: REG_R13
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/include/libucontext/bits.h
      type_or_value: (5)
    - item_type: preproc_def
      name: REG_R14
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/include/libucontext/bits.h
      type_or_value: (6)
    - item_type: preproc_def
      name: REG_R15
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/include/libucontext/bits.h
      type_or_value: (7)
    - item_type: preproc_def
      name: REG_RDI
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/include/libucontext/bits.h
      type_or_value: (8)
    - item_type: preproc_def
      name: REG_RSI
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/include/libucontext/bits.h
      type_or_value: (9)
    - item_type: preproc_def
      name: REG_RBP
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/include/libucontext/bits.h
      type_or_value: (10)
    - item_type: preproc_def
      name: REG_RBX
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/include/libucontext/bits.h
      type_or_value: (11)
    - item_type: preproc_def
      name: REG_RDX
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/include/libucontext/bits.h
      type_or_value: (12)
    - item_type: preproc_def
      name: REG_RAX
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/include/libucontext/bits.h
      type_or_value: (13)
    - item_type: preproc_def
      name: REG_RCX
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/include/libucontext/bits.h
      type_or_value: (14)
    - item_type: preproc_def
      name: REG_RSP
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/include/libucontext/bits.h
      type_or_value: (15)
    - item_type: preproc_def
      name: REG_RIP
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/include/libucontext/bits.h
      type_or_value: (16)
    - item_type: preproc_def
      name: REG_EFL
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/include/libucontext/bits.h
      type_or_value: (17)
    - item_type: preproc_def
      name: REG_CSGSFS
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/include/libucontext/bits.h
      type_or_value: (18)
    - item_type: preproc_def
      name: REG_ERR
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/include/libucontext/bits.h
      type_or_value: (19)
    - item_type: preproc_def
      name: REG_TRAPNO
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/include/libucontext/bits.h
      type_or_value: (20)
    - item_type: preproc_def
      name: REG_OLDMASK
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/include/libucontext/bits.h
      type_or_value: (21)
    - item_type: preproc_def
      name: REG_CR2
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/include/libucontext/bits.h
      type_or_value: (22)
    structs:
    - fields:
      - name: cwd
        type: unsigned short
      - name: rip
        type: unsigned long long
      - name: mxcsr
        type: unsigned
      - name: _st[8]
        type: "struct {\n\t\tunsigned short significand[4], exponent, padding[3];\n\t}"
      - name: _xmm[16]
        type: "struct {\n\t\tunsigned element[4];\n\t}"
      - name: padding[24]
        type: unsigned
      item_type: struct
      name: libucontext_fpstate
      pos:
        line_end: 42
        line_start: 31
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/include/libucontext/bits.h
    - fields:
      - name: gregs
        type: libucontext_gregset_t
      - name: fpregs
        type: libucontext_fpregset_t
      - name: __reserved1[8]
        type: unsigned long long
      item_type: struct
      name: libucontext_mcontext_t
      pos:
        line_end: 48
        line_start: 44
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/include/libucontext/bits.h
    - fields:
      - name: '*ss_sp'
        type: void
      - name: ss_flags
        type: int
      - name: ss_size
        type: size_t
      item_type: struct
      name: libucontext_stack_t
      pos:
        line_end: 54
        line_start: 50
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/include/libucontext/bits.h
    - fields:
      - name: uc_flags
        type: unsigned long
      - name: '*uc_link'
        type: struct libucontext_ucontext
      - name: uc_stack
        type: libucontext_stack_t
      - name: uc_mcontext
        type: libucontext_mcontext_t
      item_type: struct
      name: libucontext_ucontext
      pos:
        line_end: 61
        line_start: 56
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/include/libucontext/bits.h
    typedefs:
    - item_type: typedef
      name: libucontext_greg_t
      pos:
        line_end: 29
        line_start: 29
        source_file: /src/lwan/src/3rdparty/libucontext/arch/x86_64/include/libucontext/bits.h
      type: long long
    union: []
- function_names: []
  source_file: /src/lwan/src/3rdparty/libucontext/include/libucontext/libucontext.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - yieldto
  - yield
  - worker
  - create
  - main
  source_file: /src/lwan/src/3rdparty/libucontext/examples/cooperative_threading.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
